¿Cómo usar Winmerge con extensiones de Git?


Estoy usando Git Extensions y preinstala y configura KDiff como la herramienta de diferencias para resolver conflictos de fusión. Soy muy aficionado a Winmerge sin embargo y me gustaría reemplazar KDiff con Winmerge.

En la configuración de las extensiones de Git, hay configuraciones para cambiar la Mergetool, pero parece que no puedo averiguar qué sintaxis debo usar y por qué. Parece haber 4 variables :BASE BASE, LOCAL LOCAL, REMOTE REMOTE, MERGED MERGED. Parece que debería pasárselas a WinMergeU.exe, pero con qué comando ¿parámetros de línea?

He intentado buscar esto un par de veces, pero no hay respuesta que realmente parece funcionar.

Author: Tobu, 2010-03-18

5 answers

Sinopsis
Las siguientes son instrucciones sobre cómo configurar el Control de versiones de GIT para que pueda usar un mejor conjunto de herramientas que la instalación predeterminada. La configuración requiere que GIT Extensions ya esté instalado e implica configurar Winmerge en GIT extensions.

Instalación
Recorre todas las indicaciones e instálalas en el directorio predeterminado de Winmerge.

Configurar Winmerge en GIT Version Control
Abrir un nuevo documento en un editor de texto. Copie / pegue lo siguiente y guarde el documento como "wMerge.sh" a tu "C:\Program Directorio Files (x86)\Git\ bin\".

echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2"

Vaya a su directorio "Users->username" y localice el .gitconfig archivo. Ábrelo en tu editor favorito copiar / pegar el siguiente código y Guardar:

[user]
    name = enter your name
    email = [email protected]
[core]
    autocrlf = false
[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = wMerge.sh \"$MERGED\" \"$REMOTE\"
    path = c:/Program Files (x86)/winmerge/winmergeu.exe
[mergetool]
    keepBackup = false
    trustExitCode = false
[diff]
    guitool = winmerge
[difftool "winmerge"]
    path = c:/Program Files (x86)/winmerge/winmergeu.exe
    cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\"

Ejecute "GitExtensions", vaya a "herramientas->Configuración->Extensiones de Git->Configuración de Git". Si ha realizado la instalación correctamente y ha hecho referencia a las herramientas en su directorio, su página de configuración global debe verse como a continuación (NOTA: Por favor, rellene su nombre en nombre y correo electrónico):

mergetool: winmerge
ruta a mergetool: c:/Program Files (x86)/winmerge/winmergeu.exe
comando mergetool: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
ruta a difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
orden difftool: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

finales de línea: checkout as-is, commit as-is

Navega a la pestaña lista de verificación para verificar que GIT está "verde" y satisfecho con tu configuración.

 45
Author: foxtrotZulu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-15 00:19:24

En Git Extensions v2. 47. 3, es muy fácil configurar esto:

Configuración -> Configuración global -> en el menú desplegable de 'Mergetool' escriba manualmente: WinMerge y observe el milagro.

Lo mismo para el menú desplegable 'Difftool'.

introduzca la descripción de la imagen aquí

||   ||   ||
\/   \/   \/

introduzca la descripción de la imagen aquí

Es una tontería que la opción 'WinMerge' no esté pre-poblada en el menú desplegable. Oh, bueno.

 18
Author: Cristi Diaconescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-30 22:11:59

En Windows 7, esto es lo que finalmente funcionó para mí. Observe las comillas "'c:/path/here'" alrededor de la ruta de mis archivos de programa.

[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED"
[diff]
    tool = winmerge
[difftool "winmerge"]
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr
 10
Author: TimDog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-20 14:10:30

La respuesta de@sebastiaan no funcionó para mí (¿tal vez esté desactualizada?)

Estos son "Ajustes globales" que funcionan para mí usando GitExtensions 2.28:

Mergetool: winmerge
Ruta a mergetool: D:/path/to/WinMerge/WinMergeU.exe
Comando Mergetool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Esto hace que WinMerge use el "archivo de conflicto" generado por git.
-e permite presionar ESC para cerrar winmerge.

Difftool: winmerge
Ruta a difftool: D:/path/to/WinMerge/WinMergeU.exe
Orden Difftool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl y -dr establecer las descripciones para el panel izquierdo y derecho.

 8
Author: foraidt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-03 15:50:05

Agregue o cambie lo siguiente en el archivo de configuración:

[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"

Esta solución es distinta de dos maneras:

  1. Simplemente llama WinMergeU.exe *conflictfile*, mientras que las llamadas de dos lados sufren por el hecho de que la ventana de la izquierda presenta <<<<<<<, =======, y >>>>>>> marcadores que contains MERGED contiene.
  2. Aplicar mergetool por repositorio-estoy editando el archivo G GIT_DIR/config . El mismo resultado se podría lograr llamando a git config sin el argumento system system o global global. Esto es para tener en cuenta que hay algunos ámbitos de configuración para elegir.

La variable PROGRAM PROGRAMFILES es mantenida por git bash y (a diferencia de la variable similar en el cmd nativo de windows) navega a "Archivos de programa (x86)".

 3
Author: Pawel Piskorski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-14 22:56:03