Warum wird git log --decorate
nicht mehr als ein Tag pro Commit angezeigt?
EDIT : Charles Bailey hat die Antwort gefunden (zumindest in meinem Fall).
Im Wesentlichen hatte ich ein Tag, das auf ein anderes Tag zeigte, das auf das Commit zeigte. Aufgrund dieser zusätzlichen Indirektionsebene wurde das Tag nicht im Protokoll angezeigt. Ich muss dies beheben, indem ich unser Tagging-Skript so korrigiere, dass es korrekt taggt, oder durch ein Shell-Skript-Voodoo, um Tags rekursiv zu folgen. Wie auch immer, ich lasse diese Frage nur als Referenz, falls jemand sie möchte. (Ich bin neu im Stapelüberlauf, aber ich gehe davon aus, dass dies das richtige Protokoll ist?)
... Originalfrage folgt ...
Hintergrundgeschichte: Wir verwenden GIT bei der Arbeit für die Quellcodeverwaltung und haben die Richtlinie, bei der Bereitstellung immer ein Commit zu kennzeichnen. (Es ist eigentlich ein Skript, das Tags erstellt und dann das Tag auf dem Server abruft.) Da es sich um eine Webanwendung mit separaten Staging- und Produktionsservern handelt, kennzeichnen wir häufig eine Version für das Staging (zum Testen oder was auch immer) und später das gleiche Commit für die Produktion.
Es kommt also sehr oft vor, dass wir mehrere Tags auf demselben Commit haben. Es wäre sehr schön, dies im Textprotokoll zu sehen, aber es scheint es nicht zu unterstützen. Ich arbeite derzeit an dem Problem, indem ich das gesuchte Tag manuell überprüfe oder es starte gitk
. Obwohl beide Lösungen funktionieren, scheint es mir wirklich seltsam git log --decorate
, standardmäßig nur ein Tag pro Commit zu unterstützen.
Ich habe ein bisschen gegoogelt, aber nicht viel gefunden. Vermisse ich etwas Offensichtliches?
PS (Ich verwende tatsächlich eine benutzerdefinierte Formatzeichenfolge %d
, die laut Manpages und einigen Schnelltests gleichbedeutend ist mit --decorate
)
Antworten:
Hinweis zum Tag des Tags (Markieren eines Tags), der den Ursprung Ihres Problems darstellt, wie Charles Bailey im Kommentar richtig hervorgehoben hat:
Stellen Sie sicher, dass Sie diesen Thread studieren , da das Überschreiben eines signierten Tags nicht so einfach ist:
git tag
Manpage ernsthaft davon abgeratengit tag -f B
, einen Tag-Namen einfach zu ersetzen. "A
"Versuchen Sie nicht, ein signiertes Tag mit neu zu erstellen
git tag -f
(siehe den Thread-Auszug unten).(Es handelt sich um einen Eckfall , ist aber in Bezug auf Tags im Allgemeinen recht lehrreich und stammt von einem anderen SO-Mitarbeiter, Jakub Narębski. )
quelle
Diese Version druckt auch die Festschreibungsnachricht:
quelle
Hinweis: Das Commit 5e1361c von Brian M. carlson (
bk2204
) (für git 1.9 / 2.0 Q1 2014) befasst sich mit einem Sonderfall in Bezug auf die Holzdekoration mit Tags:log: Dekorationen mit verketteten Tags richtig handhaben
Beispiel:
quelle