The git for-each-ref
documentation ist eine Art irreführend:
Für begehen und Tag-Objekte, die speziellen creatordate
und creator
Felder mit dem entsprechenden Datum oder Name-E-Mail-date Tupel aus den committer
oder tagger
Feldern in Abhängigkeit von der entsprechen werden Objekttyp. Diese sind für die Arbeit an einer Mischung aus annotierten und leichten Tags gedacht.
Dies funktioniert genau so, wie dokumentiert: %(creatordate)
das Datum aus dem tagger
Feld dieser kommentierten Tags bekommt. Es scheint jedoch, implizieren, dass Git für eine kommentierte Tag, könnte die entsprechende Commit prüfen: wenn nicht, wie würde es jemals die committer
bekommen?
Tatsächlich sieht for-each-ref
nie direkt bei einem Zielobjekt des annotierten Tags. Die Erwähnung des Felds committer
ist spezifisch für leichte Tags, die auf Commits, eher als annotierte Tag-Objekte verweisen. Glücklicherweise gibt es eine Formatrichtlinie, die sagt, dass sie "indirekt" aussehen soll: Einfach der Direktive *
voranstellen.
Daraus ergibt sich die Antwort lautet:
git for-each-ref \
--format='%(taggerdate) : %(*committerdate) : %(refname)' \
--sort=-taggerdate --count=10 refs/tags
Leichte Tags direkt an Bäumen oder Blobs zeigen können; Es ist nicht sofort klar, was in diesem Fall passiert. Wahrscheinlich ist die Erweiterung leer.
Beachten Sie, dass dies nur Indirects einmal, so dass, wenn das Ziel des kommentierten Tages ist ein weiterer Tag (oder ist ein Baum oder Blob), wird es kein Committer Datumsfeld sein. Um dies wirklich zuverlässig zu machen, sollten Sie wahrscheinlich ein bisschen Shell-Skript verwenden und den Tag-Namen mit dem ^{}
oder ^{commit}
Suffix auflösen. (Der Unterschied zwischen diesen beiden ist, dass ^{commit}
wird scheitern wenn das ultimative Ziel-Objekt ein Baum oder Blob ist, während ^{}
gelingen wird, zu finden, diesen Baum oder Blob-Objekt.)
Tags ... ein leichtes eine oder eine mit Anmerkungen versehene ein? (https://git-scm.com/book/en/v2/Git-Basics-Tagging#Annotated-Tags) – VonC
Diese sind mit Anmerkungen versehene Umbauten, die über Teamstadt eingestellt werden – John