第3回 #TokyoMercurial に参加してきました (hgsubversionの紹介)
概要
第2回に引き続き参加してきました。 Mercurialに関する何かをやる会で、基本もくもく会です。
hgsubversion のテスト(Windows編)
最初は、TortoiseHg + hgsubversion がメインの動作環境なので、Windows上で動作させようとしたのだが、import mercurial でエラー。モジュールパスが足りないようです。
TortoiseHgの場合、C:\Program Files\TortoiseHg にパスを通せば良いということで、PYTHONPATHに設定。
$ python Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', 'c:\\Python26\\lib\\site-packages\\setuptools-0.6c11-py2.6.egg', 'c:\\Python26\\lib\\site-packages\\nose-0.11.0.dev-py2.6.egg', 'c:\\Python26\\lib\\site-packages\\coverage-3.5.1-py2.6-win32.egg', 'C:\\Program Files\\TortoiseHg', 'C:\\Windows\\system32\\python26.zip', 'c:\\Python26\\DLLs', 'c:\\Python26\\lib', 'c:\\Python26\\lib\\plat-win', 'c:\\Python26\\lib\\lib-tk', 'c:\\Python26', 'c:\\Python26\\lib\\site-packages'] >>> >>> import mercurial Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named mercurial >>>
んー、zipファイルにmercurialモジュールがあるようなのですが、ここで断念。
2012/04/18 追記
TortoiseHgとPython2.6.6がインストールされていれば、PYTHONPATHにC:\Program Files\TortoiseHg\Library.zipを指定すればimport mercurialできるようになるそうです。 #TokyoMercurial
@wonderful_pandaさんのつぶやきを試してみると、import mercurial はできるようになりました。しかし、import urllib でエラーが出るようになってしまいました
>>> import mercurial >>> >>> import urllib Traceback (most recent call last): File "<stdin>", line 1, in <module> File "urllib.pyo", line 26, in <module> File "socket.pyo", line 46, in <module> File "_socket.pyo", line 12, in <module> File "_socket.pyo", line 10, in __load ImportError: DLL load failed: %1 は有効な Win32 アプリケーションではありません。
https://gist.github.com/2399390/a91cb6f5fb16293231bf4262c0a26a0ab26ec9ff
ただ、python が 32bit で TortoiseHg が 64 bit なのでそのあたりの影響がありそうです。
hgsubversion のテスト(Linux編)
hgsubversion自体のテストだから、Linuxでもいいのでは?というLinuxでテストすればLinuxに必要なモジュールをインストールして hgsubversion のテストを行いました。
- インストール
$ sudo apt-get install build-essential apache2-dev libsvn-dev libaprutil1-dev
- nose によるテスト実行
tkondou@zion3:~/hgext/hgsubversion$ nosetests .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. ---------------------------------------------------------------------- Ran 494 tests in 417.032s OK tkondou@zion3:~/hgext/hgsubversion$
hgsubversion について
職場はSubversionが基本なので、SubversionのクライアントとしてMercurialを使うことができるすばらしいエクステンション hgsubversionについて紹介。
hgsubversion のインストール方法や、基本的に使用方法、制限事項などをまとめた発表スライドは下記にアップしています。
スライドについて流れの中で質問がありいくつか不明点があるので記しておきます。
- hg側でブランチを作った場合、SVN反映されないが、pushはできるのかどうか
hg qpush で rej されてしまう場合の対処について
懇親会では、途中で作業しかけのコミットをhg qimport 、hg qpop にて中断し、別の緊急作業を実施し、 hg commit , hg pullで他の人の成果を取り込み、hg rebase, hg push 後、 中断していた hg qpush した際、コンフリクトがあると rejectされてしまう。本当はマージ(rebase)したいのだけどどうすればいいんだろうという悩みをMercurialの神に相談していました。
- 神:作業ごとにリポジトリを分ければいいのでは?
- ...(ん〜、めんどい←失礼)
- 神:作業ごとにブランチを作ればいいのでは?
- そうですね。名前付きブランチはまだ積極的に使ってないですが考えています。
- 神: mq なら secret にすれば push されないよ
- おおー
結論からいうと、やりかけの作業を qimport した際、 phase を secret にしておいて、緊急作業を行えば、secret の changeset は push されないため、気にせず割り込み作業ができそうという結論に至りました。フジワラさんありがとうございました。
また、MQ に import した際、デフォルトを secret にすることもできるとのことです。