existe-t-il une application «tableau de bord» qui peut me donner un résumé de l’état de tous les référentiels git locaux sur mon système de fichiers?

Mutant Bob

existe-t-il une application «tableau de bord» qui peut me donner un résumé de l’état de tous les référentiels git locaux sur mon système de fichiers?


J’aimerais un logiciel qui me donne une lecture de type « tableau de bord » pour tous mes référentiels git sur ma machine locale.

J’imagine que cela pourrait me dire des statistiques comme:

  • combien de fichiers ne sont pas encore gérés par git
  • combien de lignes de différentiels ne sont pas encore validées
  • combien de validations ne sont pas encore envoyées à chaque dépôt en amont
  • combien de commits je n’ai pas encore tirés de l’amont

Ces deux derniers seraient assez chers et devraient probablement être calculés en arrière-plan.

Quelque chose comme une version compacte et jolie de

 find $HOME /homes7/contracts/ -name .git -print | while read dir; do d=`dirname $dir` echo $d ( cd $d; git status) echo done 

Comme j’ai déjà plus de 90 dépôts, cette lecture doit être assez compacte. Une interface graphique serait délicieuse (et ouvre la possibilité d’augmenter les détails lors d’un survol ou d’un clic), mais s’il n’en existe pas, je me contenterai d’un outil en ligne de commande. J’utilise exclusivement Linux.

Réponses


 Nathaniel M. Beaver

J’ai mis le statut dans un fichier texte sous ~/status/git-repos.txt . Voici la fonction shell que j’utilise:

 function cron_lib_find_git_repo_status_in { nice -n 19 find "$*" -name '.git' -print -execdir git status --porcelain --branch ; -execdir git diff --numstat ; | grep -v '## master$' &>> "$HOME/status/git-repos.txt" } 

Initialisez le fichier et passez-lui des répertoires comme celui-ci:

 date > "$HOME/status/git-repos.txt" cron_lib_find_git_repo_status_in "$HOME/src/" cron_lib_find_git_repo_status_in "$HOME/Dropbox/" 

Exécutez ensuite ce script dans un cronjob. La sortie contiendra la branche (hors ennuyeux ancien ## master ), les fichiers modifiés et le nombre de lignes ajoutées ou supprimées.

Il est assez compact et il est facile de distinguer les grands changements des petits changements.

Mutant Bob

C’est un très bon script, mais quand je l’exécute, je me rends compte à quel point le texte est intraitable lorsque je traite avec autant de dépôts que moi. Je commence à penser qu’une interface graphique (ou une variation HTML dérivée de vos techniques) pourrait être la seule solution acceptable.


 Nathaniel M. Beaver

Il existe une option plus robuste appelée myrepos qui se trouve dans les référentiels standard.

https://myrepos.branchable.com/

Cela vous oblige à enregistrer tous vos dépôts (contrairement au script shell ci-dessus).

 $ mr register Registering git url: git://my-git-url.com/path/to/repo.git in /home/username/.mrconfig 

Vous pouvez ensuite utiliser la commande comme mr status ou mr diff pour voir tous les dépôts. Cela fonctionne assez rapidement; Je peux vérifier l’état de 64 référentiels en près d’une demi-seconde avec un disque dur lent.

 $ cd $HOME $ mr status <snip> mr status: finished (64 ok) real 0m0.674s user 0m0.268s sys 0m0.080s 

Le package mr prend en charge git ainsi que divers autres systèmes de contrôle de version, mais notez que vous devez avoir au moins une URL distante, c’est-à-dire que les référentiels purement locaux ne fonctionnent pas vraiment. Il existe une solution de contournement mentionnée ici si vous êtes curieux:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=645965

 

#(une, #de, Application, bord, donner, Existe-t-il, fichiers, Git, l’État, Les, locaux,, me, mon, peut, qui, référentiels, Résumé, sur, système, Tableau, tous, un

 

wiki

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *