Bisecting -mm Trees

Dokument został przetłumaczony za zgodą Andrew Mortona. Jeżeli znajdziesz błąd w tłumaczeniu, to możesz go poprawić. Jeżeli masz własne spostrzeżenia na temat omawianego tutaj zagadnienia, to po prostu zrób przypis na dole strony.

Wersja oryginalna znajduje się tutaj: bisecting-mm-trees.txt

Jak wykonać podziałowe przeszukiwanie w drzewach -mm.
Andrew Morton <gro.ldso|mpka#gro.ldso|mpka>

(Jako przykład jest używane jądro 2.6.15-mm2. Proszę wykonać odpowiednie zmiany)

- Skompiluj i zainstaluj https://savannah.nongnu.org/projects/quilt/

- Utwórz nowe drzewo jądra:
cp -a /usr/src/linux-2.6.15 /usr/src/work

- cd work

- wget ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.15/2.6.15-mm2/2.6.15-mm2-broken-out.tar.bz2

- tar xfj 2.6.15-mm2-broken-out.tar.bz2

- mv broken-out patches

- mv patches/series .

- cp <ulubiony .config> .config

- cp series ~/hunt

Teraz jesteś przygotowany. Możesz:

quilt push 100
quilt pop 100
quilt push foobar.patch

i tak dalej, aby dodawać i usuwać łatki.

Otwórz ~/hunt w ulubionym edytorze. To będzie twój przewodnik w procesie przepoławiania.

Aby zacząć, znajdź łatkę, która jest w połowie pliku i wykonaj 'quilt push nazwa_łatki.patch'.

make oldconfig ; make ; test-kernela.

Jeżeli to się nie powiedzie, dodaj tekst “BAD” do ~/hunt za “nazwa_łatki.patch”, a następnie ustaw kursor w wierszu będącym w 1/4 długości pliku i powtórz cały proces. Jeżeli proces się powiódł i jądro działa dobrze, wtedy oznacz nazwa_łatki.patch jako “OK” i ustaw kursor w wierszu będącym w 3/4 długości pliku itd. Całkiem proste.

- Jedna przestroga: nie ustawiaj na ślepo punktów podziału. Często robię takie rzeczy w pliku series:

frob-the-nozzle.patch
frob-the-nozzle-tidy.patch
frob-the-nozzle-fix.patch
frob-the-nozzle-fix-2.patch

Logicznie jest to jedna łatka: połączę je w jedną całość, zanim wyślę frob-the-nozzle.patch do Linusa. Powinieneś więc unikać umieszczania punktów podziału w środku takiej grupy łatek. Albo zastosuj wszystkie, albo nie stosuj żadnej z nich.

- Jeżeli patches/linus.patch jest duży, twoim pierwszym krokiem powinno być przetestowanie 2.6.15+linus.patch i sprawdzenie czy błąd nie przeniknął do głównego drzewa.

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-Share Alike 2.5 License.