2024年11月23日 | ノート定期点検 |
2024年1月22日 | セゾンゴールドアメックスカードの変化 |
2024年11月20日 | DS-C480W購入 |
2024年11月18日 | EOS R7ファームウエアアップデート |
2024年11月17日 | PX-M730Fのシアンインク交換 |
2024年10月19日 | 腕時計のファームウエア |
2024年10月5日 | RF-S 10-18mm F4.5-6.3 IS STM購入 |
2024年10月3日 | 三菱UFJニコスカード到着 |
2024年9月28日 | 三菱UFJニコスカード申込 |
2024年9月23日 | 第10世代iPad購入 |
http://www.selenic.com/mercurial/wiki/index.cgi/Mercurial
http://www.selenic.com/mercurial/wiki/index.cgi/JapaneseTutorial
http://bitbucket.org/tortoisehg/stable/wiki/Home
http://bitbucket.org/kuy/thg-ja/wiki/Home
http://gihyo.jp/dev/feature/01/mercurial
バージョン管理システムの一つ。 CVSやSubversionがサーバー/クライアントシステムなのに対して、 P2Pになっている。 ただ機能的にP2Pだからといって運用までP2Pにすると、 同期の手間が最悪n(n-1)になってイヤになる。 3台でも6回の同期作業が必要になるのだ。 実際にはマスターとなるコンピュータを決めておき、 そこと同期を取る運用が一般的なようだ。
FreeBSDならPortsで、 WindowsやMacOS Xならバイナリパッケージが用意されている。 インストール後は適当なディレクトリでhg initを実行すると、 そこがリポジトリになる。 複数のコンピュータで同期を取るつもりなら、 これはマスターとなるコンピュータで1回だけ実行すればいい。 他のマシンにリポジトリをコピーするときは、 コピーする側からhg clone src dst等としてcloneコマンドを実行する。 確認した範囲では、ソースとしては普通のファイルシステム、 http、sshが使えるようだ。 リポジトリができてしまえば、 後はCVSやSubversionと同じようにaddしてcomiitしてupdateのサイクルである。 ただし、この記録はローカルなリポジトリにしか残らない。
今までのバージョン管理システムにないのが、pushとpullコマンド。 他のリポジトリから差分情報を入手するのがpullで、 送りつけるのがpush。 これで他のリポジトリと同期を取るわけだ。 特にパラメータを与えずhg pushとやると、 最初にcloneしたリポジトリにアクセスに行く。 もちろん、明示的にリポジトリを指定することもできる。 自分が書き込み権限を持っているファイルシステムに直接アクセスしたり、 ssh経由でアクセスする分には問題なかった。 しかし、マスター側でhg serveとして動かしたWebサーバー相手にhttp経由だと、 sslが必要だと言われてpushできなかった。
tagやbranchはまだ試していない。
mercurial.iniとか.hg/hgrcに
[web] push_ssl = false allow_push = *
としてからhg serveを実行すると、 pushも受け付けてくれる模様。
標準のkdiffは漢字コードをちゃんと認識できないようだ。 なので、 mercurial.iniとか.hg/hgrcに
[merge-tools] winmergeu.args = /e /ub /dl other /dr local $other $local $output winmergeu.regkey = Software\Thingamahoochie\WinMerge winmergeu.regname = Executable winmergeu.fixeol = True winmergeu.checkchanged = True winmergeu.gui = True
と書いてWinMergeを使えるようにした。 はずなんだが、まだテストしていない。
Mercurialをインストールしてコマンドプロンプトから使うと、 diffは昔懐かしいテキストベースのものになる。 なので
[extensions] hgext.extdiff = [extdiff] cmd.wmdiff = d:\ProgramFiles\WinMerge\WinMergeU.exe opts.wmdiff = /r /r /x /ub
として hg wmdiff -r 2 hoge とかやると、 WinMergeで変更点を見られる。 TortoiseHgでは、 古いリビジョンとの差分をとる方法がわからなかった……。
TortoiseSVNとTortoiseHgを同時に使うと、 なぜかTortoiseHgのリポジトリにしたフォルダ以下の表示が遅くなる。 TortoiseSVNのキャッシュらしきプロセスが一所懸命に動いてるようなのだが、 原因は不明。 まあ、どっちもエクスプローラーの右メニューに組み込まれるから、 なんか喧嘩しているのかも。 とりあえずTortoiseHgをアンインストールして、Mercurialにする。
FreeBSDでもMacOS Xでも問題ないのに、 Windows XPだとhg cloneで200MBにちょっと足りないくらいのファイルを転送する時点でこける。 どうやら、実メモリを使い切った時点でout of memoryになるようだ。 何のための仮想メモリなんだか。 そもそもFreeBSDやMacOS Xでは実メモリを使い切らないし。 やっぱり、OSとしてはWindowsってダメダメなのかなあ。
久しぶりに使ってみたら、 Windowsが7になったせいなのか、 Mercurialのバージョンが1.4.2になったせいなのか、 200MBを超えるファイルでも問題なくコピーできた。
とはいえ、 2GBを超えるリポジトリを相手にブランチを切ったりマージしたすると、 かなり待たされることがある。