Mercurialの分散バージョン管理システムを使用していますが、独自の内部差分ツールの代わりにWinMergeを使用するように構成するにはどうすればよいのでしょうか。マージツールとしてすでにWinMergeを使用していますが、次のように入力するときにMercurialでWinMergeを使用する必要があります。
hg diff
それを行う方法はありますか、それともMercurialの内部差分ツールで立ち往生していますか?
TortoiseHg FAQ から:
これらの行を個人のMercurial.iniファイルに追加します
opts.winmerge =/e/x/u /wl
次に、グローバル設定ツールを実行します。 TortoiseHgタブで、Visual DiffCommandのドロップダウンリストにwinmergeが表示されているはずです。 winmergeを選択し、適用してから閉じます。
これと同じアプローチを使用して、ほぼすべてのビジュアル差分ツールを追加できますが、リリース0.8以降を使用している場合を除き、TortoiseHgで使用する場合は、差分ツールがディレクトリ差分をサポートできる必要があることに注意してください。
Joelは、CygwinでMercurialを実行する場合の解決策 ここ も提供しました。
/e
Escキーを1回押すだけでWinMergeを閉じることができます/x
同一のファイルの比較を開始すると、(情報ダイアログを表示した後)WinMergeを閉じます/u
WinMergeがパス(左または右)を最近使用した(MRU)リストに追加しないようにします/wl
左側を読み取り専用として開きますこれが私にとっての仕組みです-tortoisehg以外の純粋なMercurialコマンドライン
まず、ファイルを編集します(64ビットウィンドウで)
C:\ Program Files(x86)\ Mercurial\Mercurial.ini
[extensions]
; must uncomment this line
extdiff =
[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl
次に、「hg diff ...」の代わりに「hgwinmerge ...」を使用できます。
さて、先に与えられた答えは私に望ましい効果を与えません。それらは、リビジョンをdiffにし、その場で編集することを許可しません(つまり、TortoiseSVNでボックスから利用できるのと同じ機能を意味します)。これを行うために、Mercurial.iniにこのセクションを追加しました。
[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True
これは http://blog.stevehorn.cc/blog/easy-Mercurial-visual-diff-between-two.html から取得されます