2009-08-20 10 views
23

¿Cómo configuro el programa FileMerge de Apple para que funcione como la herramienta de fusión de Mercurial? Tengo mi configuración de archivo .hgrc en mi directorio de inicio y simplemente quiero configurar FileMerge como el programa de fusión.Configurando Mercurial - FileMerge para Apple Mac OS X

Respuesta

27

Como se describe en el hg wiki, esto ha funcionado para mí con varias versiones de Hg:

  • crear un script en algún lugar de su $PATH, dicen en /usr/local/bin:
$ vim /usr/local/bin/opendiff-w 

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 
  • Añadir las siguientes secciones para su ~/.hgrc:
[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Ahora usted puede utilizarlo como $hg opendiff.

+9

** Para los demás **:' opendiff-w' es el archivo de script al que se hace referencia en el. archivo hgrc (esto no fue demasiado obvio para mí). El primer bloque de código es el contenido. Además, cambié los permisos para agregar ejecutar 'chmod + x opendiff-w' –

+4

** Para otros: ** Algo que no era obvio para mí: ahora necesita ejecutar' $ hg opendiff' (para ver el resultado en 'FileMerge '); '$ hg diff' seguirá mostrándole la salida en la línea de comando –

+5

** Para otros: ** ... y deberá habilitar la extensión extdiff en' ~/.hgrc' –

2

Actualización: La wiki de Mercurial tiene un page about FileMerge. Lea eso primero.

No he intentado utilizar FileMerge, pero una descripción general puede ayudar. La mayor parte de lo que desea saber se describe en la página MergeProgram del wiki de Mercurial. La versión corta es sus opciones típicas son:

Establezca la variable de entorno HGMERGE para que apunte a la herramienta de fusión que desea.

o, añada lo siguiente a su .hgrc:

[ui] 
merge = /path/to/toolname 

[merge-tools] 
toolname.args = $base $local $other 

La clave es que una herramienta de combinación tiene que tomar tres argumentos: la revisión base, los cambios locales y los cambios con respecto a la otra rama. Utiliza la primera configuración para especificar la herramienta y la segunda para especificar cómo toma argumentos.

0

No lo he intentado, pero apuesto a que debe señalar todo el camino hasta el ejecutable de FileMerge, no solo el paquete de la aplicación.

Así:

[ui] 
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge 
+0

Intenté esto, no es tan fácil. –

+0

Lo probé también, obtuve: 'FileMerge [51550: 30f] No se pudo crear la conexión para root' – jammon

1

Ninguno de los documentos vinculados funcionó para mí sin modificaciones; finalmente, lo que terminé haciendo fue una combinación de the official instructions y "Usar Vim como programa de intercambio de archivos" desde https://www.mercurial-scm.org/wiki/TipsAndTricks. He creado el guión opendiff-w se describe en this answer (aunque lo he denominado hgvdiff), y poner el siguiente en mi .hgrc:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = /usr/local/bin/hgvdiff 

[merge-patterns] 
** = filemerge 

[merge-tools] 
filemerge.executable = /usr/local/bin/hgvdiff 
filemerge.args = $local $other -ancestor $base -merge $output 
filemerge.checkchanged = true 
filemerge.gui = true 

[extensions] 
extdiff = 

Ésta es moderadamente funcional, aunque a veces realiza la comprobación de si un archivo fue cambiado prematuramente, dando lugar a un montón de:

output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged 
was merge successful (yn)? n 

cuando cierra FileMerge.

0

Así es como me fijo:

Creado /usr/local/bin/opendiff-w lleno de:

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 

Luego ejecutó el comando: sudo chmod +x /usr/local/bin/opendiff-w

Luego editado ~/.hgrc con la siguiente adición:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = /usr/local/bin/opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Luego ejecuté el followi ng comando para comprobar wether funcionó: hg opendiff

Sin embargo, tengo el siguiente error:

exception raised trying to run FileMerge: launch path not accessible 

Para solucionarlo me encontré con el siguiente comando:

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

Esto debería funcionar y abre FileMerge.

============================================== =========================

Si está usando TorsoiseHg para Mac, lo único que debe hacer ahora para trabajar con FileMerge es para elegir filemerge de las herramientas Detectar merge/diff cuando aparece la ventana Resolver conflicto y elegir Tool Resolve.

enter image description here

Espero que esto ayude.