Version control system for projects involving mixed content

0

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?

Rody Oldenhuis

Posted 2014-02-07T14:37:16.150

Reputation: 352

Question was closed 2014-02-09T21:33:18.013

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 – 2014-02-07T14:41:43.727

@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 – 2014-02-07T14:44:15.750

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 – 2014-02-07T14:45:55.727

@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 – 2014-02-07T14:47:01.340

No need to cross-post, it might not get closed here! I'm pretty sure PP would think it to be interesting though..

– Raystafarian – 2014-02-07T14:47:57.097

Answers

2

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.

Rodney Schuler

Posted 2014-02-07T14:37:16.150

Reputation: 1 189

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 – 2014-02-07T16:07:20.993