Git で SVN みたいなリビジョン番号を取りたい

以前の記事を書いた時はリポジトリが SVN だったので、ビルドスクリプトで埋め込むリビジョン番号も SVN のリビジョンをそのまま使ってたけど、最近 Git に移行したので、ハッシュ値を替わりに使うようスクリプトを編集した.

開発中 TestFlight を使ってる間はハッシュ値で全然問題なかったんですが、 iTunes Connect 提出の際に以下のルールにハマった.

iTunes Connect 提出用アプリの CFBundleVersion は、

  1. 数字(ピリオド含みOK)
  2. 前バージョンの値よりも大きい

じゃないとダメよ、というやつ.

SVN の時はそのままリビジョン番号をバッチで埋め込んでたのが、Git にしたときにハッシュ値を使うようにしたもんだから、そのままでは iTunes Connect に提出できなくなってしまった…

で、結局下記のコマンドでコミット数をカウント・取得して、その値を CFBundleVersion として使うようにした.

$ /usr/bin/git log --oneline | wc -l | sed -e "s/[ \t]*//g"
1105

そのままだと上に書いた “前バージョンの値よりも大きい” ってやつに引っかかる時は、ビルドスクリプトの中で固定値を足せば良さそう.

ちなみに Git への移行期には git-svn を使ってたんですが、その場合は

$ /usr/bin/git svn log --oneline -1 | cut -d '|' -f1 | sed -e "s/r//"
8319

みたいな感じでやってました.