web-dev-qa-db-ja.com

Mercurialの差分ツールとしてWinMergeを使用する方法

Mercurialの分散バージョン管理システムを使用していますが、独自の内部差分ツールの代わりにWinMergeを使用するように構成するにはどうすればよいのでしょうか。マージツールとしてすでにWinMergeを使用していますが、次のように入力するときにMercurialでWinMergeを使用する必要があります。

hg diff

それを行う方法はありますか、それともMercurialの内部差分ツールで立ち往生していますか?

19
quanticle

TortoiseHg FAQ から:

これらの行を個人のMercurial.iniファイルに追加します

 opts.winmerge =/e/x/u /wl

次に、グローバル設定ツールを実行します。 TortoiseHgタブで、Visual DiffCommandのドロップダウンリストにwinmergeが表示されているはずです。 winmergeを選択し、適用してから閉じます。

これと同じアプローチを使用して、ほぼすべてのビジュアル差分ツールを追加できますが、リリース0.8以降を使用している場合を除き、TortoiseHgで使用する場合は、差分ツールがディレクトリ差分をサポートできる必要があることに注意してください。

Joelは、CygwinでMercurialを実行する場合の解決策 ここ も提供しました。

ここでのWinMergeコマンドライン引数の説明 。概要:

  • /eEscキーを1回押すだけでWinMergeを閉じることができます
  • /x同一のファイルの比較を開始すると、(情報ダイアログを表示した後)WinMergeを閉じます
  • /u WinMergeがパス(左または右)を最近使用した(MRU)リストに追加しないようにします
  • /wl左側を読み取り専用として開きます
24
cschol

これが私にとっての仕組みです-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 ...」を使用できます。

7
renfeng

さて、先に与えられた答えは私に望ましい効果を与えません。それらは、リビジョンを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 から取得されます

3
alehro