hgsubversionのhg clone --startrev

前置き

hgsubversion自体の導入については↓をどうぞ
hgsubversionの導入 - 文殊堂

ちょっと前までのhgsubversion

ちょっと前までhgsubversionではsvnリポジトリの完全なコピーを作ることしかできませんでした。
例えば10年物のsvnリポジトリをhg cloneすると10年分の履歴全てを取ってきてしまいます。
目的がsvnリポジトリのコンバートであるなら問題ありませんが、
svnリポジトリを正としつつMercurialの分散SCMの機能を活用して開発をいい感じにやりたい
という場合には困ります。
git-svnのように特定リビジョン以降だけ持ってくるとかやりたいです。

startrev option

で、changeset:827547493112から出来るようになりました。
残念ながら基底のURL(/trunk,/tags/,/branches/がある階層)のcloneについては使えませんが、
trunkや各branchのcloneでなら使えます。


例えば http://python-nose.googlecode.com/svn/ のpy3k branchが欲しいとします。

svn co http://python-nose.googlecode.com/svn/branches/py3k python-nose.py3k.svn
cd python-nose.py3k.svn
svn log --stop-on-copy

とかやると根元がr562だと分かるので、

hg clone --startrev 562 http://python-nose.googlecode.com/svn/branches/py3k python-nose.py3k

とかやってやれば、branchの分岐点から先端までcloneしてこれます。
そのご普通にpush/pullも出来ます。