Version Control for Team Collaboration

I am planning to use MPS to implement a DSL which will be used by a team working concurrently on the same project.

This obviously creates the potential for merge conflicts, as the same nodes might be edited by different users and then pushed to the repository.

We're used to resolving these types of issues when working in textual languages, but our MPS-based language will be new for us.

Which version control option is best for handling these types of conflicts with MPS? We've used git in the past.

Is there are risk of major errors (eg - irreversible reference-breaking) being introduced during such a merge?

Thanks for any advice.
We use git for all our MPS projects. Subversion is also supported by the platform. We have now developed several projects with a small (2-5) team.  In my opinion, there is no major risk of error, no more than you would have with git over text files. Operator error is still the main source of problems when merging.  

One drawback that you will experience is that members of the team will not be able to view commits as you would see them in the editor when viewing directly a text-based project on GitHub or BitBucket. Instead, they will see cryptic XML changes. This is not ideal and a web-based MPS viewer for model diffs would be great, but would probably be a substantial endeavor.

You can find our main projects on GitHub if you are still wondering about stability and risk mitigation:
That's great to hear. Thanks for the quick reply. So, considering commits appear as xml, how is the process of resolving a conflict? In this case, are you stuck with manually merging the xml, or is there some friendlier view for selecting "mine or theirs"?
I think you misunderstood my comment. I only mentioned XML diffs in the context of GitHub and BitBucket, not when working with MPS. You get editor diffs at the level of the language when working with MPS.
Great, that's what I was hoping to hear, thanks.

Have you ever experimented with custom editor code using general Java UI libraries? (eg invoking swing from MPS?)

If so, how would this work in this diffing context? Perhaps there'll always need to be a "native" MPS representation of a concept editor, even if there is a custom GUI perspective?
Although you can define multiple editors per concept and distinguish them by "editor hints", the VCS merge dialog currently always uses the default editor to show the code. The Swing components that are eventually part of the default editor are normally displayed and usable. See an example merge.png (227KB)
Great, thanks for the screenshot. This all sounds good. Thanks for responding, everyone.

Please sign in to leave a comment.