Sourcetree does not update file after external diff resolution

I have an intermittent problem when I try to use an external diff tool (namely KDiff 3 on Windows 10) with sourcetree.

In a usual merge scenario between branches, one file have a conflict. I start KDiff3 using the usual "Resolve Conflict -> Use external diff tool", the tools pops up, and then does it's magic.

Now, for simple modifications (one line) or complex ones (lots of lines), the result is the same. I review the modification, select which branches, and when I am satisfied with the modification, save the file, and then close the KDiff3 app.

Upon my return, Sourcetree has cleaned the compare files (I am refering to the "*_BACKUP_SALT*", "*_BASE_SALT*", "*_LOCAL_SALT*" and "*_REMOTE_SALT*" files that are generated during the call to the external diff app), as it should.

BUT, the original file with conflict remains, as if nothing happened. Which means all my work for conflict resolution has been lost.

When this happens, and because of this I know my handling of the external app is correct, I usually open the diff app, do THE EXACT SAME modification required (easy when only one line is conflicted), but instead of just closing the diff app, i refocus the sourcetree windows, return focus to the diff app, THEN close the diff app, and upon returning to the sourcetree app, all conflict files AND the conflicted file of the merge vanish from the "Unstaged files" windows.

Thing is, sometimes it happens, sometimes it does not, and my "fix" (if you can call it that) does not always prevent this behavior.

In light of this, is this a bug? If there a race condition where sourcetree blocks the correct handling of files by the external app, and then handles any error by just ignoring the modifications to the conflicted file? The is no error message whatsoever in either app, so it is quite difficult to see where things go bad.

Any help on this matter is welcome.

NOTE: I know sourcetree has issues when conflicts appears whenone of the file version is renamed or marked for deletion in the merge sequence: this is not this situation (which I handle by using the branches which deletes the files, usually). This is a standard content conflict on a single file.

2 answers

0 vote

Hi

Thanks for the detailed information. SourceTree does not directly manage the merge/diff process rather it configures git to use the tool of choice and then instructs git to diff using the external tool.

I have copied you details to the following JIRA ticket https://jira.atlassian.com/browse/SRCTREEWIN-7648

0 vote

I am having the same issue... Kdiff is launched.  Merge is completed and saved.  Back to sourcTree... file shows green now, but no changes have been saved.  Would love to find a solution.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published May 30, 2018 in Sourcetree

Tip from the team: configuring Git or Mercurial in Sourcetree

Supported Platforms macOS Windows To make using Sourcetree as simple yet powerful as possible we embed (bundle) dependencies such as Git, Git LFS, and Mercurial. We strive to keep these...

570 views 1 2
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you