+13
Completed

Rebase: make rebase conflicts better understandable

Marc Strapetz 7 years ago updated by Thomas Singer 4 years ago 8

When having a feature branch with multiple commits and rebasing onto the development branch, conflicts may be hard to understand:


- it's should be clear at which commit the conflict has occurred, which commits have already been processed and which commits are left to process


- maybe the involved commits for the conflict can somehow be visualized

This is maybe unrelated, but the tools might be somewhat similar or at least you might bake a solution that could satisfy both cases.

What would be extremely helpful in the Conflict Solver is to know what was the change that occurred on a side alone. This is something you do not see from the Conflict Solver window (correct me if I am wrong). This is extremely useful because often the changes from one of the side is very simple (like a name change) yet it yields lots of conflict.  If there could be a way to see the change that happened on one side that we are trying to merge to help understand what's going on. 

Let me try to explain differently:

If you are the creator of that simple change and it was recent, then you can "remember" what it was and you can proceed doing the merge easily. (essentially re-doing the simple change over the new code, like a repetitive change spread all over the file). But if you have no idea what was the original simple change, then it is not always obvious to understand what's going on. When I suspect I might be in that situation, I go back in history on both sides to see what are the changes alone to understand. It takes time and is not always obvious on how to go about doing that in SmartGit/DeepGit. If we could temporarily see the changes from one side easily this would be by far the best conflict solver I've ever seen.  

I think the changes of a "side" would be showing the diff of that file between the version before the current merge up to the "common" commit. (i.e. what we are trying to merge essentially).

If you need more information on this topic, I might be able to provide a better thorough example.

Do you know that you can open the base-file changes from the Conflict Solver?

Oh wow! I didn't realize what it was (or I never saw it). Yes, this looks like exactly what I needed. Awesome!  I do not want to hijack this "Idea" thread too much as it is clearly OT now, but anyways, I guess my thing boils doing to a UX issue (i.e. discoverability of the feature). Hum, maybe add a button on the toolbar to jump to the Base (and maybe one in the base to open the Merge window)?  And even better: display some stats about the Merge Diffs i.e. "+14 -400" and include the Base Diffs numbers too so at a glance we can see where the "meat" is coming from. Maybe even have more clever numbers that would help determine how "simple" is a change (number of characters? % repeated character change? Anyways, call me crazy)

Do you have an suggestion what the base file changes toolbar button icon should show?

As someone who asked for "Base File" thing for years and finally convinced SmartGit team to implement it, I must also admit that the feature shall be more visible :)


As for the icon, I can imagine 3 "pages", left one with red diffs, right one with blue, and center one half red, half blue. You can also add a magifier to it.

The next 17.1 build will have a toolbar button for the base file changes.

And yes, I totally agree that it shall be clear which commits are already processed before conflicts and which commit caused conflicts.

Completed

Already fixed since 19.1.