「入門Mercurial Linux/Windows対応」発売中(詳細は「執筆情報」参照)


TortoiseHg からの利用

本ページでは、TortoiseCVSTortoiseSVN と同様の UI を、 Mercurial リポジトリで使用可能にする TortoiseHg に関する情報をまとめてみました。

インストール&設定

インストールに関しては、 TortoiseHg のサイトからインストーラをダウンロードして実行すれば、 特に問題なくインストールできる筈です。

TortoiseHg には Windows バイナリ版の Mercurial(= hg.exe コマンド)が同梱されていますので、 TortoiseHg を使用するのであれば、 Cygwin Python スクリプト版との併用は避けたほうが良いでしょう。

なお、hgrc の man における "FILES" 節では、 Windows バイナリ版での設定通用範囲が:

と記述されていますが、実際には:

ですので、設定の際には注意しましょう。

hg コマンドとの対応

TortoiseHg のメニュー表示は概ね対応する hg コマンド名に類するものですが、 一部表現が異なるものがある(CVS や Subversion 由来なのでしょうか?)ため、 構成管理の一般的な用語に馴染みの無い人などは、 所望の機能が使えないと思い込んでしまう場合もあるようです。

以下に TortoiseHg 0.3 版時点でのメニュー表示と hg コマンドの対応関係を示します。

メニュー表記 対応する hg コマンド
View File Status status
Visual Diff diff
Add Files add
Remove Files remove
Undo Changes revert
Annotate Files annotate
Checkout Revision update -r リビジョン
Merge Revisions merge -r リビジョン
View Changelog log
Search Repository grep
Synchronize 別途表示されるダイアログ上で以下を選択
  • push
  • pull
  • incoming
  • outgoing
Recovery 別途表示されるダイアログ上で以下を選択
  • update --clean
  • rollback
  • recover
  • verify
Web Server serve
Create Clone clone
Settings showconfig

Cygwin ssh によるリポジトリ連携

TortoiseHg 利用の際には hg コマンドが Explorer 経由で起動されるため、 プロセス起動順序の関係上、 その延長で起動される ssh クライアントからは win-ssh-agent が設定する環境変数を参照することができず、 結果として win-ssh-agent + Cygwin ssh を利用したリポジトリ連携 (e.g.: push/pull)ができません。

注意: win-ssh-agent 起動後に開いた Cygwin コンソール (ないし所謂「DOS 窓」)から TortoiseHg 同梱の hg コマンドを起動した場合は、 win-ssh-agent の設定した環境変数を参照可能ですので、 win-ssh-agent + Cygwin ssh を利用したリポジトリ連携が可能です。

たとえこの状況での連携が機能している場合であっても、 Explorer から TortoiseHg を利用した場合には、 win-ssh-agent + Cygwin ssh によるリポジトリ連携は機能しません。

Tortoise〜を利用する場合、 PuTTY を使用するが一般的(TortoiseHg にも同梱されています)なようですが、 Windows レジストリから読み込んだ環境変数を取り込む win-ssh-wrap を使用すれば、 TortoiseHg を win-ssh-agent + Cygwin ssh と連携させることができます。

win-ssh-wrap のインストールを終えたなら、 設定ファイルに対して:

[ui]
ssh = C:\cygwin\root\usr\local\bin\w-ssh.exe
ssh クライアントの指定

上記の記述を追加します。

記述追加先となる設定ファイルは、 各自の事情に応じて:

のいずれかを選んでください。

上記の記述例は、C:\cygwin\root が Cygwin インストール先のルート位置、 win-ssh-wrap のビルドにより生成された *.exe ファイルのインストール先が (Cygwin 上における)/usr/local/bin 配下の場合の記述です。 各自の環境・インストール先に応じて適宜記述内容を変更してください。 また、Windows バイナリ版向けの設定ですから、 パス区切りにはバックスラッシュを用いてください。

なお、 ssh のマニュアル上は、「SSH_ASKPASS 環境変数が設定されている場合は、 当該プログラムを起動することでパスフレーズを取得」できることになっていますが、 この仕組みはCygwin 環境では機能しません。 そのため、ssh-add していない秘密鍵が必要な ssh 接続を行った場合、 ssh プロセスがパスフレーズ入力待ちでブロックしてしまいます。

Windows タスクマネージャ上で CPU ・ネットワーク共に使用している兆候が見られないにも関わらず、 TorotiseHG 経由でのリモートリポジトリとの連携が完了しない場合、 ネットワークやサーバの性能が余程低く無い限りは、 ssh がブロックしてしまっている可能性があります。 この場合は、タスクマネージャから ssh プロセスを終了させたうえで、 当該リポジトリとの連携に対するパスフレーズ入力の要否を、 コマンドラインでの ssh 実行により確認してください。


次節「extension」へ