web-dev-qa-db-ja.com

opendiffをデフォルトのmergetoolとして使用する方法

こんにちは、opendiffをgit mergetoolとして使用しようとしていますが、mergetoolを実行すると、次のエラーメッセージが表示されます。

マージツールopendiffは「opendiff」として使用できません

何が悪いのですか?以前は問題なく動作していましたが、新しいハードドライブを取り付けたため、動作しなくなりました:(

20
CorpusCallosum

Opendiffをグローバルなmerge.toolとして設定する必要があります:

# locate xcode utilities
Sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

# set "opendiff" as the default mergetool globally
git config --global merge.tool opendiff

あなたが取得する場合 Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via Sudo、XCodeを開き、ライセンスに同意すると問題が解決します

25
Kevin Leary

XCodeがインストールされていることを確認してください。 (gitを使用している場合は、おそらくbrewを使用しています。その場合、おそらくすでにXCodeがインストールされています。)

1回限りの解決策は、使用するツールをgitに指示することです。

$ git mergetool -t opendiff

Opendiffをデフォルトのツールとして設定する限り、git構成ファイルで「merge.tool」変数を設定する必要があります。

15
cogell

gitは--dir-diff(-d)をサポートして、ディレクトリ比較を実行します。これはFileMergeで見栄えがします。ただし、-dir-diffでopendiffを使用すると、いくつかの小さな問題があります。 opendiffには--mergeターゲットプリセットがありません。gitは一時ファイルをすぐにドロップして変更を保存できません。私の回避策は、小さなbashスクリプトを使用してFileMergeを呼び出すことです。 gdiffと呼びました。

#!/bin/bash
# find top level of git project
dir=$PWD
until [ -e "$dir/.git" ]; do
  if [ "$dir" == "/" ]; then
    echo "Not a git repository" >&2
    exit 1;
  fi
  dir=`dirname "$dir"`
done
# open fresh FileMerge and wait for termination
open -a FileMerge -n -W --args -left "$1" -right "$2" -merge "$dir"

https://Gist.github.com/miner/e73fc98a83a8fe05d9ef000d46d68a9f

次のように呼び出します。

git difftool -d -x gdiff

1
miner49r