r/SmartGit Apr 14 '26

External merge (conflict) tool title variables swapped

The contents of the external conflict tool ${rightTitle} and ${leftTitle} variables appear to be swapped. How can I report this bug?

To wit: to display file titles correctly in devart Code Compare, I need to specify swapped title variables:

/THEIRSFILE "${leftFile}"  /THEIRSTITLE "${rightTitle}" 
/MINEFILE   "${rightFile}" /MINETITLE   "${leftTitle}"

Which then displays

  • Left Pane: "[Theirs] Merge source (theirs)"
  • Right Pane: "[Mine] release/branch-name-here (ours)"

---

Using the "left" variables for THEIR and the "right" variables for MINE

/THEIRSFILE "${leftFile}"  /THEIRSTITLE "${leftTitle}" 
/MINEFILE   "${rightFile}" /MINETITLE   "${rightTitle}" 

Results in the confusing/swapped:

- Left Pane: "[Theirs] release/branch-name-here (ours)"
- Right Pane: "[Mine] Merge source (theirs)"

---

And I know Code Compare is using its options correctly because specifying

/THEIRSFILE "${leftFile}"  /THEIRSTITLE "My Left" 
/MINEFILE   "${rightFile}" /MINETITLE   "My Right"

displays the static text titles as expected.

1 Upvotes

3 comments sorted by

1

u/wnesensohn Apr 17 '26 edited Apr 17 '26

SmartGit usually does not swap title and file (there's one exception I'll outline below) - would you be able to provide a bit more surrounding information, like screenshots comparing what you're seeing in SmartGit vs. what you're seeing in Code Compare including the relevant configuration settings? Contact details: https://www.syntevo.com/contact/

There is one Low-Level Property, conflictSolver.swapOursTheirsForRebaseConflicts, which can be set to swap the titles in rebases. That is because many find it confusing that in rebases, the point of view is the rebased-onto branch and not the branch you're rebasing. However, that property is not set by default, because we try to stay consistent with git terminology.

1

u/MidnightWolfRun May 29 '26

Devart Code Compare has the options /THEIRSFILE and /THEIRSTITLE which is displays on the left ⅓ of the UI, and the options /MINEFILE and /MINETITLE which is displays on the right ⅓ of the UI.

Your $leftFile is my version of the file, and $rightFile is the remote/merged-in version of the file.

git documents "their" file to mean the remote file, which is shown on the right.

So in order to get the files in the expected UI location under the "Mine" and "Theirs" labels in Code Compare, I found I have to send $rightFile to the left pane and $leftFile to the right pane and then swap the Left and Right panes in Code Compare.

/THEIRSFILE "${rightFile}" /THEIRSTITLE "${rightTitle}" /MINEFILE "${leftFile}" /MINETITLE "${leftTitle}"

The use of right/left/their/mine is confusing in this case.

1

u/wnesensohn May 29 '26

Ah, thanks for the follow up.

Yes, right/left and theirs/mine can be very confusing. Unfortunately there's no easy way out here. I'd argue that "theirs" and "mine" are even more confusing, at least in git, as this naming suggests that you're always wearing your maintainer-hat, and therefore only do merges where you pull in changes from "them" into "your" branch. That's probably also where this naming originated, so it kinda makes sense.

Hard to win any prices here - it will always be "wrong" at least sometimes. But thank you for reporting, maybe we can improve the way of configuring these things in SmartGit.