hg commitと同時にRedmineのリポジトリ情報を更新する

はじめに

研究で作成しているプログラムはMercurial + Redmineで管理しているのですが、commitする度にRedmineリポジトリのページを開くの面倒くさかったので、commitと同時にリポジトリ情報を更新する方法を調べました。

以下のページの『設定方法(Redmine 0.9 + Subversionの例)』のMercurial版をメモ代わりに残します。
小技(0.9): コミットと同時にリポジトリの情報を取得する | Redmine.JP Blog

Redmineの設定

上記のページと同じです。管理 > 設定 > リポジトリを開き「リポジトリ管理用のWebサービスを有効にする」にチェックを飛ばし、「APIキー」に適当な文字列を入力(または「キーの生成」をクリックして自動生成)します。これで、以下のようなURLを叩くだけでRedmineリポジトリ情報を更新することができます。

http://Redmineサーバ名/sys/fetch_changesets?key=APIキー&id=プロジェクト識別子

このとき、URLのid=の部分を書かなければRedmineの全てのリポジトリ情報が更新されるそうですが、複数のリポジトリを登録しているならid=でプロジェクト識別子を指定した方が良いと思います。

Mercurialの設定

作業リポジトリの.hg/hgrcに以下を追加します。

[hooks]
commit.redmine = wget -q --delete-after "http://Redmineサーバ名/sys/fetch_changesets?key=APIキー&id=プロジェクト識別子" 

これにより、hg commitと同時にRedmineリポジトリ情報を更新するURLが叩かれるようになります。また、commit以外にpushやpullと同時にURLを叩きたい場合は.hg/hgrcに以下を追加すれば良いと思います。

[hooks]
changegroup.redmine = wget -q --delete-after "http://Redmineサーバ名/sys/fetch_changesets?key=APIキー&id=プロジェクト識別子"