Gitを使用しているプロジェクトがあり、すべてのリリースにタグを付けました。
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
私の目標は、Webインターフェースでリリースとリリース日をリストすることです(タグ/コミット日=リリース日)。現在、git tag
を使用してすべてのリリースをリストしています。
タグが作成された日時(またはタグが指すコミット)を取得するにはどうすればよいですか?
--format
にgit log
引数を使用します。
git log -1 --format=%ai MY_TAG_NAME
これは常に私のために働いた:
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
別の日付フォーマットを使用する場合は、フォーマット文字列の詳細について、git-logマンページの「PRETTY FORMATS」セクションを参照してください。
上記のソリューションはどちらもコミット日を取得することに注意してください。これは、そのコミットがリリース用にタグ付けされたときとは大きく異なる場合があります。タグ自体の日付を取得するには、rev-parse
でタグ自体を見つけ、cat-file
で読み取ってから解析する必要があります。少しのパイプライン:
git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'
もう1つのオプション:
_git for-each-ref --format="%(refname:short) | %(creatordate)" refs/tags/*
_
フォーマットオプションについては、 https://git-scm.com/docs/git-for-each-ref#_field_names を参照してください
%(creatordate)
は、使用時にタグが作成された日付を確認するために、指すコミットの日付を提供します%(taggerdate)
シェルを直接組み込むことができます:
_$> git for-each-ref --Shell --format="ref=%(refname:short) dt=%(taggerdate:format:%s)" refs/tags/*
ref='v1.10' dt='1483807817'
ref='v1.11' dt='1483905854'
ref='v1.12.0' dt='1483974797'
ref='v1.12.1' dt='1484015966'
ref='v1.13' dt='1484766542'
ref='v1.2' dt='1483414377'
ref='v1.3' dt='1483415058'
ref='v1.3-release' dt='' <-- not an annotated tag, just a pointer to a commit so no 'taggerdate', it would have a 'creator date'.
ref='v1.3.1' dt='1483487085'
ref='v1.4' dt='1483730146'
ref='v1.9' dt='1483802985'
_
これを行うためのgit tagコマンドには単純なオプションはありません。実行するのが最も便利だと思う
git log --decorate=full
タグがある場合、タグを含むすべてのコミットを一覧表示します。タグ付きのコミットのみを一覧表示する場合
git log --decorate=full --simplify-by-decoration
詳細については
git help log
gawk
(awk
ではなく)を使用して、「tagger」行の日付を人間が読める形式に変換できます。
git rev-parse v4.4-rc1 | xargs git cat-file -p | gawk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'
gawk
が気に入らない場合は、date
を使用してUNIX時間を変換できます。
git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d
および例(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