On 10/5/06, Erik Trimble <[EMAIL PROTECTED]> wrote:
Doing versioning at the file-system layer allows block-level changes to be stored, so it doesn't consume enormous amounts of extra space. In fact, it's more efficient than any versioning software (CVS, SVN, teamware, etc) for storing versions.
Comparing to cvs/svn misses the point; as I said, they address comletely different needs.
However, there are three BIG drawbacks for using versioning in your FS (that assumes that it is a tunable parameter and can be turned off for a FS when not desired): (1) File listing symantics become a bit of a mess. VMS stores versions as <filename>;<version> That is, it uses the semi-colon as a divider. Now, I'm not at all sure how we can make ZFS POSIX-compliant and still do something like this. Versioning filesystems tend to be a complete mess - it is hard to present usable information about which versions are available, and at the same time keep things clean. Even keeping versions in a hidden dir (say .zfs_versions) in each directory still leaves that directory filled with a huge mess of files.
"Complete mess" is certainly not my experience (I worked with TOPS-20 from 1977 to 1985 and VMS from 1979 to 1985). The key is that you need to *clean up*; specifically, you need to use the command which deletes all but the most recent copy of each file in a directory at the end of pretty much each work session. It's trivial to present information on which versions are available; you simply list each one as a file, which has the date info any file has, and the version number.
(2) File Versioning is no replacement for source code control, as you miss all the extra features (tagging, branching, comments, etc) that go with a file version check-in.
It's very definitely not an alternative or replacement for source code control, no. It provides a very useful feature to use *alongside* source control. Source code control is also not a replacement for file versioning (I end up creating spare copies of files with funny names for things I'd otherwise get from versioning; and I end up losing time through not having through to create such a file, whereas versioning is automatic).
(3) Many apps continuously save either temp copies or actual copies of the file you are working on. This leads to a version explosion, where you end up with 100s of versions of a commonly used file. This tends to be worse than useless, as people have an incredibly hard time figuring out which (older) version they might actually want to look at. And, this problem ISN'T ever going to go away, as it would require apps to understand filesystem features for ZFS, which isn't going to happen.
Files treated that way are often deleted at the end of the session automatically, so no problem there. Or else they'll be cleaned up when you do your session-end cleanup. What the heck was that command on TOPS-20 anyway? Maybe "purge"? Sorry, 20-year-old memories are fuzzy on some details. File versioning worked a lot better on TOPS-20 than on VMS, as I remember it. The facility looked the same, but actually working with it was much cleaner and easier. Making it somewhat controllable would be useful. Starting with maybe an inheritable default, so some directory trees could be set not to version.
I'd discourage File Versioning at this late stage in UNIX. Source Code control systems fulfill the need for serious uses, and casual usage is obviated by the mantra of "save early, save often" that has been beaten into the userbase. Trying to change that is a recipe for disaster.
Actually, "save early and often" is exactly why versioning is important. If you discover you've gone down a blind alley in some code, it makes it easy to get back to the earlier spots. This, in my experience, happens at a detail level where you won't (in fact can't) be doing checkins to version control. -- David Dyer-Bennet, <mailto:[EMAIL PROTECTED]>, <http://www.dd-b.net/dd-b/> RKBA: <http://www.dd-b.net/carry/> Pics: <http://www.dd-b.net/dd-b/SnapshotAlbum/> Dragaera/Steven Brust: <http://dragaera.info/> _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss