Comment utiliser Meld comme outil de fusion avec SourceTree sous Windows?

j'ai dans mon fichier .gitconfig ce qui suit:

[user]
    name = myname
    email = myname@gmail.com
[core]
    autocrlf = true
    excludesfile = C:UsersmynameDocumentsgitignore_global.txt
[diff]
        tool = meld
[difftool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
        prompt = false
[merge]
        tool = meld

[mergetool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
    cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
    cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' "$LOCAL" "$REMOTE" "$MERGED"
    trustExitCode = true

et dans sourcetree, j'ai les paramètres suivants:

enter image description here

cependant, lorsque j'ai cliqué sur le bouton de droite d'un fichier sur sourcetree pour faire une diff externe, j'ai pu ouvrir meld mais le contenu du fichier n'était pas affiché du tout. enter image description here

Qu'ai-je fait de mal dans les paramètres ?

22
demandé sur Jozef Legény 2015-02-16 16:14:30

5 réponses

je pense que les réponses existantes ont quelque peu manqué le but. Voici ma propre nourriture pour chien:

enter image description here

Arguments Détail:

Diff:  $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

pour External Diff , vous devez supprimer $BASE de votre liste d'arguments

pour la fusion à trois, vous devez cliquer sur l'option External Merge Tool à la place, qui n'est disponible que s'il y a des conflits non résolus.

Context menu of External Merge Tool

mise à jour: si vous n'êtes pas limité à SourceTree + Meld , je pense que le Extensions Git + KDiff3 suite pourrait être une bonne alternative de source ouverte aussi.

20
répondu Paris Qian Sen 2018-07-25 06:07:40

le réglage réel à utiliser ici afin d'avoir une réelle Fusion à 3 voies, avec lire seulement leurs onglets et MINE est ceci:

$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

Note la = après --output .

j'ai finalement obtenu cette commande droite en creusant dans les commentaires sur la deuxième réponse à cette question Git fusion en utilisant la soudure .

17
répondu Jozef Legény 2017-05-23 12:10:32

pour OS X il ressemble à ceci:

  • Commande Diff: meld .

    • Arguments: @LOCAL @REMOTE
  • Commande De Fusion: meld .

    • Arguments: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

P. S.

pour l'utiliser en ligne de commande, vous devez l'installer via brassage : brew install meld

enter image description here

5
répondu skywinder 2016-10-04 08:59:08

si vous ne voulez pas modifier la variable D'environnement PATH, vous pouvez utiliser les noms courts compatibles DOS:

C:\Progra~1 = C:\Program Files
C:\Progra~2 = C:\Program Files (x86)

qui évite les espaces de trouble dans le chemin et joue bien avec SourceTree. C'est hackish mais ça marche. Vous pouvez alors utiliser quelque chose comme ceci comme le chemin de fusion:

C:\Progra~1\Meld\meld.exe

il ne peut pas être garanti que Progra~1 correspond au dir 64 bits, donc vous pourriez avoir besoin d'expérimenter avec lequel une correspond à laquelle.

2
répondu pmont 2015-05-21 19:53:52

Essayez d'ajouter l'emplacement de fondre.exe to your PATH (e.g. C:\Program fichiers (x86)\Meld), puis dans la commande Diff il suffit d'entrer meld au lieu du chemin complet. Voir ici: https://gist.github.com/chinhodado/6fc37def3e12ea09f785

1
répondu redlus 2015-04-27 16:18:51