A.3. Jak wykonać test regresji za pomocą Subversion

Czasami zdarza się problem typu "wcześniej działało, a teraz przestało...". Tutaj znajduje się, opisana krok po kroku, procedura, której celem jest próba znalezienia źródła problemu. Nie jest ona przeznaczona dla przeciętnego użytkownika.

Najpierw należy pobrać źródła MPlayera z SVN. Więcej szczegółów na ten temat znajduje się w sekcji o Subversion strony pobierania.

W rezultacie w katalogu mplayer/ znajdzie się obraz drzewa Subversion, po stronie klienta. Teraz zaktualizuj ten obraz do daty, która Cię interesuje:

cd mplayer/
svn update -r {"2004-08-23"}

Format daty to RRRR-MM-DD GG:MM:SS. Używając takiego formatu daty masz pewność, że będziesz w stanie wyciągać łatki zgodnie z datą, gdy zostały dodane, dokładnie tak jak w przypadku archiwum listy MPlayer-cvslog.

Następnie postępuj tak jak w przypadku normalnej aktualizacji:

./configure
make

Jeżeli czytasz ten dokument, a nie jesteś programistą, najszybszym sposobem na dotarcie do miejsca w którym pojawi się problem jest użycie binarnego wyszukiwania — tzn. szukania daty pojawienia się problemu poprzez dzielenie interwału czasowego na pół przy każdym kolejnym wyszukiwaniu. Przykładowo, jeżeli problem wystąpił w 2003, spróbuj najpierw szukać problemu w wydaniu z połowy roku. Jeżeli będzie obecny, cofnij się do pierwszego kwietnia; jeżeli nie, przejdź do pierwszego października itd.

Jeżeli masz dużo wolnego miejsca na twardym dysku (pełna kompilacja zajmuje aktualnie 100 MB albo około 300-350 MB jeżeli uaktywnione jest debuggowanie), skopiuj najstarszą działającą wersję zanim dokonasz aktualizacji; oszczędzi to sporo czasu, jeżeli zajdzie potrzeba powrotu do starszej wersji. (Zazwyczaj konieczne jest uruchomienie 'make distclean' przed rekompilacją wcześniejszej wersji, więc jeżeli nie zrobisz kopii zapasowej oryginalnego drzewa, będziesz musiał wszystko rekompilować, jeśli będziesz chciał wrócić do aktualnej wersji.)

Kiedy znajdziesz dzień w którym pojawił się problem, kontynuuj szukanie używając archiwum mplayer-cvslog (uporządkowane wg daty) i bardziej precyzyjnych aktualizacji svn obejmujących godziny, minuty i sekundy:

svn update -r {"2004-08-23 15:17:25"}

To pomoże ci łatwo znaleźć łatkę, która jest winowajcą.

Jeżeli znajdziesz łatkę, która jest źródłem problemu, to znaczy, że już prawie osiągnąłeś sukces; wyślij informację o niej na MPlayer Bugzilla lub zapisz się na listę MPlayer-users i tam wyślij raport. Istnieje szansa, że autor łatki zasugeruje w jaki sposób rozwiązać problem. Możesz też wpatrywać się w łatkę tak długo, aż nie będzie mogła wytrzymać i wyjawi ci lokalizację błędu:-).