looking for a revision file system
I'm looking for a filesystem (working through FUSE is fine) that keeps revisions of files (or anything else). It would conceptually resemble a revision control system like CVS, GIT, HG, SVN. But I don't want something that wraps a filesystem on top of one of these revision control systems. I'd rather it operate on top of a regular file tree.
The way I'm thinking about how I might do this if I were to implement it is this. It would be a reflective file system in that it's basis would not be a partition, but instead, would be a file tree on another filesystem. It would store things in that file tree however the design implements it. The stored files could be actual files that are presented, or delta files to save space when large files have small differences, or meta files to manage things.
The mounting of this file system would have at least two different modes:
1. A read-only access to any past revision. The mount would have to specify what revision to access, however revisions are identified. A variant of this mode would present all revisions under a top level pseudo-directory that has names for each revision.
2. A writable current mount mode. Changes made here would create new revisions.
One issue is when do writes and changes increment the version. I seriously doubt anyone wants a new version triggered when one block of a file gets updated. Even when a file being written or updated is closed would be excessive. The revision increment should be roughly equivalent to a complete check-in on a typical revision storage system. An unmount after any change should certainly be the minimum to increment the revision. But it might be desired to leave it mounted across an increment, so some means to force an increment would be good. Maybe "mount -o remount,revisionincrement=yes /mnt/revfs" would be good enough.
Note that this would not be a distributed revision control system. There would be no check-out (that can be changed and later checked back in). Maybe that could also be done, but I would see that as complicated beyond what I would need this kind of thing for. I don't want this as something to replace a revision control system.
Has anyone seen anything like this? Would it have any uses to anyone other than me? One use I'd put it to is as the target when I make backups of other systems via rsync.