Die Verwendung eines externen Merge-Tools funktioniert auf SourceTree nicht

Ich laufe OS X.10und Xcode 7.SourceTree 2

Wenn ich eine Datei mit Konflikt auswähle und Launch an external merge tool, erscheint ganz kurz ein Fenster ... und dann passiert nichts .

Ich habe es versucht (siehe diese Hilfeseite ), sudo ln -s /Developer/usr/bin/opendiff /usr/bin/opendiffaber es hat nicht funktioniert (ich habe die Meldung erhalten ln: /usr/bin/opendiff: File exists).

Was soll ich machen?

PS:

Hier ist ein Bild des Fensters, das kurz erscheint.

Geben Sie hier die Bildbeschreibung ein

PPS:

Hier sind die SourceTree-Einstellungen:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass die Hilfeseiten sagen, dass es für Xcode 4.2 ist und vor ein paar Jahren geschrieben wurde - welche Version von Xcode haben Sie? Auch alles, was sagt, dass Dinge in /usr/bin geändert werden, ist eine verdächtige Quelle und funktioniert jetzt nicht in El Capitan. Der Fehler liegt auch daran, dass Sie bereits /usr/bin/opendiff haben, sodass die gesamte Änderung sinnlos ist
Haben Sie Xcode ausgeführt und den Lizenzbedingungen zugestimmt?
Ich verwende tatsächlich Xcode 7! (Aber macht das wirklich einen Unterschied?)
Hast du Kommandozeilen-Tools installiert? Was zeigt /usr/bin/opendiff, wenn es im Terminal ausgeführt wird
2015-11-04 17:11:32.360 opendiff[10848:132187] too few arguments 2015-11-04 17:11:32.365 opendiff[10848:132187] usage: opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]

Antworten (2)

Mein Problem war, dass ich eine frühere Version von Xcode ausführte und die Befehlszeilentools nicht eingestellt hatte.

Wählen Sie die Tools in den Einstellungen von Xcode -> Speicherorte:

Geben Sie hier die Bildbeschreibung ein

Führen Sie dann diesen Befehl im Terminal aus, um dies zu überprüfen:

git config --global -l

Der Befehl git druckt neben anderen Konfigurationsinformationen den Pfad für das Diff-Tool aus. Wenn es nicht konfiguriert ist, wird es einen Fehler mit etwas in der Art des Folgenden ausgeben:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),

Angenommen, Sie verwenden die neueste Version von SourceTree (Version 2.0.5.5 (2.0.5.5))

Versuchen Sie Folgendes manuell zu Ihrer .gitconfig hinzuzufügen (oder überprüfen Sie, ob SourceTree genau diese Zeilen eingefügt hat)

[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true

Oder Sie könnten einfach "Sourcetree erlauben, Ihre globalen Mercurial- und Git-Konfigurationsdateien zu ändern" aktivieren. in Einstellungen -> Registerkarte Allgemein

Diese Zeilen werden automatisch aktualisiert