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:
- Plain-text content (C, Java, ..., data files, bash scripts, ...)
- MS Office documents (Word, Excel, Visio, ...)
- Vector graphics files (SVG, EPS, ...)
- Simulink® model files (.mdl, similar in format to JSON)
- Our custom-made unit test framework (generated XML files)
- ...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?