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:
- Abrir Xcode> Preferencias> Ubicaciones
- 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).
- 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.