2010-07-05 6 views
18

J'utilise git bisect pour trouver une erreur induisant la validation. Cependant, beaucoup de commits dans la gamme sont définitivement hors de propos (parce qu'ils s'engagent dans la documentation ou dans les tests unitaires). Je voudrais faire git bisect sauter automatiquement les commits qui affectent les fichiers dans certains répertoires. Est-ce possible en quelque sorte?Comment est-ce que je peux réduire une exécution de git bisect en utilisant des chemins de fichier?

Répondre

27

Vous avez plusieurs options:

  1. spécifique Ignorer engage

    git bisect contient des fonctionnalités de commits sauter. Vous pouvez spécifier commits, les balises, les chaînes que vous ne voulez pas tester avec

    git bisect skip 0dae5f ff049ab ... 
    

    Il suffit de faire cela avant git bisect run, et il doit ignorer ce que vous avez spécifié.

  2. Spécification des dossiers avec des sources brisées

    Vous pouvez également réduire engage bisect des tests en spécifiant quels dossiers qu'il doit chercher des problèmes. Cela se fait au début de bisect processus par supllying arguments supplémentaires pour git bisect start (citation du manuel standard):

    git bisect start -- arch/i386 include/asm-i386 
    

    Bisect considérera uniquement les validations qui touchent les dossiers spécifiés.


Si vous voulez recueillir automatiquement commits qui touchent certains fichiers ou dossiers, vous pouvez utiliser git log pour cela. Par exemple, la commande suivante vous donnera commettez des noms qui modifient les fichiers dans certains dossiers:

git log --pretty=format:%H tests/ docs/ 

Et vous pouvez fournir le résultat à git bisect skip avec l'utilisation des capacités shell:

git bisect skip `git log --pretty=format:%H tests/ docs/` 
+0

Je connaissais le premier deux options déjà, mais sauter manuellement les commits était trop de travail (il y en a plusieurs) et je ne sais pas non plus quels dossiers contiennent les sources brisées. La suggestion d'utiliser 'git log' est super! Malheureusement, je suis sur Windows, donc les fonctionnalités de shell fantaisie ne fonctionnera pas pour moi. Cependant, je peux facilement construire une ligne de commande 'git bisect skip' appropriée à la main. Merci! –

+1

@FrerichRaabe: Quoi, ton git n'est pas venu avec une copie de bash? – SamB

+3

hmmm ajouter 2 dossiers à 'git bisect start' ne regarde que les commits qui touchent les deux dossiers. Existe-t-il un moyen de regarder les commits qui touchent un dossier? – EoghanM

Questions connexes