Recherche…


Syntaxe

  • git bisect <subcommand> <options>

  • git bisect start <bad> [<good>...]

  • git bisect reset

  • git bisect good

  • git bisect bad

Recherche binaire (git bisect)

git bisect vous permet de trouver quel commit a introduit un bogue en utilisant une recherche binaire.

Commencez par diviser une session en fournissant deux références de validation: une bonne validation avant le bogue et une mauvaise validation après le bogue. Généralement, le mauvais engagement est HEAD .

# start the git bisect session
$ git bisect start

# give a commit where the bug doesn't exist
$ git bisect good 49c747d

# give a commit where the bug exist
$ git bisect bad HEAD

git lance une recherche binaire: il divise la révision en deux et place le référentiel dans la révision intermédiaire. Inspectez le code pour déterminer si la révision est bonne ou mauvaise:

# tell git the revision is good,
# which means it doesn't contain the bug
$ git bisect good

# if the revision contains the bug,
# then tell git it's bad
$ git bisect bad

git continuera à exécuter la recherche binaire sur chaque sous-ensemble de mauvaises révisions en fonction de vos instructions. git présentera une seule révision qui, à moins que vos indicateurs ne soient pas corrects, représentera exactement la révision où le bogue a été introduit.

Ensuite, souvenez-vous de lancer git bisect reset pour terminer la session bisect et retourner à HEAD.

$ git bisect reset

Si vous avez un script qui peut vérifier le bogue, vous pouvez automatiser le processus avec:

$ git bisect run [script] [arguments]

[script] est le chemin d'accès à votre script et [arguments] est tout argument devant être transmis à votre script.

En exécutant cette commande, vous exécuterez automatiquement la recherche binaire, en exécutant git bisect good ou git bisect bad à chaque étape en fonction du code de sortie de votre script. Avec 0 indique la sortie good , en sortant avec 1-124, 126 ou 127 indique mauvais. 125 indique que le script ne peut pas tester cette révision (ce qui déclenchera un git bisect skip ).

Trouver automatiquement un commit défectueux

Imaginez que vous êtes sur le master branche et quelque chose ne fonctionne pas comme prévu (une régression a été introduite), mais vous ne savez pas où. Tout ce que vous savez, c'est que cela fonctionnait dans la dernière version (qui était par exemple balisé ou que vous connaissiez le hachage de validation, prenons ici le old-rel ).

Git a de l'aide pour vous, en trouvant le commit défectueux qui a introduit la régression avec un très petit nombre d'étapes (recherche binaire).

Commencez par diviser:

git bisect start master old-rel

Cela indiquera à git que master est une révision cassée (ou la première version cassée) et old-rel est la dernière version connue.

Git va maintenant vérifier une tête détachée au milieu des deux commits. Maintenant, vous pouvez faire vos tests. Selon que cela fonctionne ou non

git bisect good

ou

git bisect bad

. Si cette validation ne peut pas être testée, vous pouvez facilement git reset et tester celle-ci, git willl s'en chargera.

Après quelques étapes, git affichera le hachage de validation défectueux.

Afin d'abandonner le processus bisect juste émettre

git bisect reset

et git restaurera l'état précédent.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow