Xcode 4のmergetoolをスタンドアロンで使用する方法


8

コンソールでgitマージを行う必要がある場合があります。これまでは、競合を解決するために、Xcode 3のFileMergeを使用していました( 'opendiff'コマンドを使用して、コンソールで開くことができます)。競合が発生した場合は、競合するファイルごとにopendiffを自動的に呼び出す「git mergetool」を使用します。

ただし、Xcode 4は、競合を解決するためのより優れたmergetoolコンポーネントを備えています。このコンポーネントはスタンドアロンではなく、Xcode 4実行可能ファイルの一部であると思います。マージされたファイルをプレビューし、ケースバイケースでマージされたコードを直接編集できます。これにより、複雑な競合のマージが非常に速く、満足できるものになります。

ターミナルから「git mergetool」を呼び出すときにXcode 4 mergetoolを使用する方法はありますか?

Xcode 4バンドル内にこのツールの実行可能ファイルが見つかりません。これを達成するハックは大歓迎です。


他の誰かがこの機能に興味がある場合:それを行う公式な方法はないようです。バグレポートを通じて機能のリクエストをアップルに提出しました。こちらがレーダーです。それはかなり絶望的だと思いますが、あなたは決して知りません。興味のある方は、同様のバグレポートをアップルに提出して興味を示すことをお勧めします。
Ricardo Sanchez-Saez 2013

回答:


4

opendiffは2つのファイル名引数と、3つ目のファイル名を持つ--ancestorパラメーターを取り、3方向の差分を生成します。競合解決に使用する出力ファイルを指定する--mergeパラメーターを使用します。

だから行く:

[mergetool "opendiff"]
    cmd = "opendiff \"$LOCAL\"  \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
    tool = opendiff

これにより、マージの競合がある場合、gitはopendiffをマージツールとして使用するようになります。

とは言っても、SourceGearのDiffMergeは非常に好まれます。SourceGearは、より優れた、単語指向の競合解決を行う、無料の差分および3者間マージツールです。また、DiffMergeのドキュメントには、gitをデフォルトの比較およびマージツールにするためにgitに指示する内容があります。


助けてくれてありがとう、でもFilemerge / opendiffは私が使おうとしているものではありません。また、私はDiffMerge(およびその価値についてはDeltaWalker)を試しましたが、そのUIはあまり好きではありません。万華鏡は素晴らしいですが、マージ/編集機能はなく、違いが表示されるだけです。
Ricardo Sanchez-Saez、2011

Xcode 4がFileMergeをラップしているだけだと確信しています。私は万華鏡について同じ失望を発見しました。
ダン・レイ

Xcode 4はFileMergeをラップしていません。FileMergeでは、マージされたファイルを編集できません。競合ごとに使用するマージのどちら側を選択するだけです。Xcode 4のプル競合リゾルバーでは、競合する行を編集し、希望どおりの方法でファイルをプルできます。その上、UIはFilemergeとは完全に異なります。
Ricardo Sanchez-Saez 2011

1
Kaleidoscope 2ベータが最近リリースされ、マージされたファイルのインライン編集が可能になりました。それをチェックしてください、それはかなり良いです。それが欠けている唯一のことは、競合の異なる色です(それらのコード置換と同じ色を使用します)。
Ricardo Sanchez-Saez

Kaleidoscopeを数か月使用した後、一般的には良好ですが、特にXcode 4.xの競合解決コンポーネントと比較すると、まだバグが多いか混乱していると言えます。Appleが予期しないことをして、たとえばTowerから起動可能なスタンドアロンツールとして実装することを引き続き望んでいます。;-)
Ricardo Sanchez-Saez 2013年

0

FileMerge内の(非常に基本的な)テキストエディターで編集するには、エディターウィンドウを開きます。FileMergeでエディターを開くには、中央のdiff列の下にあるドットを上にドラッグしてエディターペインを開きます。


-1

これは私のために働いた

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""

2
Opendiffは、Xcode 3.xがマージに使用したものです。私の質問は、完全に異なるツールであるXcode 4.xマージコンポーネントに関するものでした(opendiff / filemergeとは異なり、結果のファイルをインライン編集できます)。とにかくありがとう。
Ricardo Sanchez-Saez
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.