23

Apple の FileMerge プログラムを Mercurial のマージ ツールとして機能させるにはどうすればよいですか? ホーム ディレクトリに .hgrc ファイルのセットアップがあり、FileMerge をマージ プログラムとして構成したいだけです。

4

5 に答える 5

28

hg wikiで説明されているように、これはさまざまなバージョンの hg で機能しました。

  • のどこかにスクリプトを作成し$PATHます/usr/local/bin
$ vim /usr/local/bin/opendiff-w

#!/bin/sh
# opendiff returns immediately, without waiting for FileMerge to exit.
# Piping the output makes opendiff wait for FileMerge.
opendiff "$@" | cat
  • 次のセクションを に追加します~/.hgrc
[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w

[merge-tools]
filemerge.executable = opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output

[extensions]
extdiff = 

としてお使いいただけるようになりました$hg opendiff

于 2009-08-20T07:55:47.947 に答える
2

更新: Mercurial wiki にFileMerge に関するページがあります。最初にそれを読んでください。

使用しようとはしていませんFileMergeが、一般的な概要が役立つ場合があります。知りたいことのほとんどは、Mercurial wiki のMergeProgramページに記載されています。短いバージョンでは、典型的な選択肢は次のとおりです。

必要なマージ ツールを指すように環境変数を設定しHGMERGEます。

または、以下を に追加します.hgrc

 [ui]
 merge = /path/to/toolname

 [merge-tools]
 toolname.args = $base $local $other

重要なのは、マージ ツールが 3 つの引数を取る必要があるということです。ベース リビジョン、ローカルの変更、および他のブランチからの変更です。最初の構成を使用してツールを指定し、2 番目の構成を使用して引数の受け取り方法を指定します。

于 2009-08-20T05:55:43.803 に答える
1

リンクされているドキュメントはどれも、変更なしでは機能しませんでした。最終的に私がやったのは、公式の指示とhttps://www.mercurial-scm.org/wiki/TipsAndTricksの「Vimをファイルマージプログラムとして使用する」の組み合わせでした。この回答で説明されている opendiff-w スクリプトを作成し(ただし、hgvdiff という名前を付けました)、以下を .hgrc に入れました。

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = /usr/local/bin/hgvdiff

[merge-patterns]
** = filemerge

[merge-tools]
filemerge.executable = /usr/local/bin/hgvdiff
filemerge.args = $local $other -ancestor $base -merge $output
filemerge.checkchanged = true
filemerge.gui = true

[extensions]
extdiff =

This is moderately functional, though it sometimes performs the check for whether a file was changed prematurely, leading to a bunch of:

 output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged
was merge successful (yn)? n

when you close FileMerge.

于 2013-03-19T00:33:51.677 に答える
0

これが私がそれを修正した方法です:

/usr/local/bin/opendiff-wいっぱいに作成:

#!/bin/sh
# opendiff returns immediately, without waiting for FileMerge to exit.
# Piping the output makes opendiff wait for FileMerge.
opendiff "$@" | cat

次に、次のコマンドを実行しました。sudo chmod +x /usr/local/bin/opendiff-w

~/.hgrc次に、次の追加で編集します。

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w

[merge-tools]
filemerge.executable = /usr/local/bin/opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output

[extensions]
extdiff = 

次に、次のコマンドを実行して、機能するかどうかを確認しました。hg opendiff

ただし、次のエラーが発生しました。

exception raised trying to run FileMerge: launch path not accessible

それを修正するために、次のコマンドを実行しました。

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/

これで動作し、FileMerge が開くはずです。

================================================== ==================

TorsoiseHg for Mac を使用している場合、FileMerge を使用するために必要なことは、Resolve Conflict ウィンドウが表示されたら、検出されたマージ/差分ツールから filemerge を選択し、Tool Resolve を選択することだけです。

ここに画像の説明を入力

お役に立てれば。

于 2013-10-24T19:07:09.097 に答える
-1

試したことはありませんが、アプリ バンドルだけでなく、FileMerge 実行可能ファイルを指す必要があるに違いありません。

そう:

[ui]  
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge
于 2009-08-20T06:00:36.897 に答える