98 votes

Git mergetool avec Meld sous Windows

Sous Linux, mon préféré outil de fusion est de Fondre, et je n'ai eu aucun problème en utilisant ou en le configurant pour travailler avec Git. Cependant, sous Windows, il a été une autre histoire.

Tout d'abord, j'ai installé Fondre dans un ensemble que j'ai trouvé ici: https://code.google.com/p/meld-installer/

Ensuite, j'ai configuré mon .gitconfig comme à l'appui de Fondre comme la valeur par défaut mergetool

[merge]                                                      
    tool = meld                                                                         

[mergetool "meld"]                                           
    path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
    keepBackup = false                                   
    trustExitCode = false

Donc, quand j'ai un conflit, je ne git difftool et de Fusionner en fait ouvert. Cependant, les chemins vers les fichiers qui Git écrit pour passer à l'outil de comparaison est incorrect. Par exemple, même si Git génère la BASE, LOCALES et à DISTANCE des fichiers dans le répertoire de dépôt (l'emplacement que j'ai appelé git mergetool de), Meld essaie d'ouvrir chacun de ces fichiers dans le répertoire de l'exécutable.

Au lieu de l'ouvrir C:\repo\roses.txt.LOCAL.2760.txt, Meld essaie d'ouvrir C:\Program Files (x86)\Meld\meld\roses.txt.LOCAL.2760.txt.

Quelqu'un a rencontré ce avant ou savoir comment configurer Git / Fusionner pour fonctionner correctement dans Windows?

26voto

Martin Dušek Points 149

Schuess, fais attention au caractère d'espace dans les répertoires!

 [merge]
    tool = meld
[mergetool "meld"]
    prompt = false
    keepBackup = false
    keepTemporaries = false
    path = C:/Program Files (x86)/Meld/meld/meld.exe
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
 

10voto

schuess Points 137

J’ai eu exactement le même problème et j’ai trouvé que j’étais obligé de faire tout mon possible pour que cela fonctionne. Voici ce que j'ai mis dans mon fichier .gitconfig. (Notez que mon exécutable de fusion se trouve à un emplacement différent)

 [merge]
    tool = meld
[mergetool "meld"]
        cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED"
 

4voto

star99ers Points 21

J'ai trouvé une solution dans un rapport de bogue sur le meld installer, sur cette page:

https://code.google.com/p/meld-installer/issues/detail?id=11

Comme je le comprends, le problème est que l'meld.exe programme (qui va fondre à travers l'interpréteur python) inutilement définit la commande du répertoire de travail à celle de meld.exe. Cela provoque des chemins relatifs pour être interprété correctement lorsqu'ils sont passés comme arguments de ligne de commande.

La solution est de remplacer la condition meld.exe avec celui généré par la compilation de la fondre.ahk fichier, à l'aide de AHK2EXe (script AutoHotKey -> exe). Il suffit de télécharger le script le plus loin sur la page, car il y a un peu de la version posté là-bas.

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