2010-05-05 5 views
2

J'écris actuellement une petite fonction zsh qui vérifie tous mes dépôts git pour voir s'ils sont sales ou pas, puis affiche ceux qui ont besoin d'un commit. Jusqu'à présent, je l'ai compris que le meilleur moyen de trouver un statut propre/sale de dépôt git est par git-diff et git-ls-files:git-diff dans un autre répertoire

if ! git diff --quiet || git ls-files --others --exclude-standard; then 
    state=":dirty" 
fi 

J'ai deux questions pour vous les gens:

  1. Does Quelqu'un sait-il d'une façon plus rapide et plus efficace de vérifier les modifications/ajouts de fichiers dans un repo git?
  2. Je veux que ma fonction zsh reçoive un chemin de fichier (disons ~/Code/git-repos/) et vérifie tous les dépôts qui s'y trouvent. Y at-il un moyen de faire sans avoir à cd dans chaque répertoire et exécuter ces commandes? Quelque chose comme git-diff --quiet --git-dir="~/Code/git-repos/..." serait fantastique.

Merci! :)

+0

Est-ce que http://stackoverflow.com/questions/2657935/checking-for-a-dirty-index-or-untracked-files-with-git aider? – VonC

+0

@VonC - ça a l'air génial. J'espérais que je n'aurais pas besoin d'utiliser git-status, car c'est un peu plus lourd, mais ça me permet de spécifier des répertoires git "distants" à regarder, c'est peut-être mon seul choix. – ABach

Répondre

3

Si $DIR détient le nom de votre répertoire et il est une mise en page standard (à savoir le .git dir est $DIR/.git), puis git --git-dir $DIR/.git --work-tree $DIR status -s -uno listera tous les fichiers qui ont des modifications non validées. Vérifier si la liste est vide devrait vous donner ce que vous voulez.

+0

L'exécution de cette commande donne "fatal: mode fichiers non-traités non valides '= aucun". " La page man spécifie 'no' comme une option valide pour -u, mais cela donne une erreur similaire. – ABach

+0

Vous avez raison, désolé, la syntaxe était légèrement éteint. Utilisez -uno au lieu de -u = aucun – Oblomov

+0

(J'ai corrigé le message en conséquence) – Oblomov

Questions connexes