CVSによるオープンソース開発にも話題が出てるけど、 実際にやってるって話をとんと聞かない/etcのバージョン管理。これをMercurialを使って試してみた。
この用途にCVSやSubversionではなくMercurialを使うメリットは少なくとも2つ考えられる。
試してないけど、サーバ間で変更の同期を取るのにも使えるかも。
で、初めて本格的にMercurialを使い始めたのだけど、いろいろカスタマイズしたいところが出てきた。
標準のhg logの出力は次のような形で、コミットメッセージはそのsummary(=1行目)が出力される。 つまり、コミットメッセージが複数行に渡る時はそのすべてを確認することが出来ない。
changeset: 3:b9d48fc01c60 user: User <user@example.com> date: Thu Jan 05 21:00:27 2007 +0900 summary: commit message line1.
-vオプションを使うというのも一つの手だけど、もう少し柔軟に何とかならないものかと調べてみると--styleオプションが使えそうだということが分かった。
hg log [OPTION]... [FILE] options: --style display using template map file
オリジナルのテンプレートはDebianの場合/usr/share/mercurial/templates/map-cmdline.defaultにあるのでそいつをカスタマイズして使えばいいみたい。
# mkdir ~/.hg # cp /usr/share/mercurial/templates/map-cmdline.default ~/.hg/map-cmdline.custom # vi ~/.hg/map-cmdline.custom -changeset = 'changeset: {rev}:{node|short}\n ... summary: {desc|firstline}\n\n' +changeset = 'changeset: {rev}:{node|short}\n ... description:\n{desc|strip}\n\n' # cd /etc # hg log --style ~/.hg/map-cmdline.custom changeset: 3:b9d48fc01c60 user: User <user@example.com> date: Thu Jan 05 21:00:27 2007 +0900 description: commit message line1. commit message line2.
うん、出来た。標準でこのフォーマットを使いたいなら次のようにする。
# vi ~/.hgrc [defaults] log = --style /root/.hg/map-cmdline.custom