web-dev-qa-db-fra.com

Pourquoi ne puis-je pas utiliser TortoiseMerge comme outil de fusion git sous Windows?

J'essaie de réaliser ma première fusion Git (excitant!), Mais je ne parviens pas à obtenir Git Gui (0.13.GITGUI de Git 1.7.4.msysgit.0) pour reconnaître TortoiseMerge (1.6.11.20210 x64) sur Windows 7. Basé sur une réponse à une question similaire , j'ai apporté les modifications de configuration suivantes:

$ git config --global merge.tool tortoisemerge
$ git config --global mergetool.tortoisemerge.cmd 'TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"'
$ git config --global --list
...snip...
merge.tool=tortoisemerge
mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"
$

Malheureusement, lorsque je lance Git Gui et que je tente d'exécuter l'outil de fusion, le message d'erreur Unsupported merge tool 'tortoisemerge' s'affiche.

Quelqu'un peut-il me dire ce que j'ai mal fait? Voici les sections pertinentes de mon ~/.gitconfig:

[merge]
        tool = tortoisemerge
[mergetool "tortoisemerge"]
        cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"

Mettre à jour

TortoiseMerge fonctionne bien avec la configuration ci-dessus lorsque git mergetool est exécuté à partir de la ligne de commande. Il semble que seul Git Gui ait des problèmes avec cela. : - /

44
Ben Blank

Si vous avez le dernier git, lancez cette ligne de commande une fois:

git config merge.tool tortoisemerge

Important: N'ajoutez pas d'extension .exe à la commande.

Si cela échoue, ou si vous souhaitez ajouter un autre outil de fusion que git ne connaît pas, procédez comme suit:

Ouvrez l'un des éléments suivants dans un éditeur:

  • Git 64 bits: C:\Program Files\Git\mingw64\share\git-gui\lib\mergetool.tcl
  • Git 32 bits: C:\Program Files (x86)\Git\share\git-gui\lib\mergetool.tcl

Ajoutez quelque chose comme ceci à mergetool.tcl:

tortoisemerge {
    set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}

Placez la nouvelle entrée tortoisemerge au-dessus de cet autre code:

default {
        error_popup [mc "Unsupported merge tool '%s'" $tool]
        return
}

Exemple de bonus:

Pour utiliser SourceGear diffmerge, ajoutez ceci à mergetool.tcl:

diffmerge {
    set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}
54
Chris Dragon

Essaye ça:

[merge]
tool = tortoise

[mergetool "tortoise"]
cmd = "TortoiseMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"

Source: http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/

17
Jake

Pour le cas sur lequel je travaillais, le Mergetool était déjà configuré pour une réémergence, mais il ne pouvait pas le trouver.

Fournir un emplacement pleinement qualifié fonctionnant sous Windows:

git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""
4
jnrcorp

Essayez de taper TortoiseMerge.exe à partir de la ligne de commande pour vous assurer qu'il est dans le chemin. Sinon, ajoutez-le via Poste de travail> Propriétés> Avancé> Variables d'environnement> Variables système: Chemin.

Puis à partir de la commande Invite, configurez-le via les commandes suivantes

git config --replace --global diff.tool tortoisemerge
git config --replace --global difftool.diffmerge.cmd "TortoiseMerge.exe -base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\""
git config --replace --global difftool.Prompt false

Pour l'utiliser depuis la commande Invite, tapez git difftool à partir de votre répertoire de travail git.

Il affiche les fichiers un à un, il est donc préférable d’installer TortoiseGit, qui facilite la gestion, même s’il ne s’agit que de la partie diff.

2
aleemb

Ce problème semble résolu dans le dernier git (j'ai git version 1.9.4.msysgit.1).

C:\git\build>git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff

C:\git\build>git config merge.tool tortoisemerge

C:\git\build>git mergetool
No files need merging
1
Alex R