¿Cómo puedo configurar Mercurial para usar WinMerge para fusiones, bajo cygwin?
(2)
Cuando Mercurial se ejecuta bajo cygwin, es un poco complicado descubrir cómo generar WinMerge para resolver conflictos de combinación. ¿Cómo puedo hacer esto?
El truco es que las rutas de Cygwin no son lo mismo que las rutas de Windows, por lo que necesita un pequeño script que convierta las rutas de cygwin a rutas de Windows antes de pasarlas como argumentos a WinMerge.
He aquí cómo hacerlo:
(1) Cree un script de shell en /usr/bin/winmerge
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 nombres de ruta. Si WinMerge no está en la ubicación predeterminada, cambie la ruta aquí.
(2) Hacer ese archivo ejecutable
chmod +x /usr/bin/winmerge
(3) Agregue 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
Aquí está la línea de script de shell 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 inicia las comparaciones en segundo plano, de modo que todos los dif se inicien a la vez. Si no te gusta, elimina el ''&''.
Si no sabe qué le está pasando su programa de control de revisiones, intente agregar ''echo $ @'' a su script de shell. Imprimirá los argumentos pasados al script.