Vérifier le statut de tous les repositorys git à la fois

introduction

Afin de vérifier l'état des repositorys git status pourrait être émis à partir de la racine d'un repository.

 C:\path\to\git_repositories\git_repo_1>git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean 

Si un directory contient plusieurs directorys, par exemple 50 repositorys git

 C:\path\to\git_repositories>dir Directory of C:\path\to\git_repositories .ssh git_repo_1 ... git_repo_50 0 File(s) 51 Dir(s) 

Ni

 C:\path\to\git_repositories>git status . fatal: Not a git repository (or any of the parent directories): .git 

ni

 C:\path\to\git_repositories>git status ./. fatal: Not a git repository (or any of the parent directories): .git 

est capable de vérifier l'état de tous les repositorys

Question

Comment vérifier le statut de tous les repositorys git à la fois?

Solutions Collecting From Web of "Vérifier le statut de tous les repositorys git à la fois"

Vous pouvez utiliser une boucle for qui change dans chaque directory, fait le git status , puis change de sauvegarde:

 for /f "tokens=*" %a in ('dir /ad /b') do cd %a & git status & cd .. 

Vous devez doubler les pourcentages si vous l'utilisez dans un file batch:

 for /f "tokens=*" %%a in ('dir /ad /b') do cd %%a & git status & cd .. 

Modifier:

Comme suggéré par Cupcake, vous pouvez le faire à la place:

 for /f "tokens=*" %a in ('dir /ad /b') do git --git-dir=%a/.git --work-tree=%a status 

Cela ressemble à une solution plus robuste et plus flexible (par exemple, vous pouvez l'adapter plus facilement pour travailler avec une list de paths stockés dans un file text).

J'y suis allé avec

 find . -name .git -execdir git rev-parse --show-toplevel \; -execdir git status -s \; 

J'ai juste besoin de modifier un peu pour get seulement le nom du repo, pas tout le path.

Je pense que c'est plus agréable parce que traite les directorys récursivement.

Si vous êtes un type d'outil, vous pouvez utiliser un petit assistant appelé RepoZ que j'ai écrit récemment (et écrire encore).

J'ai répondu à une question assez similaire plus en détail ici .

Voici une capture d'écran de la phase de développement en cours, donc j'espère que vous pouvez voir si cela vous semble utile ou non:

entrez la description de l'image ici

Si vous vous requestz ce que les strings comme +45 ~403 -88 signifient – ce sont des strings d'état condensées vous indiquant s'il y a des commits pour aller chercher ou pousser et s'il y a des files ajoutés / modifiés / supprimés localement. Plus de détails sur le site du projet sur GitHub

Si vous disposez d'un système constitué de nombreux référentiels Git, il s'agit probablement d'une situation pour laquelle l'outil de repo Google a été créé: https://code.google.com/archive/p/git-repo/

Si vous vous trouvez à écrire des scripts pour dissortingbuer des commands Git sur ces repositorys, vous devriez probablement passer à repo .

repo fonctionne avec un file XML (malheureusement) appelé "manifest.xml" qui spécifie les repositorys Git qui se trouvent dans l'espace de travail. Pour chaque repo, spécifiez quelle twig et quel commit doivent apparaître; vous pouvez utiliser repo pour "épingler" les repositorys Git à des versions particulières, ou pour suivre les têtes.

Si vous avez un espace de travail de repo alors

 $ repo status 

alors le repo fera à peu près ce que vous requestz: itérer sur les repos Git et vous donner un statut.