views:

151

answers:

5

This is not strictly a technical question, however I feel this will be useful for many technical people as well.

I'm looking for a version management / backup solution which need not be only for source code. This could be for non-text files e.g. images.

The requirement is this -

  1. Every time I save the file from within the application, it should create a version.
  2. I should be able to add comments for say, major revisions.
  3. At any time, there should be only one version current.
  4. I should be able to view previous versions without doing a 'restore'
  5. I should be able to move back and forth between versions.
  6. A calendar feature showing the various versions of a file would be helpful, if I could get to it for a specific file from the Explorer context menu

I don't really need to compare different versions or anything like that.

Windows solutions only. I've looked at NTI Shadow and it comes a bit close to what I'm looking for.

Are there any paid / free / open source solutions for the above requirements?

+1  A: 

Pretty much any version control system i know of supports binary uploads. Subversion (in short SVN) is free and pretty popular. If you also download TortoiseSVN you can handle everything from within Explorer.

The only requirement i cannot help you with is 1. automatic saving from within your application. But you can of course do this by copying over your old version of the file in the file system and committing your changes via TortoiseSVN.

PS for some reason i cannot connect to the SVN site right now. It might be down at the moment. It is still a great product, though :)

tehvan
A: 

I strongly suggest using subversion. I have used 4 different version control systems and have found subversion powerful and easy to use.

For windows this is the easiest server to install is Visual SVN

And Smart SVN is the best subversion client I've used.

scurial
A: 

[not an actual answer, just a note about DVCS backup capabilities]

I would not advise for a DVCS (Distributed Version control System) like Git or alike for backup strategy.

As stated in DVCS Myths

So, why make backups of a source control server with so many backups?

  • It is improbable that many servers will suffer catastrophic hardware failures simultaneously, but it is not impossible.
  • A more likely scenario might be a particularly nasty computer virus that sinks its teeth into an entire network of vulnerable machines.

In any case, the probability of any or all of your backups becoming suddenly unavailable is really not the point.
The bottom line is that using independent clones as canonical backups (as opposed to temporary stopgaps) is a suboptimal strategy.

  • Security, for example, should be considered.
    If you are using authorization rules to control access to specific portions of your repository, canonicalizing an arbitrary clone of the repository effectively renders those rules useless.
    While this would rarely be a matter of practical concern in a controlled corporate environment, it is nonetheless possible.
  • (my imput:) Full data backup is not really possible with a DVCS, since it would implies all repositories push their changes to a "central" repository, which is not the main use case scenario in a DVCS (whereas with a classical VCS, anything committed is stored in one place)

The key win of DVCS for backups, then, is that you don't really need to invest in a "hot" backup.
When the server inevitably goes down, DVCS will buy you time. Lots of time. You'll essentially be running at full productivity (or very nearly so) while you rebuild your server from backup.
When changesets created during the server downtime are pushed back to the restored server, the freshly restored authorization rules will be reapplied and you'll be back on track.

So, for us:

  • hot "backup" is actually achieved with SRDF (Symmetrix Remote Data Facility), but that is commercial and is linked to our infrastructure which support LUNs duplication to achieve data replication.
  • incremental daily backup is achieved for a limited set of repositories (including some "central" Git repos), but in our case, with a custom tool.
VonC
A: 

I think you're looking for the benefits of a versioning file system that takes immutable snapshots of files upon each write. You could build this into a DVCS if something set up watches on files contained in the versioned directory (committing each time a file is changed) but that would get ugly, quick.

This topic was also explored in this question. I think your ideal solution would be a DVCS repository that resides on a versioning/cow file system of some type. This lets you manage revisions of each file independently of commits that you make in the DVCS.

Unless, of course, toxic revisions would not be an issue for you.

Tim Post
A: 

In order for this to be transparent to applications (i.e., would not need to have application implement a different API for saving/loading files to access these backup features), you'd want to do this in the Operating System, at its file system layer.

ZFS filesystem could be wrapped to provide the user interface capabilities you describe, but it is doubtful this filesystem would ever reach Windows (directly, at least).

A simpler way to think of this is to look at network storage systems which can provide you the features you need.

NetApp Snapshot offers capabilities that could be tapped to do this at the network storage level. It implements CIFS, so is definitely available on windows. Open your wallet.

If you think this is an extremely important feature, you may consider other OSes than Windows; filesystems and filesystem support in OSes other than Windows are more diverse.

popcnt