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) > $@ みたいに自由に使用できます。