2010-08-20 21 views
4

Parfois, il est logique d'interdire git commit quand il y a des fichiers non-traités, parce que vous devriez les ajouter aux fichiers à commettre ou à gitignore. Et une option comme -f pour forcer cette validation est également nécessaire. Donc est-ce qu'il y a une option/plugin/etc pour faire ça? Merci beaucoup.Comment interdire git commit s'il y a des fichiers non-suivis?

Répondre

5

Vous pouvez ajouter un crochet pre-commit qui se ferme avec une valeur non nulle si vous trouvez des fichiers non suivis (vous pouvez examiner la sortie de git status --porcelain -u pour déterminer leur présence - recherchez les lignes commençant par "?"). Ensuite, vous pouvez remplacer la validation de validation par git commit --no-verify si vous ne vous souciez pas des fichiers non suivis.

Édition: Merci à @Jefromi; Je n'ai pas mon environnement git à portée de main pour tester. Il note également que cette commande devrait identifier la présence de fichiers non-tracés: git status -u | grep '^# Untracked files:$'.

+0

Je pense que vous voulez examiner la sortie de 'git status --porcelain -u', pas' git status -u'. Tout ce que '-u' fait est de s'assurer que les fichiers non-traités seront listés, ce qu'ils seront quand même, sauf s'ils sont désactivés dans la configuration. Le '--porcelain' est ce qui le rend facile à analyser avec un script, avec le' ?? 'au début de la ligne, au lieu de devoir lire et trouver la section" Untracked files ". Cette option a été ajoutée dans la version 1.6.4. – Cascabel

+0

Bien sûr, si tout ce que vous devez savoir, c'est s'il y a des fichiers non suivis, faites juste le 'git status -u | grep '^ # Fichiers non suivis: $ '' – Cascabel