Mercurial bisect: Porovnání verzí

Z WoWResource Wiki
Přejít na: navigace, hledání
(Příklad)
Řádek 89: Řádek 89:
 
== Shrnutí na závěr ==
 
== Shrnutí na závěr ==
  
'''hg bisect -g''' označí dobrou (good) revizi, '''hg bisect -b''' označí špatnou (bad) revizi a '''hg bisect -s''' označí revizi která se nebude kontrolovat v příadě, pokud si jste jisti, že zrovna tuhle jednu nechcete testovat, nebo nemůžete nijak zjistit, zda revize je dobrá nebo ne.
+
'''hg bisect -g''' označí dobrou (good) revizi, '''hg bisect -b''' označí špatnou (bad) revizi a '''hg bisect -s''' označí revizi která se nebude kontrolovat (skip) v příadě, pokud si jste jisti, že zrovna tuhle jednu nechcete testovat, nebo nemůžete nijak zjistit, zda revize je dobrá nebo ne.
  
 
Myslím že je to všechno, ale pamatujte: pouze vstup uživatele a testování nám pomáhá najít chyby. Tato metoda je nejlepší pro případy, kdy zjistíte že chyba byla způsobená již před několika revizemi dříve.
 
Myslím že je to všechno, ale pamatujte: pouze vstup uživatele a testování nám pomáhá najít chyby. Tato metoda je nejlepší pro případy, kdy zjistíte že chyba byla způsobená již před několika revizemi dříve.
  
 +
 +
== Externí odkazy ==
 +
 +
[http://www.trinitycore.info/index.php?title=Howto_disect TrinityCore wiki - How to use Mercurial bisect (anglický originál)]
 +
 +
 +
----
  
 
-- original by Raczman from TrinityCore forum.
 
-- original by Raczman from TrinityCore forum.

Verze z 13. 9. 2010, 01:32

K čemu se používá Mercurial bisect

Toto téma je určeno těm z Vás, kdo chcete provozovat server hlavně pro development (vývoj), a těm, kteří se nebojí strávit nějaký ten čas nad hledáním chyby. Mercurial VCS nám totiž poskytuje vynikající nástroj pro lokalizaci regrese (regrese - návrat zpět) v kódu, který se nazývá bisect. Funguje tak, že prohledává a testuje starší revize v nastaveném rozsahu. Jediné co musíte udělat, je říct Mercurialu jestli je revize dobrá (neobsahuje chybu kterou hledáte) nebo jestli je špatná (obsahuje chybu).

Příklad

Podíváme se na příklad, který je sice prováděn na Linuxu, ale funguje stejně i na MS Windows.

[~/trinitycore] hg bisect -r

V první řadě jsem restartoval všechny předchozí bisect informace - jen pro jistotu.

[~/trinitycore] hg tip
changeset:   1465:6a307f5252b5
branch:      trunk
tag:         tip
user:        Anubisss
date:        Sun May 03 13:47:52 2009 +0200
summary:     *Add a missing script.

[~/trinitycore] hg bisect -b 1465

První kouzelný příkaz. :) Příkaz hg bisect -b <rev> nám označí špatnou revizi - tzn. revize o které víme, že již obsahuje chybu (bug). Nemusíte udávat přesné číslo revize, já obvykle používám nejnovější revizi jako referenční.

[~/trinitycore] hg bisect -g 1234
Testing changeset 1349:dfaf9e90ef1c (231 changesets remaining, ~7 tests)
213 files updated, 0 files merged, 14 files removed, 0 files unresolved

Paramatr -g označí revizi u které si vzpomínáte, že v ní ještě chyba nebyla. Nemusí to být přesné, stačí když jste si jisti, že v té revizi chyba nebyla. Mercurial nám hned oznámí, kolikrát se bude náš test opakovat a kolik testů bude muset provést k nalezení problematické revize. V tomto případě to je 230 revizí a 7 testů (revizi 1234 netestuje). Všechno co teď budeme dělat je zkoušení, a pomocí hg bisect -g (g jako GOOD) nebo hg bisect -b (b jako BAD) značkovat dobré revize a revize obsahující chybu. Příklad:

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -b
Testing changeset 1291:fb334cd0178e (115 changesets remaining, ~6 tests)
112 files updated, 0 files merged, 10 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -b
Testing changeset 1262:4c034879ce77 (57 changesets remaining, ~5 tests)
305 files updated, 0 files merged, 1 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -g
Testing changeset 1276:a8cce604021c (29 changesets remaining, ~4 tests)
288 files updated, 0 files merged, 1 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -b
Testing changeset 1269:52bfc1120c83 (14 changesets remaining, ~3 tests)
279 files updated, 0 files merged, 0 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -g
Testing changeset 1272:6fc334b7ae87 (7 changesets remaining, ~2 tests)
275 files updated, 0 files merged, 0 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -g
Testing changeset 1274:3ae63686c2ee (4 changesets remaining, ~2 tests)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -g
Testing changeset 1275:06ca2a2af74c (2 changesets remaining, ~1 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

raczman nie, 3 maj 2009, 14:16:00 CEST
[~/trinitycore] hg bisect -g
The first bad revision is:
changeset:   1276:a8cce604021c
branch:      trunk
user:        megamage
date:        Thu Apr 02 20:27:10 2009 -0600
summary:     *Fix some visibility bug.

Vezměte prosím na vědomí, že ještě budete muset kompilovat a testovat chybu (bug) ;) Mercurial nám jenom poskytuje rychlý způsob testování revizí složitějších projektů, kde by ruční vyhledávání bylo takřka nemožné. Na konci nám Mercurial vyplivne changeset revize s chybou, což -jak můžete hádat- nám nesmírně pomůže opravit chyby ;) Po ukončení práce můžeme bezpečně restartovat bisect:

[~/trinitycore] hg bisect -r

Shrnutí na závěr

hg bisect -g označí dobrou (good) revizi, hg bisect -b označí špatnou (bad) revizi a hg bisect -s označí revizi která se nebude kontrolovat (skip) v příadě, pokud si jste jisti, že zrovna tuhle jednu nechcete testovat, nebo nemůžete nijak zjistit, zda revize je dobrá nebo ne.

Myslím že je to všechno, ale pamatujte: pouze vstup uživatele a testování nám pomáhá najít chyby. Tato metoda je nejlepší pro případy, kdy zjistíte že chyba byla způsobená již před několika revizemi dříve.


Externí odkazy

TrinityCore wiki - How to use Mercurial bisect (anglický originál)



-- original by Raczman from TrinityCore forum.

-- pro WoWResource wiki přeložil Wolf Officious (aka Wlk Wlezley)

-- Wolf_Officious 01:41, 13. 9. 2010 (CEST)