Merging Conflicts

  
I am wondering how to merge conflicts in code and components in OutSystems (e.g.  preparations, JavaScript in web blocks).  The documentation indicates that this operation is a one-or-the-other sort of scenario, where you need to choose one version entirely and can’t merge parts of both conflicting versions.
 
 
Two Examples:
 
1—
John and Jane are working on the same preparation, starting with the same version.  Jane adds a comment to her version, and publishes.  John adds several widgets and tries to publish.  John gets the 
‘Modified version detected’ screen because Jane had already published.  Since it was the same preparation, it’s a conflict and needs to be manually merged.  Unfortunately, John needs to choose either Jane’s version or his version, he cannot merge the two even though technically Jane’s addition (just a comment) does not interfere with what John added.  John is required to either take his changes then manually add in Jane’s comment, or take Jane’s comment and manually add in his own changes afterwards.
 
2—
John and Jane are working on the same web block JavaScript, starting with the same version.  Jane adds a line of code at the end to show an alert box, and John adds a line of code at the beginning to display a username in a console.log statement (these code additions have no dependencies on each other).  Jane publishes and it goes through.  John tries to publish, and the ‘Modified version detected’ screen pops up.  Again, John needs to take either Jane’s changes, or his own changes—he can’t merge the code line-by-line.  John decides to take Jane’s changes, then adds in his own changes manually afterwards.
 
 
The documentation advises us to the following:
 
“In a conflict you have to choose between publishing your changes or the changes of the other developer. Normally, you keep the other developer's changes because you know what you did and you can replicate it. However, you can always discuss it with the team and decide which changes to keep.”
 
But in the case of more complicated changes than the examples I gave above, and with larger teams, this model could be extremely difficult to follow.  Are there any methods or strategies we could use to get this granularity of conflict merging?

Thanks,
Mike
 

Modularize things enough so to minimize the chance that more than one developer needs to change the same piece of code.
Hi Gerry,

We are looking for a better conflict resoltuion process. These types of merges can and will happen with larger teams regardless of modularity and planning. Other source control tools have this functionality as a necessity.

Is there any way, in OutSystems, to get the level of merging that we are looking for?

Gerry wrote:
Modularize things enough so to minimize the chance that more than one developer needs to change the same piece of code.
 
 

I know what you are referring to and I am not aware of anything in Outsystems that lets you get more granular than what's available in the built-in Merge tool.

However, once you split out complex pieces into multiple eSpaces, you'll find that you can have multiple developers working on a project and they'll be able to stay out of each others hair.