rcmdnk's blog

Alias by Alias (1990-02-28)

Gitでタグを新しく作る際、 1つ前のバージョンを調べて数字を変えて、というのが面倒なので その辺を自動でやってくれるエイリアスを作って使っています。

tag-new

tag-newでは タグはvX.Y.Zの様な形で作っているとして 特に指定がない場合は パッチアップデートなZに関してだけインクリメントして 現在のHEADをタグするエイリアスです。

[alias]
  tag-new = "!f () {\
    if [ \"$1\" = \"-v\" ];then \
      tag=\"$2\";\
      shift;shift;\
    else \
      tag=v$(git tag|sed s/v//g|sort -t . -n -k1,1 -k2,2 -k3,3|tail -n1);\
      tag_minor=${tag##*.};\
      ((tag_minor++));\
      tag=${tag%.*}.${tag_minor};\
    fi;\
    if [ $# -ne 0 ];then \
      comment=\"$*\";\
    else \
      comment=\"$(git log -1|tail -n +5)\";\
    fi;\
    echo comment: $comment;\
    tagcheck=$(git tag|grep ${tag});\
    if [ \"$tagcheck\" != \"\" ];then \
      echo \"tag: ${tag} exists\"\
      echo \"Please check tag or use tag-renew.\"\
      return 1;\
    fi;\
    git tag -a ${tag} -m \"${comment}\";\
    git push --tag;\
  };f"

これを使って

$ git tag-new

とすれば現在居るレポジトリの最新タグがv1.2.3だったら v1.2.4という新しいタグを作ってpushします。

その際のコメントは一番最後のコミットのコメントがそのまま入ります。

コメントを指定したい場合にはコマンドの後に続いて書けばそれがそのままコメントになります。

$ git tag-new "Comment for tag"

メジャーバージョン(X)やマイナーバージョン(Y)を変更したい場合は -vオプションでバージョンを指定します。

$ git tag-new -v v2.3.4 "Comment for tag"

Gitのエイリアスに関しては以下を参照。

tag-renew

tag-renewでは最新のタグを一度削除して現在のHEADで書き換えるエイリアスです。

[alias]
  tag-renew = "!f () {\
    if [ \"$1\" = \"-v\" ];then \
      tag=\"$2\";\
      shift;shift;\
    else \
      tag=v$(git tag|sed s/v//g|sort -t . -n -k1,1 -k2,2 -k3,3|tail -n1);\
    fi;\
    if [ $# -ne 0 ];then \
      comment=\"$*\";\
    else \
      comment=\"$(git log -1|tail -n +5)\";\
    fi;\
    tagcheck=$(git tag|grep ${tag});\
    if [ \"$tagcheck\" != \"\" ];then \
      git tag -d ${tag};\
      git push origin :${tag};\
    fi;\
    git tag -a ${tag} -m \"${comment}\";\
    git push --tag;\
  };f"

基本的な使い方はtag-newと一緒で もし最新以外の特定のタグを書き換えたい場合は-vでバージョン指定、 コメントも最後のコミットのメッセージがデフォルトで使われますが 指定したい場合は引数に書きます。

$ git tag-renew "Comment for renew tag"

過去のタグを書き換えるのは余り意味が無いので こちらは-vは使うことは通常は無いですが。

Sponsored Links
Sponsored Links

« Firefox 56でVimperatorのStyleの問題をとりあえず何とかする方法 Boseからも完全ワイヤレスイヤホン発売 »

}