Wie kann ich ein Git-Log mit seinem nächsten Tag dekorieren?

8

git log --decorate fügt der Protokollausgabe Informationen über verwandte Referenzen hinzu:

%Vor%

Diese Information hilft beim Verfolgen, welches Tag (oder Zweig) dieses Commit enthält. Beim Anzeigen einer eingeschränkten Gruppe von Dateien (z. B. eines Unterverzeichnisses) muss für diese Commits kein Tag angegeben werden. Gibt es eine Möglichkeit, eine Referenz auf eine Variable in der Protokollausgabe zu setzen?

Ich habe zuvor git describe erwähnt, aber das ergibt v3.10-rc7-135-g98b6ed0 , was relativ zu einem Tag der Verzweigung ist, wo diese Änderung festgeschrieben wurde. Was ich suche, ist ein Tag-Name zwischen den Commits.

Aus Gründen der Übersichtlichkeit ist dies die aktuelle Situation:

%Vor%

Was ich haben möchte, ist etwas wie:

%Vor%

Die Ausgabe von git describe anstelle des Commit-Hashes würde etwa wie folgt aussehen:

%Vor%

Wie Sie sehen können, werden ältere Tag-Namen als Referenzpunkt und nicht als der Punkt verwendet, an dem das Commit zusammengeführt wurde. Zu Illustrationszwecken verwende ich hier git log --oneline , aber ich möchte tatsächlich eine vollständigere Ausgabe verwenden, z. git log -p --stat .

    
Lekensteyn 29.06.2013, 10:04
quelle

2 Antworten

5

Der --first-parent -Parameter von git describe (eingeführt mit Git 1.8.4) zeigt, wo ein Commit von abgeleitet ist. Um eine Beziehung zum ersten Tag nach dem Commit zu sehen, verwenden Sie git describe --contains . Diese Option wird sehr langsam (~ 6 Sekunden), wenn Sie tiefer in die Geschichte eintauchen. Verfügbar seit git 1.5.3.

Der Befehl git name-rev kann verwendet werden, um git rev-name zu kommentieren und funktioniert mit --graph und --color auch! Von seiner Manpage:

  

Finden Sie heraus, wo es relativ zu den lokalen Referenzen ist. Sag jemand   hat dich über dieses fantastische Commit geschrieben   33db5f4d9027a10e477ccf054b2c1ab94f74c85a. Natürlich, Sie schauen in das Commit,   aber das sagt nur, was passiert ist, aber nicht den Kontext.

     

Geben Sie git name-rev :

ein %Vor%      

Jetzt sind Sie weiser, weil Sie wissen, dass es vor v0.99 940 Revisionen passiert ist.

     

Eine andere nette Sache, die Sie tun können, ist:

%Vor%

Dieser letzte Befehl hängt etwas an jeden SHA-1-Hash mit 40 Zeichen an, wie unten gezeigt (der markierte Teil wird um git name-rev hinzugefügt).

%Vor%

Ein awk-Skript zur Nachbearbeitung von git log output ist verfügbar unter Ссылка (geschrieben bevor ich von git rev-name wusste). Eigenschaften:

  • Betrachtet den Hash von commit <hash> anstelle von 40-Zeichen-Hashes (funktioniert auch mit --abbrev-commit ).
  • Unterstützung für git log --graph format.
  • Fügt git describe --contains oder git describe --first-parent output hinzu.
  • Möglichkeit, ein Cache-Verzeichnis anzugeben, um später Zeit zu sparen.
Lekensteyn 23.11.2013, 11:34
quelle
2
  

Wie Sie sehen können, werden ältere Tag-Namen als Referenzpunkt und nicht als der Punkt verwendet, an dem das Commit zusammengeführt wurde.

Das sollte möglich sein ... bald (Git 1.8.4 Juli 2013):

Siehe committed e00dd1e9485c50f202cc97dfae19d510e108b565 :

%Vor%
  

Betrachten Sie nur das erste übergeordnete Commit, wenn Sie den Commit-Verlauf durchlaufen.
  Dies ist nützlich, wenn Sie nach einer Zusammenführung nur Tags in Ihrer Verzweigung suchen möchten.

OP Lekensteyn kommentiert es ( --first-parent ) ist nicht genug:

  

--first-parent zeigt das Tag nicht an, an dem es zusammengeführt wurde.
  Ich habe gerade entdeckt, dass --contains dafür verwendet werden kann.
  Siehe meine Antwort für eine noch bessere Lösung, git name-rev .

Hinweis: git name-rev stammt von git0.99.9 (Okt. 2005!) .

>     
VonC 29.06.2013 12:22
quelle

Tags und Links