web-dev-qa-db-fra.com

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

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

[user]
    name = myname
    email = [email protected]
[core]
    autocrlf = true
    excludesfile = C:\\Users\\myname\\Documents\\gitignore_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é avec le bouton droit sur un fichier sur Sourcetree pour faire un diff externe, j'ai pu ouvrir Meld, mais le contenu du fichier n'était pas du tout affiché.

Enter image description here

Qu'est-ce que j'ai fait de mal dans les paramètres?

28
mynameisJEFF

Je pense que les réponses existantes ont légèrement manqué le point. Voici ma propre nourriture pour chien:

Enter image description here

Détail des arguments:

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

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

Pour une fusion à 3, vous devez cliquer sur External Merge Tool option à la place, qui ne sera disponible qu'en cas de conflits non résolus.

Context menu of External Merge Tool

Si vous n'êtes pas limité à Sourcetree + Meld , je compte la Git Extensions + KDiff suite pourrait également être une bonne alternative open source.

28
Paris Qian Sen

Le paramètre réel à utiliser ici afin d'avoir une véritable fusion à 3 voies, avec des onglets en lecture seule LEURS et MINE est le suivant:

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

Noter la = après --output.

J'ai finalement compris cette commande en fouillant dans les commentaires sur la deuxième réponse à cette question Git fusionnant avec Meld .

20
Jozef Legény

Pour OS X cela 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 à partir de la ligne de commande, vous devez l'installer via brew : brew install meld

enter image description here

6
skywinder

Si vous ne souhaitez pas modifier la variable d'environnement PATH, vous pouvez utiliser les noms abrégés compatibles DOS:

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

Cela évite les espaces gênants sur le chemin et joue Nice avec Sourcetree. C'est hackish, mais ça marche. Vous pouvez ensuite utiliser quelque chose comme ça comme chemin vers Meld:

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

Il n'est pas garanti que Progra ~ 1 mappe vers le répertoire 64 bits, vous devrez donc peut-être tester lequel mappe sur lequel.

2
pmont

Essayez d'ajouter l'emplacement de meld.exe à votre CHEMIN (par exemple C:\Program Files (x86)\Meld), puis dans la commande Diff , entrez simplement meld au lieu du chemin complet. Voir l'essentiel Comment utiliser la fusion avec Sourcetree sous Windows.

1
redlus