web-dev-qa-db-fra.com

Git Diff et Meld sur Windows

Quelqu'un a-t-il déjà fait fonctionner Meld avec Git sous Windows? J'essaie de le faire fonctionner et je n'ai aucun succès.

Meld est installé et lorsque je l’appelle à partir de la ligne de commande avec deux fichiers en tant que paramètres, il les diffère bien afin que Meld soit correctement installé. Cependant, je ne peux pas le faire fonctionner avec Git (Git Diff). J'utilise la version git version 1.8.1.msysgit.1 de Git.

J'ai essayé plusieurs choses: J'ai créé un script Shell, meld.sh:

#!/bin/bash
meld.exe "$2" "$5"
echo $2
echo $5

et utilisé depuis Git:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"D:\\meld.sh\"

J'ai essayé de l'ajouter comme un difftool comme ceci:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\" 

ou comme ceci:

[diff]
    tool = meld

[difftool "meld"]
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'

Mais cela ne semble vraiment pas fonctionner. J'ai également essayé de faire écho aux deuxième ($ 2) et cinquième ($ 5) paramètres de mon script Shell et à aucune sortie. J'ai aussi essayé d'utiliser un script batch de plusieurs manières:

meld.exe %2 %5

ou

meld.exe %~2 %~5

Mais ça ne marche vraiment pas ... Comment puis-je passer les deux versions du fichier que Git utilise lorsqu’il diffère de Meld? C'est assez énervant ...

16
Jacob Krieg

Vous trouverez généralement un exemple sous Windows similaire à this Gist , avec meld.exe dans votre PATH):

git config --global merge.tool meld
git config --global mergetool.meld.cmd 'meld.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'

git config --global diff.tool meld
git config --global difftool.meld.cmd 'meld.exe \"$LOCAL\" \"$REMOTE\"'

Vous pouvez trouver des paramètres plus robustes dans " Git mergetool avec Meld sous Windows ", mais l’idée reste la même.


Le PO rapporte dans les commentaires:

Pour la difftool, vos commandes écrivent les configurations suivantes dans .gitconfig:

[diff]
  tool = meld
[difftool "meld"]
  cmd = meld.exe \\\"$LOCAL\\\" \\\"$REMOTE\\\"

Je les ai changés pour:

[diff]
  tool = meld
[difftool "meld"]
  cmd = meld.exe $LOCAL $REMOTE

et tout a bien fonctionné.

21
VonC

Ou encore mieux, si vous êtes sur un système verrouillé dans lequel tromper le chemin n'est pas autorisé ou si vous ne voulez pas polluer l'espace du chemin, vous pouvez simplement mettre le chemin complet vers Meld.

Je préfère également que ma copie de code de travail actuelle soit affichée à gauche. J'ai donc échangé les arguments $ REMOTE et $ LOCAL. Faites également attention aux conversions de\to/et n’échappez pas les guillemets.

[diff]
    tool = meld
[difftool "meld"]
    cmd = \"C:/Program Files (x86)/Meld/meld/meld.exe\" $REMOTE $LOCAL
4
mechsin

Pour Windows 7 (ou même d'autres versions de Windows), ajoutez ces lignes dans le fichier .gitconfig.

[diff]

    tool = meld

[merge]

    tool = meld

[difftool "meld"]

    path = C:/Program Files (x86)/Meld/meld/meld.exe

[mergetool "meld"]

    path = C:/Program Files (x86)/Meld/meld/meld.exe

Notez qu'il n'est pas nécessaire d'utiliser " pour le chemin même s'il contient des espaces. Rappelez-vous simplement d'utiliser des barres obliques au lieu de barres obliques.

2
Rajeev

Autre astuce pour les utilisateurs appelant diff depuis gitk ( en cliquant avec le bouton droit de la souris sur l’option de menu contextuel "Diff externe" ):

Les paramètres ci-dessus peuvent être remplacés par les préférences de gitk. Dans ce cas, modifiez les outils dans le menu Éditer de gitk Préférences Général Diff externe .

1
TingQian LI

J'ai essayé plusieurs variantes d'essayer de définir le chemin avec git config sans succès. Puisque je veux utiliser Meld à partir de la fenêtre de la console Git Bash, ce qui a fonctionné a été d’exporter le chemin vers le répertoire Meld, de redémarrer le shell Bash et de voir git difftool --tool-help et git mergetool --tool-help maintenant reconnaître Meld, et je peux le choisir comme outil préféré. .

.profil

export PATH=/c/Program\ Files\ \(x86\)/Meld/:$PATH

.gitconfig

[merge]
    tool = meld
[diff]
    tool = meld
1
Cathy