El uso de una herramienta de combinación externa no funciona en SourceTree

Estoy corriendo OS X.10, Xcode 7y SourceTree 2.

Cuando selecciono un archivo en conflicto y Launch an external merge toolaparece una ventana muy brevemente... y luego no pasa nada .

Lo intenté (consulte esta página de ayuda ) sudo ln -s /Developer/usr/bin/opendiff /usr/bin/opendiffpero no funcionó (recibí el mensaje ln: /usr/bin/opendiff: File exists).

¿Qué tengo que hacer?

PD:

Aquí hay una imagen de la ventana que aparece brevemente.

ingrese la descripción de la imagen aquí

ppd:

Estas son las preferencias de SourceTree:

ingrese la descripción de la imagen aquí

Tenga en cuenta que las páginas de ayuda dicen que es para Xcode 4.2 y se escribió hace unos años. ¿Qué versión de Xcode tiene? Además, cualquier cosa que diga cambiar cosas en /usr/bin es una fuente sospechosa y ahora no funcionará en El Capitan. Además, el error se debe a que ya tiene /usr/bin/opendiff, por lo que todo el cambio no tiene sentido
¿Ejecutaste Xcode y aceptaste los términos de la licencia?
¡Ejecuto Xcode 7 de hecho! (¿Pero esto realmente hace una diferencia?)
¿Has instalado herramientas de línea de comandos? ¿Qué muestra /usr/bin/opendiff cuando se ejecuta en la terminal?
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]

Respuestas (2)

Mi problema era que estaba ejecutando una versión anterior de Xcode y no había configurado las herramientas de la línea de comandos.

Seleccione las herramientas en las preferencias de Xcode -> ubicaciones:

ingrese la descripción de la imagen aquí

Luego ejecute este comando en la terminal para verificar:

git config --global -l

El comando git imprimirá la ruta de la herramienta diff, entre otra información de configuración. Si no está configurado, generará un error con algo similar a lo siguiente:

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

Suponiendo que está en la última versión de SourceTree (Versión 2.0.5.5 (2.0.5.5))

Intente agregar lo siguiente manualmente a su .gitconfig (o verifique que SourceTree haya puesto estas líneas exactas)

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

O simplemente puede habilitar "Permitir que sourcetree modifique sus archivos de configuración globales de mercurial y git". en Preferencias -> pestaña General

Estas líneas se actualizarán automáticamente.