Ich arbeite mit custom ein Build-System, das eine große Anzahl von Git-Repositories verwaltet und hauptsächlich in Python geschrieben ist.
Es würde mir viel Zeit sparen, wenn ich einen Befehl schreiben könnte, der den aktuellen Zweig aller Repositories melden würde, und dann melden würde, wenn der Kopf von "branch" der gleiche wie der Kopf von "remotes / Herkunft / Zweig" ist .
Wir haben bereits einen Befehl, der in jedem git-Repository einen Shell-Befehl ausführt. Was ich suche, ist eine Methode, um einfach formatierte Informationen von git bezüglich der relativen Position von Zweigstelle und Remote / Ursprung / Zweig zu erhalten . Etwas, das entweder eine Commit-Differenz oder ein einfacher boolescher Wert ist.
Was ist die Methode, um diese Informationen aus git zu bekommen, was die Menge an Parsing und Verarbeitung auf der Python-Seite minimieren wird?
Wenn Sie eine ausreichend neue Version von git haben, können Sie Folgendes verwenden:
%Vor% Die erste Zahl, wenn die Anzahl der Commits branch
vor origin/branch
liegt und die zweite die Anzahl der Commits dahinter ist. Dieser Zweig hat also zwei Commits, die noch nicht Upstream sind, und es gibt einen Commit Upstream, der noch nicht in meinem lokalen Zweig ist.
Ich glaube, es war 1.6 oder 1.7, als --count eingeführt wurde.
git status
zeigt an, wie viele Commits Sie vor / hinter dem Remote-Tracking-Zweig haben. Sie müssen jedoch zuerst git fetch ausführen, da sonst git nicht wissen kann, ob etwas Neues in remote ging.
Wenn sichergestellt ist, dass branch
der Vorfahre von origin/branch
ist (d. h. schnellvorlaufbar), dann
sollte die Commits dazwischen jeweils in einer Zeile drucken. Sie können die Zeilen entweder in Python oder wc -l
zählen.
Nicht sicher, ob eine einfache und allgemeine Lösung existiert. Es gibt möglicherweise keinen gemeinsamen Vorfahren für origin/branch
und branch
, wenn ein verzweigter Zweig involviert ist.