Comment utiliser Winmerge avec des Extensions Git?

j'utilise Git Extensions et il pré-installe et met en place KDiff comme outil diff pour résoudre les conflits de fusion. J'aime beaucoup Winmerge et j'aimerais remplacer KDiff par Winmerge.

dans les paramètres des Extensions Git, il y a des paramètres pour changer Mergetool, mais je n'arrive pas à comprendre quelle syntaxe je devrais utiliser et pourquoi. Il semble y avoir 4 variables: $BASE, $LOCAL, $REMOTE, $MERGED. Il semble que je devrais les passer à WinMergeU.exe, mais avec quels paramètres de ligne de commande?

j'ai essayé de le chercher plusieurs fois, mais il n'y a pas de réponse qui semble réellement fonctionner.

46
demandé sur Tobu 2010-03-18 10:54:18

5 réponses

vue d'ensemble

Voici les instructions pour configurer le contrôle de Version GIT 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 Git extensions.

Installation

Parcourir toutes les instructions et installer dans le répertoire par défaut pour Winmerge.

Configurer Winmerge de Contrôle de Version GIT

Ouvrir un nouveau doc dans un éditeur de texte. Copiez / collez ce qui suit et sauvegardez le document en tant que "wMerge.sh" to your "C:\Program dossiers (x86)\git\bin\" répertoire.

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

allez à votre répertoire" Utilisateurs->nom d'utilisateur " et localisez le .gitconfig fichier. Ouvrez-le dans votre éditeur préféré copiez / collez le code suivant et sauvegardez:

[user]
    name = enter your name
    email = youremail@yourdomain.com
[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écuter "GitExtensions", aller à "outils->Paramètres->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 à ce qui suit (NOTE: s'il vous plaît remplir votre nom sur le nom et l'email):



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"



les fins de ligne: la caisse en tant qu'-est, s'engager en tant qu'-est



Naviguez vers l'onglet Liste de contrôle pour vérifier que GIT est entièrement "vert" et satisfait de votre configuration.

45
répondu foxtrotZulu 2016-12-15 00:19:24

sur Git Extensions v2.47.3, il est vraiment facile de mettre en place cela:

Paramètres - > Paramètres globaux- > dans la liste déroulante pour 'Mergetool' écrivez manuellement: WinMerge et regardez le miracle.

même chose pour' Difftool ' drop-down.

enter image description here

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

enter image description here

c'est juste stupide que l'option "WinMerge" n'est pas pré-peuplée dans le déroulante. Oh bien.

18
répondu Cristi Diaconescu 2014-05-30 22:11:59

sur windows 7, c'est ce qui a finalement fonctionné pour moi. Notez les citations "'c:/path/here'" autour du chemin de mes fichiers de 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
10
répondu TimDog 2013-03-20 14:10:30

la réponse de @sebastiaan n'a pas fonctionné pour moi (peut-être est-elle périmée?)

ce sont des "paramètres Globaux" qui travaillent pour moi à l'aide de 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 amène WinMerge à utiliser le "fichier de conflit" généré par git.

-e permet presser L'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éfinit les descriptions pour les vitres gauche et droite.

8
répondu foraidt 2012-01-03 15:50:05

ajouter ou modifier ce qui suit dans le fichier de configuration:

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

cette solution se distingue de deux façons:

  1. appelle simplement WinMergeU.exe *conflictfile* , tandis que les appels recto verso souffrent du fait que la fenêtre Gauche présente les marqueurs <<<<<<< , ======= , et >>>>>>> que $MERGED contient.
  2. Appliquer mergetool par des pensions de base - je suis d'édition de l' $GIT_DIR/fichier de configuration . Même résultat pourrait être réalisé en appelant git config sans -- System ou -- global argument. C'est à noter qu'il y a quelques portées de configuration à choisir parmi .

la variable $PROGRAMFILES est maintenue par git bash et (contrairement à la variable similaire sur Windows CMD natif) elle navigue vers" Program Files (x86)".

3
répondu Pawel Piskorski 2013-02-14 22:56:03