Ich hätte gerne eine Software, die mir eine "Dashboard"-ähnliche Anzeige für alle meine Git-Repositories auf meinem lokalen Computer gibt.
Ich stelle mir vor, es könnte mir Statistiken sagen wie:
Die letzten beiden wären ziemlich teuer und sollten wahrscheinlich im Hintergrund berechnet werden.
So etwas wie eine kompakte und hübsche Version von
find $HOME /homes7/contracts/ -name .git -print | while read dir; do
d=`dirname $dir`
echo $d
( cd $d; git status)
echo
done
Da ich bereits über 90 Repos habe, muss diese Anzeige ziemlich kompakt sein. Eine GUI wäre köstlich (und eröffnet die Möglichkeit für mehr Details bei Mouseover oder Klick), aber wenn keine vorhanden ist, werde ich mich mit einem Befehlszeilentool begnügen. Ich benutze ausschließlich Linux.
Ich habe den Status in eine Textdatei unter ~/status/git-repos.txt
. Hier ist die Shell-Funktion, die ich verwende:
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"
}
Initialisieren Sie die Datei und übergeben Sie ihr einige Verzeichnisse wie folgt:
date > "$HOME/status/git-repos.txt"
cron_lib_find_git_repo_status_in "$HOME/src/"
cron_lib_find_git_repo_status_in "$HOME/Dropbox/"
Führen Sie dann dieses Skript in einem Cronjob aus. Die Ausgabe enthält den Zweig (mit Ausnahme von Boring Old ## master
), die geänderten Dateien und wie viele Zeilen hinzugefügt oder entfernt wurden.
Es ist ziemlich kompakt und es ist einfach, große Änderungen von kleinen Änderungen zu unterscheiden.
Es gibt eine robustere Option namens myrepos
, die sich in den Standard-Repositorys befindet.
https://myrepos.branchable.com/
Dazu müssen Sie alle Ihre Repos registrieren (im Gegensatz zum Shell-Skript oben).
$ mr register
Registering git url: git://my-git-url.com/path/to/repo.git in /home/username/.mrconfig
Sie können dann den Befehl like mr status
oder verwenden mr diff
, um alle Repos anzuzeigen. Das läuft ziemlich schnell; Mit einer langsamen Festplatte kann ich den Status von 64 Repositories in fast einer halben Sekunde überprüfen.
$ cd $HOME
$ mr status
<snip>
mr status: finished (64 ok)
real 0m0.674s
user 0m0.268s
sys 0m0.080s
Das mr
Paket unterstützt git
auch eine Vielzahl anderer Versionskontrollsysteme, aber beachten Sie, dass Sie mindestens eine Remote-URL haben müssen, dh rein lokale Repositories funktionieren nicht wirklich. Es gibt eine Problemumgehung, die hier erwähnt wird, wenn Sie neugierig sind:
Mutant Bob