Mercurial リポジトリーのチェンジセット ID を成果物に取り込む

Mercurial で管理しているプログラムや文書などにチェンジセット ID を取り込んでバージョン番号みたいに使いたいと考えていました。

最初は hg log の出力からスクリプトで抽出する方法を考えましたが、 hg identify で取得できることがわかりましたので簡単にできます。

ビルドする場合、Make を使うので Makefile 内で チェンジセット ID を取り込んでみます。


ifneq ($(wildcard .hg_archival.txt),)
changeset = $(shell $(awk) 'match ($$1, /node:/) { print substr($$2, 0, 12) }' .hg_archival.txt)
endif
ifneq ($(wildcard .hg),)
changeset = $(shell $(hg) identify --id)
endif
changeset? = unknown

これで Makefile の変数 changeset にチェンジセット ID が取り込まれました。
アーカイブからのビルドでもちゃんと動きます。

あとは

CHANGESET.txt: $(src)
 @echo $(changeset) > $@

みたいに自由に使用できます。

コメント

このブログの人気の投稿

バイナリーファイルを C 言語の配列で出力

Python を使って文字コード変換