hgsubversionべんり。Subversionのリポジトリと対話できる。
hg clone svn+ssh://server/path/svnrepo hgrepo
てなかんじ。hgrepo が普通のMercurialリポジトリになるので, さらにそれをcloneして孫リポジトリで遊ぶこともできる。
さて,svnのリポジトリでは「お試しコミット」がしづらいので,
hgリポジトリにcloneしてそこでお試しコミットなんかをするといい。
クローンしてきたhgrepoにcdして,そこで名前つきブランチを作って
そこで作ったローカルパッチをコミットしまくればいい。
ただ,
http://mercurial.selenic.com/wiki/HgSubversion
にもあるように,名前つきブランチとdefaultブランチをマージすると
もう二度と元のsvnリポジトリに対して hg push できなくなる。
どうするか。
hg branch my-branch # ローカル修正開始 hack hg ci -m hack-1 hack hg ci -m hack-2 : # 一息ついたら上流の修正を取り込む hg pull # rebaseする hg rebase --svn hack hg ci -m hack-3 hack hg ci -m hack-4 : # ここまでのローカルな修正をpushするぞ! hg pull hg rebase --svn hg push
push直前に pull と rebase を忘れない。pushすると名前つきブランチ も消えて,default に一本化される。またローカルハックを続けたいときは hg branch my-branch して臨む。ちょっと手順を間違えるとすぐpush できなくなる。繊細だな。