HgSubversion試してみた
夏休み突入しました。周りでは突入出来てない人もいるけど。。。--);
ネットワークがつながらない状況での分散開発をマジにやりそうなので、それにそなえてHgSubversionを調べてみました。
開発者はSVNしか意識しないで、構成管理担当者がcloneして差分をbundleファイルでやりとりするのをイメージしてます。
svn diffのやり取りでもいけるかもしれませんが、まずはMercurialとSubversionの連携をやってみます。
試したOSはWindows Vistaです。
1.インストール
Subversionは
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=11151&expandFolder=11151&folderID=91
からSetup-Subversion-1.6.6.msiをダウンロードしてインストール
いちおうTortoiseSVNも
http://tortoisesvn.net/downloads
からTortoiseSVN-1.6.10.19898-win32-svn-1.6.12.msiをダウンロードしてインストールしておきます。
TortoiseHgは
http://tortoisehg.bitbucket.org/
からtortoisehg-1.1.1-hg-1.6.1023-x86.msiをダウンロードしてインストール
hgsubversionのclone。リビジョンは653です。
C:\hgsvnにcloneしたので、C:\Users\ユーザ名\mercurial.iniに以下を追記
[extensions]
hgsubversion = C:\hgsvn\hgsubversion
2.Subversion側でプロジェクトのimport
Subversionの基礎練習
を途中までやってみます。
C:\> mkdir C:\home
C:\> mkdir C:\home\repos
C:\> svnadmin create C:\home\repos
C:\> mkdir work
C:\> cd work
C:\work> mkdir myproject
C:\work> cd myproject
C:\work\myproject> echo This is readme file. > readme.txt
C:\work\myproject> svn import file:///C:/home/repos/myproject -m "Initial import."
C:\work\myproject> cd ..
C:\work> del myproject
C:\work> rmdir myproject
この時点でこんな感じ。リビジョンは1です。
3.Subversion側のプロジェクトをhg clone
こんな感じになります。リビジョンは0です。0からはじまるようですが、これはSubversion側のリビジョン1に相当します。
4.Subversion側でcommit
Subversion側でソースを編集してコミットします。
C:\work> svn checkout file:///C:/home/repos/myproject myproject
C:\work> cd myproject
C:\work\myproject> echo Nice to meet you. >> readme.txt
C:\work\myproject> svn commit -m "Add a greeting."
5.hg側での取り込み
上記のSubversion側でのcommitをhg側に取り込みます。
Pull incoming changesetsボタンを押します。
そうするとSubversion側の変更が取り込まれます。
しかし、この時点ではローカルのファイルは書き変わりません。
headsが1でparentsが0という状況なのでupdateしてリビジョン1にします。これはSubversion側のリビジョン2に相当します。
これでローカルも書き変わります。
6.hg側でcommit
hg側でもファイルを追加してコミットしてみます。
C:\>cd myproject
C:\myproject>ls
readme.txt
C:\myproject>cat readme.txt
This is readme file.
Nice to meet you.
C:\myproject>echo Hello. > hello.txt
C:\myproject>ls
hello.txt readme.txt
C:\myproject>hg status
? hello.txt
C:\myproject>hg add hello.txt
C:\myproject>hg commit hello.txt -m "Add hello.txt."
Push outgoing changesetsボタンを押してSubversion側にpushします。
Subversion側はこんな感じになります。リビジョン3になりました。
いじょ。なかなか面白いですね。