2009-01-05(Mon) [長年日記]
_ [ubuntu][mercurial]hgimportsvn, hgpullsvn
mercurialでやってみたかったのが、
- 中央リポジトリ...Subversion, 手元のリポジトリ...mercurial
- リモートへのデプロイにmercurialを使う
- デプロイ先での変更もmercurialに入れて、後で集約する
の3つ。で、最初のやつはhgsvnとかいうのを使うとよいそうなので、早速インストール。
$ sudo apt-get install hgsvn
webistranoを持ってきてみる。
$ hgimportsvn http://labs.peritor.com/svn/webistrano/trunk webistrano
この状態だとソースがなんか古いなあ...hgpullsvnしてみるか?
$ hgpullsvn ... * svn 'up' '--ignore-externals' '-r' '170' '.' * hg '--encoding' 'utf-8' 'ci' '-m' '[svn] breadcrumb enhancements' '-u' 'jweiss' '-d' '2008-09-29 18:55:39' * hg '--encoding' 'utf-8' 'tag' '-l' 'svn.170' * svn 'up' '--ignore-externals' '-r' '171' '.' * hg '--encoding' 'utf-8' 'addremove' '-X' '.svn' '-X' '**/.svn' 'app/views/deployments/_list_item.html.erb' * hg '--encoding' 'utf-8' 'ci' '-m' '[svn] new deployment list' '-u' 'jweiss' '-d' '2008-09-29 20:22:15' * hg '--encoding' 'utf-8' 'tag' '-l' 'svn.171' ...
え!?リポジトリの履歴を全部持ってきてるってことか!?てことは最初のhgimportsvnってのは、
- svn のリビジョン1を持ってきて
- ワークディレクトリに展開
hgpullsvnで
- リポジトリの履歴を順次持ってくる
ってこと?うーん。今回はそこまでしなくてもいいんだけどな。
単にこういうのでもいいのかな?
- svn co URL wd でチェックアウトする
- cd wd; hg init でmercurialの初期化
- .svn を無視してimport(←やりかたわからん imkk)
(追記) いやいや、svn up はいいとして、mercurial側には都度都度add, removeしなきゃならんのだから手動は厳しいか。やっぱりhgpullsvnか...
(追記2) hg には addremoveっていう一発でやるコマンドがあるのね。なるほど〜
(追記3) hgimportsvnでrevision1を持ってくるのは、trunk(というか、分岐元がないから)だからみたい。svnのブランチを指定すると、ブランチの根元を持ってきた模様。その後hgpullsvnで追いつくと。
(追記4) はっ。ということはsvnのタグを指定してもってくりゃそれでおkなんじゃねーの?hgimportsvnはsvn側のブランチ名と同じhg のブランチを作るようだから、同じhgのリポジトリで複数共存させられるのかも...
_ [ubuntu][mercurial] hgwebdir
~/public_html でCGIが使える、という設定になっている、という前提で。
- /etc/apache2/mods-enabled/userdir.conf
- /etc/apache2/mods-enabled/mime.conf
あたりを設定後、sudo /etc/init.d/apache2 restart で。
$ cp/usr/share/doc/mercurial/examples/hgwebdir.cgi ~/public_html/src/index.cgi $ cd ~/public_html/src $ vi .htaccess Options +ExecCGI DirectoryIndex index.cgi <Files hgweb.config> deny from all </Files> $ vi hgweb.config [paths] webistrano = /home/kog/development/webistrano redmine-0.8 = /home/kog/development/redmine-0.8 $ vi ~/development/webistrano/.hg/hgrc [web] allow_push = allow_archive = zip,gz,bz2 style = gitweb
_ [mercurial]svnのブランチをhgimportしてみる
kog@ubu1:~/development/webistrano$ hgimportsvn http://labs.peritor.com/svn/webistrano/branches/1.4/ . * svn 'info' '--xml' 'http://labs.peritor.com/svn/webistrano/branches/1.4' * svn 'log' '--xml' '-v' '--stop-on-copy' '-r' '1:202' '--limit' '1' 'http://labs.peritor.com/svn/webistrano/branches/1.4' SVN branch was copied from '/trunk' at rev 194 * hg '--encoding' 'utf-8' 'branch' '1.4' * svn 'checkout' '-q' '-r' '202' 'http://labs.peritor.com/svn/webistrano/branches/1.4' './tmpPKPtte' * svn 'status' '--xml' '-v' '--ignore-externals' '/home/kog/development/webistrano/tmpPKPtte' * hg '--encoding' 'utf-8' 'addremove' '-X' '.svn' '-X' '**/.svn' 'vendor/plugins/net-ssh-2.0.2/test/transport/test_server_version.rb' 'vendor/rails/acti ... ... * hg '--encoding' 'utf-8' 'ci' '-m' '[svn] create 1.4 branch' '-u' 'jweiss' '-d' '2008-11-04 04:05:33' * hg '--encoding' 'utf-8' 'tag' '-l' 'svn.202' Traceback (most recent call last): File "/usr/bin/hgimportsvn", line 8, in <module> load_entry_point('hgsvn==0.1.4', 'console_scripts', 'hgimportsvn')() File "/var/lib/python-support/python2.5/hgsvn/run/hgimportsvn.py", line 172, in main os.rename(os.path.join(checkout_dir, d, ".svn"), os.path.join(d, ".svn")) OSError: [Errno 39] Directory not empty kog@ubu1:~/development/webistrano$ hg tip changeset: 189:826d4254d8c9 branch: 1.4 tag: tip tag: svn.202 user: jweiss date: Tue Nov 04 04:05:33 2008 +0900 summary: [svn] create 1.4 branch kog@ubu1:~/development/webistrano$ hg branches 1.4 189:826d4254d8c9 trunk 188:613046ddf337 (inactive) kog@ubu1:~/development/webistrano$ hg update -C trunk 5 files updated, 0 files merged, 0 files removed, 0 files unresolved kog@ubu1:~/development/webistrano$ hg branches 1.4 189:826d4254d8c9 trunk 188:613046ddf337 (inactive) kog@ubu1:~/development/webistrano$ hg tip changeset: 189:826d4254d8c9 branch: 1.4 tag: tip tag: svn.202 user: jweiss date: Tue Nov 04 04:05:33 2008 +0900 summary: [svn] create 1.4 branch
一応これtrunkに向けてupdate -C できてると思うんだけど、hg branchesだとinactive?これどうなってるんだろ?
(追記) hgpullsvnして、ブランチを変えてさらにhgpullsvn。
kog@ubu1:~/development/webistrano$ hgpullsvn * svn 'info' '--xml' '.' * svn 'info' '--xml' 'http://labs.peritor.com/svn/webistrano/trunk' No revisions after 205 in SVN repo, nothing to do kog@ubu1:~/development/webistrano$ hg update -C 1.4 5 files updated, 0 files merged, 0 files removed, 0 files unresolved kog@ubu1:~/development/webistrano$ hgpullsvn * svn 'info' '--xml' '.' * svn 'info' '--xml' 'http://labs.peritor.com/svn/webistrano/trunk' No revisions after 205 in SVN repo, nothing to do kog@ubu1:~/development/webistrano$ hg update -C trunk 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
webistrano側のリビジョンが上がったらためしてみますかね。