2012-12-05 13 views
15

Hallo Ich versuche, als git mergetool zu verwenden opendiff, aber wenn ich mergetool laufen bekomme ich diese Fehlermeldung:Wie als Standard mergetool verwenden opendiff

Das Merge-Tool opendiff ist als ‚opendiff‘ nicht verfügbar

Was mache ich falsch? Es funktionierte vorher gut, aber seit ich eine neue Festplatte installiert habe, funktioniert es nicht mehr :(

+0

Welche Betriebssystem verwenden Sie? – Ikke

+0

Dies ist auf OSX Snow Leopard. – CorpusCallosum

+0

sauber opendiff und neu installieren? Ich hoffe, Sie haben es bereits versucht – Ram

Antwort

12

Stellen Sie sicher, dass Sie XCode installiert haben. (Wenn Sie git verwenden, verwenden Sie wahrscheinlich brauen, in diesem Fall haben Sie wahrscheinlich schon XCode . installiert)

eine einmalige Lösung git sagen, welches Werkzeug Sie verwenden möchten:

$ git mergetool -t opendiff 

Soweit Einrichtung opendiff als Standard-Tool, müssen Sie die „merge.tool einstellen "Variable in Ihrer Git-Konfigurationsdatei.

+0

Jeetworks Link ist tot –

+0

thx, Brian. Die Antwort wurde aktualisiert. – cogell

16

Sie benötigen opendiff als globaler merge.tool zu konfigurieren:

# 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 

Wenn Sie Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo bekommen, XCode öffnen und die Lizenz zu akzeptieren behebt das Problem

+0

Wann ist der 'xcode-select' Befehl notwendig? –

+0

Ich denke, wenn "Git" nicht bereits gefunden wird, aber es ist schwer zu verstehen, wie Sie in dieser Situation enden könnten. – Tommy

1

git unterstützt --dir-diff (d) ein Verzeichnis auszuführen diff, das in FileMerge gut aussieht. Es gibt jedoch ein paar kleinere Probleme bei der Verwendung von opendiff mit --dir-diff. opendiff hat kein --merge target preset, und git löscht die temporären Dateien zu früh, um Änderungen zu speichern. Mein Problem besteht darin, ein kleines Bash-Skript zu verwenden, um FileMerge aufzurufen. Ich nannte es 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

Nennen Sie es wie folgt aus:

git difftool -d -x gdiff