Remarque : les termes good
et bad
ne sont pas les seuls que vous pouvez utiliser pour marquer un commit avec ou sans une certaine propriété.
Git 2.7 (Q4 2015) a introduit de nouvelles fonctionnalités. git bisect
options.
git bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>]
[--no-checkout] [<bad> [<good>...]] [--] [<paths>...]
En ajoutant de la documentation :
Parfois, vous ne recherchez pas l'engagement qui a introduit une rupture, mais plutôt une qui a provoqué un changement entre un autre "ancien" état et un "nouvel" état. .
Par exemple, vous pouvez rechercher le commit qui a introduit une correction particulière.
Ou bien vous recherchez le premier commit dans lequel les noms de fichiers du code source ont finalement tous été convertis au standard de nommage de votre entreprise. Ou n'importe quoi d'autre.
Dans ce cas, il peut être très déroutant d'utiliser les termes "bon" et "mauvais" pour désigner "l'état avant le changement" et "l'état après le changement".
Ainsi, à la place, vous pouvez utiliser les termes " old
" et " new
", respectivement, à la place de " good
" et " bad
".
(Mais notez que vous ne pouvez pas mélanger " good
" et " bad
" avec " old
" et " new
" en une seule session).
Dans cet usage plus général, vous fournissez git bisect
avec un " new
"Le commit a une certaine propriété et un " old
"qui n'a pas cette propriété.
Chaque fois git bisect
vérifie un commit, vous testez si ce commit a la propriété :
Si c'est le cas, marquez le commit comme " new
"Sinon, marquez-le comme " old
".
Quand la bissection est faite, git bisect
rapportera quel commit a introduit la propriété.
Voir commit 06e6a74 , commettre 21b55e3 , commettre fe67687 (29 juin 2015) par Matthieu Moy ( moy
) .
Voir commettre 21e5cfd (29 juin 2015) par Antoine Delaite ( CanardChouChinois
) .
(fusionné par Junio C Hamano -- gitster
-- sur commettre 22dd6eb , 05 Oct 2015)
1 votes
@01 : Comme le dit le livre git : effectuer une recherche par force brute dans l'historique du projet .
14 votes
Pas si ///brute :-), il utilise la recherche binaire.
1 votes
"git blame" est similaire à "svn blame". "git bisect" est une chose complètement différente.
1 votes
Pour ce que ça vaut, il y a un bon description de bisect dans Pro Git aussi. La réponse de Sylvain est un autre bon point de vue. Si, après avoir examiné tout cela, vous ne comprenez toujours pas, je vous suggère de poser une question plus spécifique. Les questions générales entraînent des réponses générales.
0 votes
ProGit a une meilleure explication, mais je pense que Sylvain l'explique beaucoup mieux. D'après ce que j'ai compris, il n'y a pas que la recherche.
5 votes
Lien vers le livre mis à jour : git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search (en anglais)
0 votes
Démonstration très utile : webchick.net/node/99