132 votes

Obtenir l'heure et la date des tags git

J'ai un projet qui utilise git et j'ai étiqueté toutes les versions avec une étiquette.

$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0

Mon objectif est de répertorier les versions et les dates de publication dans une interface web (date de publication = date de publication). Actuellement, nous listons toutes les versions en utilisant git tag .

Comment puis-je obtenir l'heure et la date de création de la balise (ou du commit vers lequel elle pointe) ?

2voto

vladis Points 71

On peut utiliser gawk (pas awk ) pour convertir la date dans la ligne "tagger" en quelque chose de lisible par l'homme :

git rev-parse v4.4-rc1 | xargs git cat-file -p | gawk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'

si l'on n'aime pas gawk puis date peut être utilisé pour convertir le temps unix :

git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d

et exemple ( dnsmasq git repo) :

$ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d
Wed May 18 16:52:12 CEST 2016

1voto

yuzer Points 114

Toutes les réponses ici sont excellentes et dans le bon style git. Mais j'avais besoin d'un tag, de sa date et de son message et seulement des 10 derniers tags. Donc je l'ai juste fait d'une manière très pédestre. Mais enregistrez-le en tant que fonction shell ou script et cela devient un one-liner.

for ver in `git tag | tail -10`; do
    DATE=`git log -1 --format=%ai $ver | awk '{print $1}'`
    MESSAGE=`git tag -n $ver | cat | awk '{a=match($0, $2); print substr($0,a)}'`
    echo "$ver \t| $DATE | $MESSAGE"
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X