hgsubversionの導入

基本的にhttp://monkeyisland.pl/2009/11/04/hgsubversion-on-windows/を参考にする

svnインスコする

hgsubversionを使うにあたってはsvnコマンドのインストールが必要。
TortoiseSVNが入っていてもダメ。
Apache Subversion
設定時に知っておくべきことか
http://mino.blog.eonet.jp/minoproject/2009/08/windowssubversi.html
Subversionのリポジトリをsvn+sshで管理する - Lism.in * blog - nekoya (id:studio-m)

Mercurialインスコする

こちらはTortoiseHGを入れれば入るので、
好みに応じてTortoiseHGもしくはMercurial本体のみをインストールする。
Bitbucket | The Git solution for professional teams
Mercurial SCM

hgsubversionをclone

てきとーなディレクトリで

hg clone http://bitbucket.org/durin42/hgsubversion

設定

rebase extensionの有効化とsvn extension(hgsubversionのこと)のディレクトリ指定を行う。
例えば、以下のような感じで設定する。
cloneしてきたhgsubversionディレクトリの下のhgsubversionディレクトリを指定すること。

[extensions]
rebase=
svn=C:\my\tool\hgext\hgsubversion\hgsubversion

環境変数

環境変数HGENCODINGMODEにreplaceを指定する。
普通に使っている分には前段までの設定でOKだが、
commit logにダメ文字が含まれているsvnリポジトリをcloneする際に
この設定が必要になる。
例えば、あるリポジトリのリビジョンに「末尾の余分な改行を除去」
というコメントがSJISで入ってしまっていた場合に、

abort: decoding near '末尾の余分': 'utf8' codec can't decode byte 0x96 in position 0: unexpected code byte!

などと出てcloneが失敗してしまっていたが、この設定を入れれば、
「????]????????」のようになるだけで、clone自体は成功するし、
その後のリポジトリ操作にも支障をきたさない。