Git dusekcado
Versitenaj sistemoj utilas por vidi la evoluon de kodbazo aŭ la ŝanĝojn. Kulpigi (an: git blame
) utilas por vidi kiu/kiam ŝanĝis specifan linion, sed foje io ne funkcias kaj vi ne scias tion kio rompis ĝin.
Metodo por malkovri kion okazis estas: hazarde trovi pasintan enmeton ŝanĝi al ĝi kaj kontroli mane. Alia ebleco estas uzi dusekadon (an: bisecting). La ĝenerala ideo estas trovi iun antaŭan enmeton kie la sistemo funkcias ĝuste, marku la nunan enmeton kiel malbona kaj la antaŭa kiel bona kaj la dusekcado disigos la enmetan historion per duoniga serĉo. Ekzemple se la historio estas jena:
commit b393b73d9535a4721ec08bd69a1ae234404d698c
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 15:36:01 2015 -0500
Aldonis tradukon
commit 89a62c9b4aca9a967e6656ea03968d29203f9b73
Merge: 1c422eb ca4d834
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 14:30:08 2015 -0500
Merge pull request #332 from firmao/nova_funkcio
La novia funkcio plibonigas la sistemon por la uzantoj
commit ca4d834af900b7f6cc99b3c38f41d303082562c7
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Thu Jul 23 15:59:26 2015 -0500
Kaŝis formon
commit 1c422eb41a90a0b829d4fda212cbf8c6407f472c
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 14:02:01 2015 -0500
Aldonis novan sekcion
commit 04fdfbddc531234fcd3ee8f16865f61e635a3145
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 14:00:07 2015 -0500
Aldonis uzulan kodon
commit 5c3c2538fc7e6f8cedcddf25a186d54847e4054f
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 13:59:57 2015 -0500
Aldonis identkontrolon
commit b607075514224922a086d35f0703d7ee9a2d5942
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 13:58:12 2015 -0500
Forigis ŝablonon
commit tod9547c372113edf5f028de99fb7238e70
Author: Kodemulo <kodemulo@zahemhof.um>
Date: Tue Jul 28 13:50:16 2015 -0500
Komencis la estran sistemon
Ni diru ke ni konas ke iun malfunkcias je b393b73d9535a4721ec08bd69a1ae234404d698c
kaj kiam ni iras la tod9547c372113edf5f028de99fb7238e70
ĝi funkcias. Ni faru la jena
> git checkout b393b73d9535a4721ec08bd69a1ae234404d698c
> git bisect bad
You need to start by "git bisect start"
Do you want me to do it for you [Y/n]? y
> git checkout tod9547c372113edf5f028de99fb7238e70
HEAD is now at tod9547... Komencis la estran sistemon
> git bisect good
Bisecting: 6 revisions left to test after this (roughly 3 steps)
[1c422eb41a90a0b829d4fda212cbf8c6407f472c] Aldonis novan sekcion
Nun vi estas ĉe 1c422eb41a90a0b829d4fda212cbf8c6407f472c
kiu estas en la mezo de la historio. Nun vi povas kontroli ĉu la funkcio bonas aŭ ne kaj entajpu git bisect good
aŭ git bisect bad
depende de la respondo.
Post kiam vi havas la enmetan identigilon vi povas montri ĝin (git show *identigilon*
) por vidi tion kio ŝanĝiĝis. Mi esperas ke tio povas ŝpari tempon kiam vi bezonas trovi nekonatan ŝanĝon.
Postskribo: Mi ankaŭ verkos artikolon pri kiel aŭtomatigi la proceson per skripto.