Cannot Launch KDiff3 External Merge Tool from Sourcetree

Matt Erman
Contributor
November 1, 2017

I am not sure what the issue is all of a sudden.  It was working a few times, then all of a sudden it no longer will work.  It says it is launching the tool but then nothing happens.  I am unable to effectively resolve conflicts and need this to work properly.  

 

I updated to 2.3.5 and it still isn't working.  Has anyone else solved this issue?

12 answers

1 accepted

1 vote
Answer accepted
Matt Erman
Contributor
November 5, 2017

To anyone else having this problem do yourself a favor and download GitKraken.  Problem solved.  They apparently know how to use GitMerge and GitDiff properly.

lharringtonpods
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 3, 2018

This is not a real solution to the issue at hand. It is just using a different product.

Like Brian Boyd likes this
quantifeed
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 14, 2019

He is not wrong tho

5 votes
s7197
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
May 7, 2020

When I initially checked my .gitconfig file I didn't have the difftool and mergetool lines. I manually added them and successfully initiated a merge from the comand line as minnsey's suggestion, but through sourcetree I was getting the same error as before (merge dialog opens, merge files were generated, merge dialog closed itself).

Following the diagnostics in this thread: https://community.atlassian.com/t5/Sourcetree-questions/Sourcetree-Won-t-Launch-External-Diff/qaq-p/1136586 I found Sourcetree was trying to read from H://.gitconfig, but I don't havae an H drive.  

Adding a HOME environment variable and pointing it to %USERPROFILE%, then restarting Sourcetree and desetting and resetting my diff and merge tools fixed it.

Rob Blodgett
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
September 9, 2020

After trying various external diff tools, this is what finally worked for me in the release of Source Tree I downloaded today (9/9/2020).   Too bad this is not documented anywhere?  You need a HOME environment variable for the Windows source tree client to work with external diff and external merge tools.

Like # people like this
dmackay09
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
September 17, 2020

so easy when you know how!

Can we bump this solution up?

Paul Dutka
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
October 16, 2020

This fixed it for me! Thanks!

4 votes
Matt Erman
Contributor
November 5, 2017

This is straight up Bullcrap from a "professional" software developer to release something with such a buggy MUST HAVE feature.  How the hell can you release a product that for half the people there is no way to open an external merge/diff tool because sourcetree screws something up that leaves you attempting to go through 50 different posts to try and fix, STILL unsuccessfully I might add...

 

This is completely unacceptable.  I'm sorry but until Atlassian gets their head out of their ass and fixes this bug that has been in countless versions, including the latest one, I'm done using it.    I've spent 5 hours trying to resolve it, I don't have anymore time to play "find a workaround for my broken features".

3 votes
minnsey
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
November 8, 2017

Hi
I use KDiff3 daily and its working for me. Can you provide some more details so we can try and work out the differences?

Can you check the git config settings, does it contain:

mergetool.sourcetree.cmd='C:/Program Files/KDiff3/kdiff3.exe' "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"

Sourcetree uses that setting by running

 git mergetool -y --tool=Sourcetree {filename}

Does that work from your command line?

minnsey
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
November 8, 2017

you can try the diff equivalent as well 

e.g.

git difftool -y tool=Sourcetree {oldcommithash} -- {filename}

Like ilia lobov likes this
Linked2Mark
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 29, 2019

I am having the same problem yet it looks like most of the posts are a few years old.

How can I make SourceTree work?

2 votes
Dwayne Perkins
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
November 14, 2018

I was having the same problem.  There are two settings in sourcetree in the Tools->options menu under the Diff tab where you need to set it to Kdiff3: the diff tool and the merge tool.  Ensure that both of them are configured to used Kdiff3.   I failed to notice that my merge tool settings were set to "System Default".   As soon as I fixed this, everything worked normally.

2 votes
Joshua Brown
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
November 9, 2017

Yesterday it wasn't working for me. Today, it magically is. Here are the contents of my .gitconfig file.

 

[difftool "sourcetree"]
cmd = 'C:/kdiff3/kdiff3.exe' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = 'C:/kdiff3/kdiff3.exe' \"$BASE\" \"$LOCAL\" \"$REMOTE\" -o \"$MERGED\"

Dwayne Perkins
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
November 14, 2018

Your answer helped me because the mergetool setting wasn't in my .gitconfig file.  Putting it in there manually did not help, but it did make me take a 2nd look at the settings in the sourcetree UI.   I did not have the mergetool configured correctly.

Victor Cheung
Contributor
November 14, 2018

This helped me too as I am a windows sourcetree user.  

Another problem I had was in the sourcetree options.  Under the "Diff" tab options there are 2 settings, one for "External Diff Tool" and one for "Merge Tool".  I assumed I had to set the "External Diff Tool" because it had the word "External" in it, but it was actually the "Merge Tool" that I had to set in order for it to work.  This should be called "External Merge Tool".  -_-

1 vote
Richard_Crouch
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
October 24, 2019

I am having this problem with version 2.6.10.0. Seems whichever way I try to resolve this is not working.

1 vote
Piotr Gradkowski
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
June 28, 2018

In my case there's a tweak to this issue: I have a merge with a number of conflicts to resolve. I can resolve 1 conflict using kdiff3 (the KDiff3 commands configured as suggested by Joshua Brown). After this one conflict is resolved, I can't resolve any other - KDiff3 doesn't launch, as described above.

minnsey
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 3, 2018

Hi

KDiff will not  trigger if, for example, the file in conflict has been deleted in one side of the merge or I've also seen cases where Sourcetree/Git appears to report a file in conflict but without any changes, possibly just whitespace? In this case KDiff will not trigger either.

We are aware of some of these annoying edge cases and plan to improve them in the future.

Todd_Menier October 9, 2018

@minnsey A file being deleted on one side of the merge is considered an edge case? Took me forever to figure out that this is why KDiff didn't open. But now that I know I'll be on the lookout for it. Thanks.

0 votes
rabbit1210
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
May 28, 2020

One thing that causes this issue to occur for me is if the branch I'm trying to merge into mine deleted a file, it will appear as a merge conflict if I made changes to that file. Then when I try to resolve the conflict Kdiff3 just won't open and I won't get any kind of message or indication why.

I don't know if that's on Sourcetree or Kdiff or both, but one of them should really do a better job handling that particular situation. Obviously this doesn't occur very often, so every time it does I don't think to check if the file I'm trying to merge has been deleted, so I spend a good hour or 2 ripping my hair out trying to figure out why nothing is working.

0 votes
Batuhan Bulut
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
March 24, 2020

Having same issue on version 3.3.8

In my situation the conflicted file's old version removed from both git and disk. One of my teammate has changed the file meanwhile. So when I pull her changes after my removal the conflict happened, maybe this is why KDiff3 couldn't manage to open comparison.

0 votes
Drakeo September 5, 2019

still broken for linux what is with this HG no problem wtf devs git hub NP

0 votes
Mark Keckeis
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 29, 2019

Trying to resolve using Kdiff and would like to continue using SourceTree. I was able to resolve 5 or 6 conflicts and then Sourcetree simply stop launching Kdiff3.

What is going on?

Victor Cheung
Contributor
August 29, 2019

Check the Tools / Options / Diff tab, make sure the Merge Tool is set to KDiff3, it may have reset itself back to "System Default":

SourceTree_2019-08-29_13-39-28.png

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events