GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing git-scm.com — Git - git-bisect Documentation
Français ▾
Topics ▾
Setup and ConfigGetting and Creating ProjectsBasic SnapshottingBranching and MergingSharing and Updating ProjectsInspection and ComparisonPatchingDebuggingExternal SystemsServer AdminGuides
AdministrationPlumbing Commands
SYNOPSISgit bisect start [--term-(bad|new)=<terme-nouveau> --term-(good|old)=<terme-ancien>] [--no-checkout] [--first-parent] [<mauvais> [<bon>…]] [--] [<spéc-de-chemin>…] git bisect (bad|new|<terme-nouveau>) [<rev>] git bisect (good|old|<terme-ancien>) [<rev>…] git bisect terms [--term-good | --term-bad] git bisect skip [(<rev>|<plage>)…] git bisect next git bisect reset [<commit>] git bisect (visualize|view) git bisect replay <fichier-journal> git bisect log git bisect run <cmd> [<arg>…] git bisect help DESCRIPTIONCette commande utilise un algorithme de recherche binaire pour trouver quel commit dans l’historique de votre projet a introduit un bogue. Vous l’utilisez en lui indiquant d’abord un "mauvais" commit qui est connu pour contenir le bogue, et un "bon" commit qui est connu pour être avant que le bogue ne soit introduit. Ensuite, En fait, « git bisect » peut être utilisé pour trouver le commit qui a changé n’importe quelle propriété de votre projet ; par exemple, le commit qui a corrigé un bogue, ou le commit qui a causé l’amélioration des performances d’un benchmark. Pour gérer cette utilisation plus générale, les termes "old" (ancien) et "new" (nouveau) peuvent être utilisés à la place de "bad" (mauvais) et "good" (bon), ou vous pouvez choisir vos propres termes. Voir la section « Autres termes » ci-dessous pour plus d’informations. Commandes bisect de base : start, bad, goodÀ titre d’exemple, supposons que vous essayez de trouver le commit qui a cassé une fonctionnalité qui était connue pour fonctionner dans la version $ git bisect start $ git bisect bad # La version actuelle est mauvaise $ git bisect good v2.6.13-rc2 # v2.6.13-rc2 est réputée correcte Une fois que vous avez spécifié au moins un mauvais et un bon commit, Bisection : 675 révisions restantes à tester après cela (environ 10 étapes) Vous devez maintenant compiler la version extraite et la tester. Si cette version fonctionne correctement, tapez $ git bisect good Si cette version est cassée, tapez $ git bisect bad Ensuite, Bisection : 337 révisions restantes à tester après cela (environ 9 étapes) Continuez à répéter le processus : compiler l’arbre, le tester, et selon qu’il est bon ou mauvais lancer Finalement, il ne restera plus de révisions à inspecter et la commande affichera une description du premier mauvais commit. La référence Bisect resetAprès une session de bissection, pour nettoyer l’état de bissection et revenir à la HEAD d’origine, exécutez la commande suivante : $ git bisect reset Par défaut, cela retournera votre arbre à le commit qui a été vérifiée avant le Avec un argument optionnel, vous pouvez revenir à un commit différent à la place : $ git bisect reset <commit>
Par exemple, Termes alternatifsParfois, vous n’êtes pas à la recherche du commit qui a introduit une rupture, mais plutôt pour un commit qui a causé un changement entre un autre « vieil » état et « nouvel » état. Par exemple, vous pouvez être à la recherche du commit qui a introduit un correctif particulier. Ou vous pouvez être à la recherche du premier commit dans lequel les noms de fichiers de code source ont finalement tous été convertis à la norme de nommage de votre entreprise. Ou quoi que ce soit. Dans de tels cas, il peut être très déroutant d’utiliser les termes "good" (« bon ») et "bad" (« mauvais ») pour désigner « l’état avant le changement » et « l’état après le changement ». Ainsi, au lieu de cela, vous pouvez utiliser les termes "old" (« ancien ») et "new" (« nouveau »), respectivement, à la place de "good" et "bad". (Mais notez que vous ne pouvez pas mélanger "good" et "bad" avec "old" et "new" dans une seule session.) Dans cette utilisation plus générale, vous fournissez à Pour utiliser "ancien" et "nouveau" au lieu de "bon" et "mauvais", vous devez exécuter git bisect old [<rév>] pour indiquer que le commit était avant le changement envisagé, ou git bisect new [<rév>...] pour indiquer qu’il était avant. Pour obtenir un récapitulatif des termes utilisés actuellement, utiliser git bisect terms Vous pouvez obtenir juste l’ancien terme avec Si vous souhaitez utiliser vos propres termes au lieu de "bad"/"good" ou "new"/"old", vous pouvez choisir les noms que vous voulez (sauf les sous-commandes de bisect existantes comme git bisect start --term-old <ancien-terme> --term-new <nouveau-terme> Par exemple, si vous recherchez un commit qui a introduit une régression de performance, vous pouvez utiliser git bisect start --term-old rapide --term-new lent Ou si vous cherchez le commit qui a corrigé un bogue, vous pouvez utiliser git bisect start --term-new corrige --term-old casse Ensuite, utiliser Visualisation/vue de bissectionPour voir les suspects restants dans gitk, lancez la commande suivante pendant le processus de bisection (la sous-commande $ git bisect visualize Git détecte un environnement graphique à travers diverses variables d’environnement : Si aucune de ces variables d’environnement n’est pas définie, git log est utilisé à la place. Vous pouvez également donner des options de ligne de commande telles que $ git bisect visualize --stat Bisect log et bisect replayAprès avoir marqué les révisions comme bonnes ou mauvaises, donnez l’ordre suivant pour montrer ce qui a été fait jusqu’à présent : $ git bisect log Si vous découvrez que vous avez fait une erreur en spécifiant l’état d’une révision, vous pouvez enregistrer la sortie de cette commande dans un fichier, la modifier pour supprimer les entrées incorrectes, puis émettre les commandes suivantes pour revenir à un état corrigé : $ git bisect reset $ git bisect replay ce-fichier Éviter le test d’un commitSi, au milieu d’une session bisect, vous savez que la révision suggérée n’est pas bonne à tester (par exemple, elle ne parvient pas à se construire et vous savez que l’échec n’a rien à voir avec le bogue que vous poursuivez), vous pouvez sélectionner manuellement un commit proche et tester celle-ci à la place. Par exemple : $ git bisect good/bad # le round précédent était good ou bad Bisecting: 337 revisions left to test after this (roughly 9 steps) $ git bisect visualize # oh.. C'est sans intérêt $ git reset --hard HEAD~3 # essayer 3 révision avant ce qui # a été suggéré Ensuite, compilez et testez la révision choisie, puis marquez la révision comme bonne ou mauvaise de la manière habituelle. Saut de BisectAu lieu de choisir vous-même un commit proche, vous pouvez demander à Git de le faire pour vous en émettant la commande : $ git bisect skip # Cette révision ne peut pas être testée Cependant, si vous sautez un commit adjacent à celui que vous recherchez, Git ne pourra pas dire exactement lequel de ces commits était le premier mauvais. Vous pouvez également sauter une série de commits, au lieu d’un seul, en utilisant la notation de plage. Par exemple : $ git bisect skip v2.5..v2.6 Cela indique au processus bisect qu’aucun commit après Notez que si vous souhaitez également sauter le premier commit de la plage, vous devrez émettre la commande : $ git bisect skip v2.5 v2.5..v2.6 Cela indique au processus de bissection que les commits entre Bisect nextNormalement, après avoir marqué une révision comme bonne ou mauvaise, Git calcule automatiquement et vérifie la prochaine révision à tester. Cependant, si vous devez explicitement demander la prochaine étape de la bisection, vous pouvez utiliser : $ git bisect next Vous pouvez l’utiliser pour reprendre le processus de bisection après l’interrompre en extrayant une révision différente. Réduire la bissection en donnant plus de paramètres au début de la bissectionVous pouvez réduire davantage le nombre d’essais, si vous savez quelle partie de l’arbre est impliquée dans le problème que vous recherchez, en spécifiant les paramètres de spécificateur de chemin lors de la commande $ git bisect start -- arch/i386 include/asm-i386 Si vous connaissez à l’avance plus d’un bon commit, vous pouvez réduire l’espace de bissection en spécifiant tous les bons commit immédiatement après le mauvais commit lorsque vous lancez la commande $ git bisect start v2.6.20-rc6 v2.6.20-rc4 v2.6.20-rc1 --
# v2.6.20-rc6 est mauvaise
# v2.6.20-rc4 and v2.6.20-rc1 sont bonnes
Bisect runSi vous avez un script qui peut dire si le code source actuel est bon ou mauvais, vous pouvez bissecter en émettant la commande : $ git bisect run mon_script arguments Notez que le script ( Tout autre code de sortie fera avorter le processus de bissection. Il convient de noter qu’un programme qui se termine par Le code de sortie spécial 125 doit être utilisé lorsque le code source actuel ne peut pas être testé. Si le script se termine avec ce code, la révision en cours sera ignorée (voir Vous pouvez souvent constater que pendant une session bisect, vous souhaitez que des modifications temporaires (par exemple s/#define DEBUG 0/#define DEBUG 1/ dans un fichier d’en-tête, ou "la révision qui n’a pas ce commit a besoin que ce patch soit appliqué pour contourner un autre problème qui n’intéresse pas cette bisection") soient appliquées à la révision testée. Pour faire face à une telle situation, une fois que le git bisect interne a trouvé la prochaine révision à tester, le script peut appliquer le patch avant la compilation, exécuter le vrai test, puis décider si la révision (éventuellement avec la rustine nécessaire) a passé le test et ensuite rembobiner l’arbre à l’état vierge. Enfin, le script doit se terminer avec l’état du test réel pour laisser la boucle de commande OPTIONS
EXEMPLES
GITFait partie de la suite git[1] TRADUCTIONCette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n . |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |