0

I'm using 64 bit git-for-windows 2.12.2 under Windows7 64 bit system. Also, I have 64 bit TortoiseGit 2.4.0 installed under E:\Program Files\TortoiseGit. Now, I have try to set the tortoisegitmerge.exe as a merge tool, then use it under either bash and git gui.

Here is my setting of global .gitconfig file:

[merge] tool = tortoisemerge [mergetool "tortoisemerge"] path = E:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe 

This setting is from the one answer here: git - Why doesn't tortoisemerge work as my mergetool? - Stack Overflow

This works fine if I try to launch the merge tool from the command line, see the log below:

123@123-PC MINGW64 /d/code/cb/cb_sf_git/trunk (test_merge_gui|AM 3/19) $ git mergetool Merging: src/CodeBlocks_wx31.cbp Normal merge conflict for 'src/CodeBlocks_wx31.cbp': {local}: modified file {remote}: modified file 123@123-PC MINGW64 /d/code/cb/cb_sf_git/trunk (test_merge_gui|AM 3/19) $ git am --continue 

You can see the image shot of the opened window after I run git mergetool, it looks like tortoisegitmerge already fix the conflict, so I just click Save button, and close the tortoisegitmerge, and run git am --continue. opened tortoisegitmerge window

But when conflict happens, I can open the git gui gui tool, and see the image shot here, look, it shows one conflict here.

git gui shows conflict

When I right click and click the "merge tool" context menu, I get such error message box, it said: "Unsupported merge tool 'tortoisemerge'", see image shot below:

error message

While, I have tried other settings in .gitconfig, such as this one:

[merge] tool = tortoisemerge [mergetool "tortoisemerge"] cmd = '"E:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"' 

But there are still other errors when launched either from bash, see below:

123@123-PC MINGW64 /d/code/cb/cb_sf_git/trunk (test_merge_gui|AM 3/19) $ git mergetool Merging: src/CodeBlocks_wx31.cbp Normal merge conflict for 'src/CodeBlocks_wx31.cbp': {local}: modified file {remote}: modified file /mingw64/libexec/git-core/git-mergetool--lib: line 128: E:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe -base:$BASE -theirs:$REMOTE -mine:$LOCAL -merged:$MERGED: No such file or directory src/CodeBlocks_wx31.cbp seems unchanged. Was the merge successful [y/n]? 

While try to launch the merge tool from context menu of git gui, I get the same message box saying "Unsupported merge tool 'tortoisemerge'".

I have tried other settings of the cmd or path field, but without any luck, all get failed.

Any one can help? Thanks.

EDIT: I have tried all the settings in this stackoverflow questions: Why can't I use TortoiseMerge as my git merge tool on Windows? - Stack Overflow, but no luck, all are failed with the same error.

1
  • The message appears to be from L275 of C:\git-sdk-32\usr\src\git-gui\lib\mergetool.tcl (on my local mc). That's github.com/git/git/blob/master/git-gui/lib/mergetool.tcl#L275 on-line. It looks like the git-gui hand codes each of the different command lines, and that doesn't include TortoiseGit. Maybe the next challenge is a neat little patch to pick up the cmd line from the config. Commented Apr 23, 2017 at 18:39

1 Answer 1

1

After debugging for a while, I think I have totally fix this issue, just add a code snippet in the file mergetool.tcl.

tortoisemerge { #set cmdline [list "$merge_tool_path" -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"] #Note: no quote around the $BASE like variables, because those cause escaped quote #and it looks like TortoiseGitMerge does not support such formats. set cmdline [list "$merge_tool_path" -base:$BASE -mine:$LOCAL -theirs:$REMOTE -merged:$MERGED] } 

Then the problem could be solved. See some discussion here: google group discussion.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.