mercurial merge cygwin winmerge

¿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.