xcode atlassian-sourcetree filemerge

xcode - FileMerge se cierra inmediatamente después de iniciar desde SourceTree



atlassian-sourcetree (5)

Esto ayudó: https://gist.github.com/kylefox/4512777

Avisar al sistema cuando las utilidades de Xcode en vivo:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

Establecer "opendiff" como el mergetool predeterminado a nivel mundial:

git config --global merge.tool opendiff

Utilizo regularmente Atlassian SourceTree (en Mac OS X) para iniciar FileMerge para resolver los conflictos de combinación de git. De la nada, dejó de funcionar: cuando hago clic con el botón derecho y selecciono Resolve Conflicts > Launch External Merge Tool , FileMerge se inicia, crea sus archivos intermedios y luego se cierra inmediatamente. SourceTree interpreta que el proceso de fusión está completo.

¿Cuál es el problema y cómo puedo solucionarlo?

Observo que una pregunta anterior '' SourceTree filemerge se cierra inmediatamente y crea 4 archivos. ¿Como arreglarlo? ''no aborda este escenario particular (por ejemplo, dice que FileMerge se cierra en el título, pero en el cuerpo dice que FileMerge muestra / dev / null como uno de los paneles. Además, mi conflicto de combinación no se debe a un archivo eliminado. )


Esto también funciona para resolver el mensaje "xcode-select: error: tool ''opendiff'' requiere Xcode, pero el directorio de desarrollador activo ''/ Library / Developer / CommandLineTools'' es una instancia de herramientas de línea de comandos" :

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer


Para diagnosticar el problema, corrí opendiff desde la Terminal. Recibí el siguiente error:

xcode-select: error: la herramienta ''opendiff'' requiere Xcode, pero el directorio de desarrollador activo ''/ Library / Developer / CommandLineTools'' es una instancia de herramientas de línea de comandos

Resolver:

  1. Abrir Xcode> Preferencias> Ubicaciones
  2. Haga clic en el cuadro desplegable junto a Herramientas de línea de comandos y seleccione su versión actual de Xcode. (Esto estaba vacío para mí porque recientemente había instalado Xcode en una nueva Mac).

  1. Ejecute opendiff en Terminal nuevamente, y el error anterior ya no debería aparecer.

Ahora FileMerge se abrirá correctamente desde SourceTree cuando haga clic en Iniciar herramienta de combinación externa .


Para mí, SourceTree ni siquiera lanzó FileMerge. Al hacer clic en Iniciar herramienta de combinación externa, no sucedió nada.

Además, el funcionamiento del opendiff en la Terminal funcionó como se esperaba:

$ opendiff opendiff[64176:5561154] too few arguments opendiff[64176:5561154] usage: opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]

Lo que me ayudó fue configurar manualmente SourceTree para usar FileMerge a través del comando opendiff con los siguientes argumentos: $LOCAL $REMOTE -ancestor $BASE -merge $MERGED

De esta manera, SourceTree abre FileMerge como se esperaba.


Si Xcode se ha actualizado recientemente, es posible que deba aceptar los nuevos términos de la licencia. Si no ha aceptado los términos de la licencia, FileMerge (cuando se inicie desde SourceTree) se cerrará de inmediato.

Para verificar esto, abra un shell y ejecútelo como su usuario habitual:

$ opendiff

Si la licencia es el problema, se lo diremos. Para aceptar los nuevos términos de la licencia, deberá ejecutar open diff usando sudo :

$ sudo opendiff

Después de aceptar los términos de la licencia, ahora puede volver a intentar iniciar FileMerge desde SourceTree utilizando Resolve Conflicts > Launch External Merge Tool . FileMerge debería iniciarse y comportarse normalmente.