J'utilise Git Extensions et il pré-installe et configure KDiff comme outil de diff pour résoudre les conflits de fusion. Cependant, j'aime beaucoup Winmerge et j'aimerais remplacer KDiff par Winmerge.
Dans les paramètres des extensions Git, il existe des paramètres pour changer le Mergetool, mais je n'arrive pas à comprendre quelle syntaxe je dois utiliser et pourquoi. Il semble y avoir 4 variables: $ BASE, $ LOCAL, $ REMOTE, $ MERGED. Il semble que je devrais les transmettre à WinMergeU.exe, mais avec quels paramètres de ligne de commande?
J'ai essayé de chercher cela plusieurs fois, mais il n'y a pas de réponse qui semble réellement fonctionner.
Présentation
Les instructions suivantes expliquent comment configurer GIT Version Control afin que vous puissiez utiliser un meilleur ensemble d'outils que l'installation par défaut. La configuration nécessite que GIT Extensions soit déjà installé et implique la configuration de Winmerge dans les extensions GIT.
Installation
Parcourez toutes les invites et installez-les dans le répertoire par défaut de Winmerge.
Configurer Winmerge dans GIT Version Control
Ouvrez un nouveau document dans un éditeur de texte. Copiez/collez ce qui suit et enregistrez le document en tant que "wMerge.sh" dans votre répertoire "C:\Program Files (x86)\Git\bin \".
echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2"
Allez dans votre répertoire "Utilisateurs-> nom d'utilisateur" et localisez le fichier .gitconfig. Ouvrez-le dans votre éditeur préféré, copiez/collez le code suivant et enregistrez:
[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\"
Exécutez "GitExtensions", allez dans "tools-> Settings-> Git Extensions-> Git Config". Si vous avez fait votre installation correctement et référencé les outils dans leur répertoire, votre page de paramètres globaux devrait ressembler à ci-dessous (REMARQUE: veuillez saisir votre nom sur le nom et l'e-mail):
mergetool: winmerge
chemin vers mergetool: c:/Program Files (x86)/winmerge/winmergeu.exe
commande mergetool: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
chemin vers difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
commande difftool: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"
fins de ligne: extraction en l'état, validation en l'état
Accédez à l'onglet de la liste de contrôle pour vérifier que GIT est tout "vert" et satisfait de votre configuration.
Sur Git Extensions v2.47.3, il est vraiment facile de configurer cela:
Paramètres -> Paramètres globaux -> dans la liste déroulante pour 'Mergetool' écrivez manuellement: WinMerge
et observez le miracle.
Idem pour le menu déroulant "Difftool".
|| || ||
\/ \/ \/
Il est juste stupide que l'option 'WinMerge' ne soit pas pré-remplie dans la liste déroulante. Tant pis.
Sur Windows 7, c'est ce qui a finalement fonctionné pour moi. Noter la "'c:/path/here'"
cite le chemin de mes fichiers programme.
[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
La réponse de @ sebastiaan n'a pas fonctionné pour moi (peut-être qu'elle est dépassée?)
Ce sont des "paramètres globaux" qui fonctionnent pour moi en utilisant GitExtensions 2.28:
Mergetool: winmerge
Chemin vers mergetool: D:/path/to/WinMerge/WinMergeU.exe
Commande Mergetool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Cela fait que WinMerge utilise le "fichier de conflit" généré par git.-e
permet d'appuyer sur ESC pour fermer winmerge.
Difftool: winmerge
Chemin vers difftool: D:/path/to/WinMerge/WinMergeU.exe
Commande Difftool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl
et -dr
définissez les descriptions des volets gauche et droit.
Ajoutez ou modifiez les éléments suivants dans le fichier de configuration:
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
Cette solution se distingue de deux manières:
WinMergeU.exe *conflictfile*
, tandis que les appels bilatéraux souffrent du fait que la fenêtre de gauche présente <<<<<<<
, =======
, et >>>>>>>
marqueurs que contient $ MERGED.La variable $ PROGRAMFILES est gérée par git bash et (contrairement à la variable similaire sur les fenêtres natives cmd), elle accède à "Program Files (x86)".