2009-02-14 18 views

Respuesta

16

El truco es que las rutas de Cygwin no son lo mismo que las rutas de Windows, por lo que necesita una pequeña secuencia de comandos que convierta las rutas de cygwin a rutas de Windows antes de pasarlas como argumentos a WinMerge.

Así es como se hace:

(1) Crear un script de shell en /usr/bin/winmerge de la siguiente manera:

#!/bin/sh 
"/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub /dl other /dr local `cygpath -aw $1` `cygpath -aw $2` `cygpath -aw $3` 

Nota: cygpath convierte los nombres de ruta. Si WinMerge no está en la ubicación predeterminada, cambie la ruta aquí.

(2) Hacer que el archivo ejecutable

chmod +x /usr/bin/winmerge 

(3) Añadir lo siguiente a su archivo ~/.hgrc:

[ui] 
merge = winmerge 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 

Nota! Probablemente ya tenga una sección [ui] con su nombre en ella. Recuerda combinar mis cambios con los tuyos, no solo agregues una nueva sección [ui]. Por ejemplo, mi .hgrc se ve así:

[ui] 
username = Joel Spolsky <[email protected]> 
merge = winmergeu 

[extensions] 
fetch = 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 
+0

Ahora puede aceptar su propia respuesta, ¿verdad? –

+0

tengo que esperar 48 horas. –

+0

Probablemente no pondría esa secuencia de comandos en/usr/bin /. Iba a buscarte por no usar cygpath, pero luego desplacé el bloque de código y vi lo que estás haciendo. –

0

Aquí es la línea shell script que funciona para Subversion/cygwin/WinMerge. La principal diferencia es qué argumentos usar.

/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" & 

Tenga en cuenta que este ejemplo también establece los campos de descripción y lanza las comparaciones en el fondo, de manera que todos los diffs se ponen en marcha a la vez. Si no te gusta, elimina el '&'.

Si no sabe lo que su programa de control de revisiones le está pasando, intente agregar 'echo $ @' a su script de shell. Imprimirá los argumentos pasados ​​al script.

Cuestiones relacionadas