5

I'm new to all this versioning business so please help me understand the different versioning software out there that will suit my need. I've come to a sad realisation that I need to start versioning my documents and code because when I was transferring data through USB, it got really messy and I lost a lot of work in the process. Lost all my design work because I copied the wrong folder and thinking it was safe to delete, did a "shift-del"... Stupidity a side - lesson learnt.

So I did a lot of searching around, and I've settled on Git (on BitBucket) for versioning the source code. However, I'm having a hard time finding a solution for:

  • Documents such as word docx, pdf
  • Design models such as UML and flowcharts
  • Project management and schedules such as Excel spreadsheet or MS Project deliverables

My requirements are as follow:

  • Individual file checkin/checkout capability (for collaboration)
  • File locking on checkout (to prevent conflicts)
  • Ability to a commit a new version without checking in (allow to keep offline if I'm the only one working on the document. On a one man project I would simply keep everything checked out and simply commit for versioning.)
  • Automatic version numbering on commit or checkin

I currently have personal cloud sync to keep file history on each save. However, this is presented in a meaningless state and serves only as security should I make a mistake. The requirements stated above will add a meaningful way for me to review and roll back on "milestones".

Please advise if there is anything out there that meet this requirement.

2
  • Just a comment, you seem to be confusing Git with other VCSs. Git is decentralized, for example, so there isn't really a checkout/checkin process.
    – Undo
    Nov 12, 2014 at 0:27
  • Which is exactly why I'm asking this question. I'm using git for my code. But I want a versioning system for my documents as well. Nov 12, 2014 at 0:34

2 Answers 2

3

Version Control Systems generally do not care about what the files fed to them represent – though they tread file types differently (e.g. binary files). So we can leave the file-specific stuff aside.

From your description, it looks to me as if Subversion might be a good match:

  • Individual file checkin/checkout capability (for collaboration): Possible. Simply specify the file(s) you want to check-in, e.g. svn ci file.doc, svn ci *.pdf, or svn ci files/*
  • File locking on checkout (to prevent conflicts): Possible. Use svn lock <target>, with <target> being interpreted as in my previous example – so you can lock a single file, multiple files, or entire directories
  • Ability to a commit a new version without checking in: No. That would only work with a de-centralized system like Git, which keeps copies of the repository on each machine – but then you'd normally have no locking.
  • Automatic version numbering on commit or checkin: That's a substantial feature of every VCS I'd say, so it's naturally available with SVN as well.

You will have a hard time finding a system matching all your requirements, so you will probably have to decide on what to compromise. With Git there won't be file locking (due to its de-centralized structure, this cannot be done) – which to me looks more important than the "local commits". The latter you could "substitute" by (temporarily) keeping copies of the file in a separate directory, which of course can be excluded from the repository using e.g. .svnignore.

6
  • 2
    It is possible with Subversion to commit a file without releasing the lock (svn commit --no-unlock). I believe this feature could provide a "Yes" answer to point 3. Nov 12, 2014 at 18:49
  • @GregHewgill not "literally" (as commit/checkin are the same with SVN IMHO), but from what the OP wants this seems at least a "partial yes" – so +1 to that from me!
    – Izzy
    Nov 12, 2014 at 21:30
  • SVN, like a lot of VCSs does not do a very good job on binary files such as word documents, you are better off using markdown or similar for the files and generating Word if needed using pandoc. Nov 13, 2014 at 0:00
  • 1
    @SteveBarnes: I don't believe that is the case. SVN diffs files byte-by-byte to store them (as opposed to when doing an svn diff). I have a lot of issues with SVN, but that is one of its strong points. ref: support.wandisco.com/index.php?/Knowledgebase/Article/View/209/…
    – pdr
    Nov 13, 2014 at 0:35
  • SVN is better than say CSV in this respect but if you have large binary files with large deltas, (often the case for even a small change in zipped formats like docx), you can still get server slowdown. Personally I admire hg for its zipdoc and bigfiles extensions to handle this sort of issue. I still advise mardown for document storage as you are not subject to the MS "I will not read that its from 3 versions ago" syndrome. Nov 13, 2014 at 6:04
1

Git and most other source code-oriented tools are not optimal for document management.
What you need is a document management system or ECM system.

NemakiWare is exactly that:

  • Store a hierarchy of folders and documents of any type/size.
  • Modifications are saved as new versions.
  • You can always revert to a previous version.
  • Check out a document, edit it, then check it back in. It will be locked so that other users can not modify it at the same time.
  • Check out/in is not an obligation, you can edit documents without it.

It is free, and open source.

There is a web interface that shows your documents, and allows you to preview them, download them, or move/delete/copy/etc.

You can also associate metadata to a document, for instance a draft/final/obsolete state, or workflow information: waiting for approval / approved for sending / sent to customer.

You mentioned file sync. Using NemakiWare exclusively via the web interface is possible, but NemakiWare also supports the CMIS protocol, so I suggest using CmisSync which will synchronize your documents to/from your computer's filesystem, handling conflicts like Dropbox.

NemakiWare UI

Disclaimer: My company makes both NemakiWare and CmisSync

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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