einfachste Möglichkeit git kann die Anzahl der Commits zwischen "branch" und "remotes / origin / branch" ausgeben

7

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?

    
Sparky 16.04.2013, 12:53
quelle

3 Antworten

18

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.

    
jszakmeister 16.04.2013 16:12
quelle
1

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.

    
akostadinov 16.04.2013 12:58
quelle
1

Wenn sichergestellt ist, dass branch der Vorfahre von origin/branch ist (d. h. schnellvorlaufbar), dann

%Vor%

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.

    
Jokester 16.04.2013 13:13
quelle

Tags und Links