git の小ネタ。例えば次のようにタグを付けているとき:
commit #3 <--- v1.0.0 / latest | commit #2 <--- v0.9.0 | commit #1 <--- v0.8.0
commit #3 に紐付けられたすべてのタグ、つまりは v1.0.0 と latest を取得したいときどうすればよいか?という問題。
答えは簡単で、 --points-at オプションを使うこと。
$ git tag --points-at <commit #3> v1.0.0 latest
これだけだと短いので、レシピを紹介する。最新のタグを取得するには、次のようなコマンドを打てば、大体取得できる:
$ git tag --points-at=$(git rev-list --tags --max-count=1) v1.0.0 latest
git rev-list --tags でタグが関連付けられたすべての commit を、 --max-count=1 で最新の1件のみを取得、それを --points-at に渡すことで自動的に最新のタグがえられるというわけ。
ということで、メモでした。