トップ > 興味のあること > コンピュータ > ソフトウェア

更新情報

2018年8月6日 Officejet 6700黒インク補充
2018年7月12日 ソラチカカード与信枠拡大
2018年7月1日 ゴルフトゥーランにガソリン給油
2018年6月28日 au walletクレジットカード到着
2018年6月23日 10.5インチiPad Pro SIMロック解除
2018年6月17日 au walletクレジットカード申込
2018年5月31日 EOS-1V販売終了
2018年5月1日 nginxの設定を変更
2018年4月30日 apacheをバックエンドに
2018年3月29日 PROMASTER停止
モッピー!お金がたまるポイントサイト
日々の生活にhappyをプラスする|ハピタス

Mercurial

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

2008年3月13日

バージョン管理システムの一つ。 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はまだ試していない。

2009年5月22日

httpベースのpush

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を使えるようにした。 はずなんだが、まだテストしていない。

diffツール

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では、 古いリビジョンとの差分をとる方法がわからなかった……。

Tortoiseの喧嘩

TortoiseSVNとTortoiseHgを同時に使うと、 なぜかTortoiseHgのリポジトリにしたフォルダ以下の表示が遅くなる。 TortoiseSVNのキャッシュらしきプロセスが一所懸命に動いてるようなのだが、 原因は不明。 まあ、どっちもエクスプローラーの右メニューに組み込まれるから、 なんか喧嘩しているのかも。 とりあえずTortoiseHgをアンインストールして、Mercurialにする。

2009年5月24日

FreeBSDでもMacOS Xでも問題ないのに、 Windows XPだとhg cloneで200MBにちょっと足りないくらいのファイルを転送する時点でこける。 どうやら、実メモリを使い切った時点でout of memoryになるようだ。 何のための仮想メモリなんだか。 そもそもFreeBSDやMacOS Xでは実メモリを使い切らないし。 やっぱり、OSとしてはWindowsってダメダメなのかなあ。

2010年2月2日

久しぶりに使ってみたら、 Windowsが7になったせいなのか、 Mercurialのバージョンが1.4.2になったせいなのか、 200MBを超えるファイルでも問題なくコピーできた。

とはいえ、 2GBを超えるリポジトリを相手にブランチを切ったりマージしたすると、 かなり待たされることがある。