Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My question: is there a reliable and simple version control system/mechanism/platform/... for projects with content that is effectively monolithic, opaque stuff?

Most of the projects I work on contain a mishmash of the following file types:

  1. Plain-text content (C, Java, ..., data files, bash scripts, ...)
  2. MS Office documents (Word, Excel, Visio, ...)
  3. Vector graphics files (SVG, EPS, ...)
  4. Simulink® model files (.mdl, similar in format to JSON)
  5. Our custom-made unit test framework (generated XML files)
  6. ...misc. other things with similar limitations

Currently we always put everything in one big subversion repository. Obviously, this only works well for the plain-text files. All the rest is unmergeable when treated as plain text.

For some of them there are "managed" version control systems, which we indeed use on top of subversion. For example, for MS Word documents we use the "track changes" feature. This has effectively become our version control system specific for MS Word documents. We then create copies of the document in the subversion repository whenever some version of the document needs to be tagged/delivered.

Similarly, there are managed ways to concurrently develop Simulink models, concurrently author vector graphics, etc.

But as you can imagine, I'm quite unhappy up with this workflow. Something like "track changes" doesn't prevent two users from editing the same document at the same time. Changes of both cannot be merged, and merging needs to be done manually (I'm not going to even mention document corruption). Same with the Simulink framework; real concurrency is impossible.

It's just a pain this, not to mention completely inefficient since a lot of manual copying and twiddling of files is required to keep everything properly versioned -- having everything in a subversion repository has become not much more than a convenient alternative to e-mailing documents around (which is only convenient for the people not managing the repository...).

Something like Sharepoint could solve the problem for MS Word documents, but it's not a general solution; we still have these other file types to deal with. Something like subversion plugins/hooks/etc. could work, but can be hard to get right and also a pain to keep up to date, plus it could be a significant investment since we'd probably need to develop custom plugins for things like Simulink model files...

So my question: is there a reliable and simple version control system/mechanism/platform/... for projects with content that is effectively monolithic, opaque stuff?

share|improve this question

closed as off-topic by Raystafarian, BBlake, Tog, Kevin Panko, Dave M Feb 9 '14 at 21:33

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking product, service, or learning material recommendations are off-topic because they become outdated quickly and attract opinion-based answers. Instead, describe your situation and the specific problem you're trying to solve. Share your research. Here are a few suggestions on how to properly ask this type of question." – Raystafarian, BBlake, Tog, Kevin Panko, Dave M
If this question can be reworded to fit the rules in the help center, please edit the question.

As interesting as this question is and as much as I'd like to know an answer, strictly speaking, it is asking for a software recommendation, which is off topic. Perhaps it could be reworked? – Raystafarian Feb 7 '14 at 14:41
@Raystafarian: Do you know of a stack site where such questions are allowed? I didn't ask this question on Stack Overflow for exactly this reason...I'm asking because I'm not sure that it can be reworked, because the purpose of the question is indeed to get a recommendation for a tool/method/... – Rody Oldenhuis Feb 7 '14 at 14:44
IF it gets closed, the only one I can think of would be to try personal productivity. Workplace would be off-topic too. Maybe project management. You could look at database admin, server admin or even infosec to see if it'd be on topic there, I'm not sure. – Raystafarian Feb 7 '14 at 14:45
@Raystafarian: OK, then for the moment I'll cross-post the question on both sites, and let both communities decide where it fits best. – Rody Oldenhuis Feb 7 '14 at 14:47
No need to cross-post, it might not get closed here! I'm pretty sure PP would think it to be interesting though.. – Raystafarian Feb 7 '14 at 14:47

For svn you can use file locking on large unmergeable files. This is a property that you apply to the large, unmergeable files. These files will, by default, be read only when checked out. You then svn lock them to make the editable in the working copy and mark them as locked on the server. If somebody else tries to svn lock the file they will get a notice that you have that file locked. You can configure svn to automatically apply the needs lock property based on file extension.

Other version control systems have other answers to this problem.

share|improve this answer
Feels like a workaround, rather than a real solution...Often we put Word files on a shared network drive and edit directly off of that drive. MS Word locks the file for editing, warning other users about it. Same mechanism, simpler implementation, but has the is the drawback that it's Word-only, and documents are no longer in the repository. I'll look into this. Sadly git is not an option, as we are tied directly to the repositories our mothership uses :) – Rody Oldenhuis Feb 7 '14 at 16:07

Not the answer you're looking for? Browse other questions tagged or ask your own question.