I'm a newbie on outsystems so correct me if i'm wrong but it seems that, on a merge operation, we are just show both eSpaces and it's differences and that each version is stored with no actual change history, just different versions of the same eSpace.
Subversion comes to mind. And the memories aren't good.
It seems to me that a mercurial/git-like approach is better.
(I've only used mercurial on previous projects, not git)
With mercurial you have a change history and change sets. so two versions of a file aren't just 2 different files who eventually get compared. They are really 2 versions of the same file, with a change set that tells us (and the system) what has changed between them on a given commit moment. This makes it easier to merge code. We are only asked to help when the system has doubts on what is the code we want on the merged version.
From what i read all over the net, git is more flexible(mercurial is james bond, git is macgyver), so it can be used internally on the platform to implement this.