109 votes

Comment définir Meld comme git mergetool ?

J'ai mis :

git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/

Sur "git mergetool" il est écrit :

Hit return to start merge resolution tool (meld):
The merge tool meld is not available as 'c:/Progra~2/meld/bin/'

J'ai aussi essayé :

  • /c/Progra~2/meld/bin/
  • "/c/Program files (x86)/meld/bin/"
  • "c:/Program files (x86)/meld/bin/"

Le résultat est le même.

quand je vais dans C:/Program files (x86)/meld/bin/ et que j'exécute

python meld

l'outil fonctionne.

4voto

Yohanes AI Points 1151

Après l'avoir installé http://meldmerge.org/ J'ai dû dire à Git où c'était :

git config --global merge.tool meld
git config --global diff.tool meld
git config --global mergetool.meld.path “C:\Program Files (x86)\Meld\meld.exe”

Et cela semble fonctionner. La fusion et la différentiation avec "git difftool" ou "git mergetool".

Si quelqu'un est confronté à un problème tel que le crash de Meld après le démarrage (indication du problème avec python), alors vous devez configurer Meld/lib dans votre variable d'environnement système comme suit C:\Program Files (x86)\Meld\lib

1voto

jozxyqk Points 2691

Il a fallu quelques permutations pour que meld fonctionne sous Windows pour moi. Voici mon fichier .gitconfig actuel :

[merge]
    conflictstyle = diff3
    tool = meld
[mergetool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\Meld.exe\" --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"

Linux :

[merge]
    conflictstyle = diff3
    tool = meld
[mergetool "meld"]
    cmd = meld --auto-merge $LOCAL $BASE $REMOTE --output=$MERGED --diff $BASE $LOCAL --diff $BASE $REMOTE

Je crois qu'ajouter conflictstyle = diff3 modifie le texte en ligne pour inclure le contenu de la BASE dans le fichier de sortie avant que meld ne l'atteigne, ce qui pourrait lui donner une longueur d'avance. Pas sûr.

Maintenant, puisque j'ai déjà noté que Meld supporte la fusion à trois, il existe une autre option. Lorsque le style de conflit git "diff3" est activé, Meld imprime "( ??)" sur la ligne montrant le contenu de BASE. source

Quelques fonctions de ligne de commande meld que j'aime beaucoup :

  • --auto-merge fait un excellent travail en choisissant la bonne chose pour vous (ce n'est pas infaillible, mais je considère que le temps gagné vaut tous les risques).

  • Vous pouvez ajouter des fenêtres diff supplémentaires dans la même commande. Par exemple :

    --diff $BASE $LOCAL --diff $BASE $REMOTE

    ajoutera deux onglets supplémentaires avec les diffs des patchs locaux et entrants. Ceux-ci peuvent être très utiles pour voir séparément de la vue à trois voies pour voir les différences séparées de la base dans chaque branche. Je n'ai pas réussi à le faire fonctionner sous Windows.

  • Certaines versions de meld vous permettent d'étiqueter les onglets à l'aide des éléments suivants --label . Ceci était plus important avant que git ne fixe les noms des fichiers passés à meld pour inclure local/base/remote.

  • L'ordre de --diff peut affecter l'ordre des onglets. J'ai eu des problèmes dans certaines anciennes versions qui plaçaient les différences supplémentaires en premier, alors que la différence principale à trois voies est beaucoup plus fréquemment utilisée.

0voto

Sekhar T Points 1

Pour Windows ajouter le chemin pour meld est comme ci-dessous :

 git config --global mergetool.meld.path C:\\Meld_run\\Meld.exe

0voto

Sameera De Silva Points 189

Ajout des lignes ci-dessous dans mon fichier .gitconfig en C:\Users\username a résolu mon problème pour la 3.20.3 sous Windows 10.

[user]
    name = doe
    email = doe@john.com
[core]
longpaths = true
[diff]
    tool = meld
[difftool "meld"]
    path=C:/Program Files/Meld/Meld.exe
[difftool]
    prompt = false
[merge]
    tool = meld
[mergetool "meld"]
    path=C:/Program Files/Meld/Meld.exe
[mergetool]
    prompt = false
    KeepBackup = false

0voto

Bhavesh Gupta Points 1

Git config --global merge.tool meld git config --global mergetool.meld.path c:/Progra~2/meld/Meld/

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