Mercurial 履歴から ChangeLog を作成する方法

Hg-Git を併用すると……

さて、これで万事解決かと思ったらさにあらず、 Hg-Git を併用していると Git のリモート ブランチがすべてタグとして表示されてしまうので、ちょっと見栄えが悪いのでした。

ということで、自前のテンプレート mychangelog を作ってみました。

[templatealias]
changelog_header = "{date|shortdate} {user|person} <{user|email}>\n"
changelog_changeset = "{changelog_files}{changelog_desc}\n"
changelog_files = if(files|dist, "{join(files|dist, ', ')}: ")
changelog_desc = "{sub(r'.$', '', strip(sub(r'[.]\s', '', desc|firstline)))}."
changelog_desc = "{strip(sub(r'[.]\s', '', desc|firstline))}"
dist(files) = filter(files % "{sub(r'^build.makefile$', '', file)}")

[templates]
mychangelog = "\t* {changelog_changeset|fill68|tabindent}\t[{node|short}]{if(branches, ' <{branches|stringify}>')}\n\n"
mychangelog:header = "{changelog_header}\n"

機能としては問題のタグ出力を消してあるほか、ファイル名リストの後で無駄に改行しないように調整してあります。もし気に入ったら .hgrc に設定して周りに広めましょう。:)