こんにちは。
Gitで管理しているプロジェクトがあるのですが、そのプロジェクトでバージョン番号を表示したい、という要望が出てきました。
今まで何度かバージョン情報をプログラムや構成ファイルに表示させる、という要件がありました。
具体的にはAndroidアプリとかWordPressプラグインです。
その際には構成ファイルにバージョン情報を手書きで書いていて、アップデートをするたびにその都度書き直していました。
今回のプロジェクとはGitで全面的に管理していて、バージョンはreleaseブランチやタグを打つことで管理しています。
(ところでGithubですとタグを打てばバージョン情報が出てきて便利ですね。)
このGitで打ったバージョン情報をプログラム側で出力するようにしてみました。
まずはGitコマンドで直近のタグ情報を拾います。
$ git describe --tags
こんな感じでとれます。
ついでにgit logで最終更新日(最後のコミットが行われた日)を取得します。
$ git log -1 --format=%cd | date '+%Y%m%d'
それぞれのコマンドは現在のブランチ(やコミット)を基準に表示してくれます。
スクリプト化
上記2つを合わせて、プログラム側で表示するようにします。
今回のプロジェクトはCakePHPでしたので、バージョン情報をconfig/version.phpというファイルに書き出し、Configure系で呼び出すようにします。
version.phpの中身はこういうものを入れる想定です。
<?php $config['Version'] = '1.3.2-281-g08f7f8c 20180206';
このファイルを作るためのスクリプトは下記です。
TAG=`git describe --tags`
CD=`git log -1 --format=%cd | date '+%Y%m%d'`
echo $TAG $CD
echo "<?php \$config['Version'] = '${TAG} ${CD}';" > ../kp-event/config/version.php
あとはこのファイルをbootstrap.conf辺りで読み込んでおいて、呼び出したいところで適宜呼び出します。
// バージョン情報を読み込ませる
Configure::load( 'version' );
<?php if ( Configure::read( 'debug' ) ) { ?>
<div class="version" style="float: right; font-size: x-small;">
<span style="color: black;">システムバージョン:</span>
<span style="color: red;"><?= Configure::read('Version') ?></span>
</div>
<?php } ?>
すごく便利です!