Which source control paradigm and solution to embed in a custom editor application?

Posted by Greg Harman on Stack Overflow See other posts from Stack Overflow or by Greg Harman
Published on 2010-06-08T02:09:39Z Indexed on 2010/06/08 2:12 UTC
Read the original article Hit count: 280

I am building an application that manages a number of custom objects, which may be edited concurrently by multiple users (using different instances of the application). These objects have an underlying serialized representation, and my plan is to persist them (through my application UI) in an external source control system. Of course this implies that my application can check the current version of an object for updates, a merging interface for each object, etc.

My question is what source control paradigm(s) and specific solution(s) to support and why. The way I (perhaps naively) see the source control world is three general paradigms:

  1. Single-repository, locked access (MS SourceSafe)
  2. Single-repository, concurrent access (CVS/SVN)
  3. Distributed (Mercurial, Git)

I haven't heard of anyone using #1 for quite a number of years, so I am planning to disregard this case altogether (unless I get a compelling argument otherwise). However, I'm at a loss as to whether to support #2 or #3, and which specific implementations. I'm concerned that the use paradigms are subtly different enough that I can't adequately capture basic operations in a single UI.

The last bit of information I should convey is that this application is intended to be deployed in a commercial setting, where a source control system may already be in use. I would prefer not to support more than one solution unless it's really a deal-breaker, so wide adoption in a corporate setting is a plus.

© Stack Overflow or respective owner

Related posts about application-design

Related posts about source-control