Apple の FileMerge プログラムを Mercurial のマージ ツールとして機能させるにはどうすればよいですか? ホーム ディレクトリに .hgrc ファイルのセットアップがあり、FileMerge をマージ プログラムとして構成したいだけです。
5 に答える
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
。
更新: Mercurial wiki にFileMerge に関するページがあります。最初にそれを読んでください。
使用しようとはしていませんFileMerge
が、一般的な概要が役立つ場合があります。知りたいことのほとんどは、Mercurial wiki のMergeProgramページに記載されています。短いバージョンでは、典型的な選択肢は次のとおりです。
必要なマージ ツールを指すように環境変数を設定しHGMERGE
ます。
または、以下を に追加します.hgrc
。
[ui]
merge = /path/to/toolname
[merge-tools]
toolname.args = $base $local $other
重要なのは、マージ ツールが 3 つの引数を取る必要があるということです。ベース リビジョン、ローカルの変更、および他のブランチからの変更です。最初の構成を使用してツールを指定し、2 番目の構成を使用して引数の受け取り方法を指定します。
リンクされているドキュメントはどれも、変更なしでは機能しませんでした。最終的に私がやったのは、公式の指示と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.
これが私がそれを修正した方法です:
/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 を選択することだけです。
お役に立てれば。
試したことはありませんが、アプリ バンドルだけでなく、FileMerge 実行可能ファイルを指す必要があるに違いありません。
そう:
[ui]
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge