52 votes

Comment utiliser Winmerge avec les extensions Git?

J'utilise Git Extensions et le pré-installe et configure KDiff comme l'outil de comparaison pour résoudre les conflits de fusion. Je suis très friands de Winmerge bien et voudrais remplacer KDiff avec Winmerge.

Dans le Git Extensions de paramètres, il y a des paramètres pour modifier les Mergetool, mais je n'arrive pas à comprendre ce que la syntaxe que je devrais utiliser et pourquoi. Il semble y avoir 4 variables: $BASE, $LOCALE, $DISTANCE, $FUSIONNÉ. Il semble que je dois transmettre à l'WinMergeU.exe mais, avec laquelle les paramètres de ligne de commande?

J'ai essayé de rechercher ce à quelques reprises, mais il n'y a pas de réponse qui effectivement semble fonctionner.

51voto

foxtrotZulu Points 617

Vue d'ensemble
Voici les instructions sur la façon de l'installation de Contrôle de Version GIT de sorte que vous pouvez utiliser de meilleurs outils que l'installation par défaut. Le programme d'installation de GIT Extensions est déjà installé et implique la configuration Winmerge dans GIT extensions.

Installation
Marcher à travers tous les invites et les 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. Copier/coller le texte suivant et enregistrez le document en tant que "wMerge.sh" à la votre "C:\Program Files (x86)\Git\bin\" répertoire.

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

Goto votre "Utilisateurs->nom d'utilisateur" directory et de localiser l' .gitconfig fichier. L'ouvrir dans votre éditeur de texte favori de copier/coller le code suivant et Enregistrez:

[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 à "Paramètres->Paramètres->Paramètres globaux". Si vous avez fait votre installation correctement et mentionné les outils à leur répertoire, l'ensemble de vos paramètres de page devrait ressembler à ci-dessous (NOTE: s'il vous Plaît remplir votre nom, le nom et l'e-mail):

mergetool: winmerge
chemin d'accès à mergetool: c:/Program Files (x86)/winmerge/winmergeu.exe
mergetool commande: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
chemin d'accès à difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
difftool commande: "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

Accédez à la liste de l'onglet pour vérifier que GIT est tout "vert" et satisfait de votre installation.

22voto

Cristi Diaconescu Points 7955

Sur Git Extensions v2.47.3, il est vraiment facile à configurer:

Paramètres -> paramètres généraux -> dans la liste déroulante 'Mergetool' écrire manuellement: WinMerge et de regarder le miracle.

Même pour la "Difftool liste déroulante".

enter image description here

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

enter image description here

C'est juste ridicule que le "WinMerge' option n'est pas pré-rempli dans la liste déroulante. Oh bien.

10voto

TimDog Points 3875

Sur Windows 7, c'est ce qui a finalement fonctionné pour moi. Notez les guillemets "'c:/path/here'" autour du chemin des fichiers de mon 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
 

8voto

foraidt Points 2460

@sebastiaan la réponse n'a pas fonctionné pour moi (c'est peut-être obsolète?)

Ce sont des "paramètres Globaux" qui travaillent pour moi à l'aide de GitExtensions 2.28:

Mergetool: winmerge
Chemin d'accès à mergetool: D:/path/to/WinMerge/WinMergeU.exe
Mergetool commande: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Cela provoque WinMerge pour utiliser le "dossier du conflit généré par git.
-e permet en appuyant sur la touche ESC pour fermer winmerge.

Difftool: winmerge
Chemin d'accès à difftool: D:/path/to/WinMerge/WinMergeU.exe
Difftool commande: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl et -dr ensemble les descriptions de la gauche et le volet de droite.

3voto

Pawel Piskorski Points 21

Ajouter ou modifier les éléments suivants dans le fichier de config:

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

Cette solution est distincte de deux façons:

  1. Simplement des appels WinMergeU.exe *conflictfile*, tandis que les deux faces d'appels souffrent du fait que la main gauche de la fenêtre présente <<<<<<<, =======, et >>>>>>> marqueurs $FUSIONNÉ contient.
  2. Appliquer mergetool par des pensions de base - je suis d'édition de l' $GIT_DIR/fichier de configuration . Même résultat peut être obtenu en appelant la commande git config --sans système ou --global argument. Ce est à noter qu'il y a quelques étendues de configuration pour choisir de.

L' $PROGRAMFILES variable est maintenu par git bash et (à la différence de la variable semblable sur windows natif cmd), il accède à "Program Files (x86)".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X