Ich habe ein Projekt, das Git verwendet, und habe alle Releases mit einem Tag versehen.
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
Mein Ziel ist es, die Veröffentlichungen und Veröffentlichungsdaten in einer Weboberfläche aufzulisten (Tag / Commit-Datum = Veröffentlichungsdatum). Derzeit listen wir alle Releases mit auf git tag
.
Wie kann ich die Uhrzeit und das Datum für die Erstellung des Tags (oder das Commit, auf das es verweist) ermitteln?
Antworten:
Verwenden Sie das
--format
Argument, umgit log
:quelle
git log -1 --format=%ai v0.2.3
.--format=%aI
(Großbuchstabe "I")git log -1 --format=%ai MY_TAG_NAME | cat
Seitenaufruf deaktivierengit log
, dass nur ein Commit angezeigt wird , das sich auf das Tag bezieht . Das Standardverhalten besteht darin, alle Festschreibungen von der angegebenen bis zur ersten Festschreibung im Reposotory anzuzeigen.Das hat bei mir immer funktioniert:
Einzelheiten zur Formatzeichenfolge finden Sie im Abschnitt "HÜBSCHE FORMATE" der git-log-Manpage, wenn Sie eine andere Datumsformatierung wünschen.
quelle
taglog = log --tags --simplify-by-decoration --pretty='format:%ci %d'
Fügen Sie einfach (beachten Sie die einfachen, NICHT doppelten Anführungszeichen) in den Abschnitt [alias] Ihrer .gitconfig-Datei ein, und jetzt haben Sie einen git-Taglog-Befehl :)Noch eine Option:
Siehe https://git-scm.com/docs/git-for-each-ref#_field_names für Formatoptionen
%(creatordate)
Gibt das Datum des Commits an, auf das verwiesen wird, um das Datum anzuzeigen, an dem das Tag bei Verwendung erstellt wurde%(taggerdate)
Sie können die Shell direkt einbinden:
quelle
git for-each-ref --format="%(taggerdate:unix)" refs/tags
oder als Teilzeichenfolge ingit for-each-ref --format="%(taggerdate:raw)" refs/tags
git tag --format "%(refname:short) %(creatordate:short)"
Beachten Sie, dass Sie mit beiden oben genannten Lösungen das Festschreibungsdatum erhalten, das sich erheblich von dem unterscheiden kann, als dieses Festschreiben für die Veröffentlichung markiert wurde. Um das Datum des Tags selbst zu ermitteln, müssen Sie das Tag selbst finden, mit
rev-parse
lesencat-file
und dann analysieren. Eine kleine Pipeline:git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'
quelle
Es gibt keine einfache Option im Befehl git tag, um dies zu tun. Ich fand es am bequemsten zu rennen
um alle Commits einschließlich Tags aufzulisten, falls es welche gibt. Verwenden Sie zum Auflisten nur Commits, die mit Tags versehen sind
Für Details verwenden
quelle
man kann das Datum
gawk
(nichtawk
) verwenden, um das Datum in der "Tagger" -Zeile in etwas lesbares umzuwandeln:wenn man nicht wie funktioniert
gawk
danndate
kann verwendet werden , die Unix - Zeit zu konvertieren:und Beispiel (
dnsmasq
Git Repo):quelle
dnsmasq
Git Repo, zum Beispiel:$ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'
Wed May 18 16:52:12 CEST 2016