[net.unix] Multigeneration File Systems

henry@utzoo.UUCP (Henry Spencer) (07/30/84)

The only version-numbering file system I've ever heard of that actually
sounded good was the one CMU designed for their Spice project.  (Don't
know if it was/is implemented the way the tech report described it, but
that's another story.)  They took the view that (by default) once you
created a file, it was immutable -- any attempt to change it resulted
in creation of a new file, i.e. a new version number.  This was automatic
and inescapable, and applied to *all* attempts to change the file --
there was no way to alter an existing version at all.  The idea was that
old versions would be migrated, automatically and fairly quickly, out to
laser disk or some similar bulk-storage medium, cheap enough and big
enough that you could afford to save everything forever.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

Laws@SRI-AI.ARPA (08/03/84)

From:  Ken Laws <Laws@SRI-AI.ARPA>

The EUNICE operating system offers multiple file versions
as a user-selectable option.  I prefer the Unix single-version
style, but everyone else at my site uses multiple versions.
(There have been some minor difficulties in my trying to maintain
single versions on a system where a directory may have multiple
file versions when I cd to it, but EUNICE handles the split
approach to file management rather well.)

I use both Tenex and Unix almost every day, and I prefer the Unix
style.  I've never seen the advantage of having five files with the
same name, or of having my directories fill up with garbage
files.  Multiple versions play havoc with any automatic
archiving system because version 1 on tape needn't match version
1 in your directory; worse, you may end up with several different
versions 1's archived.  Implementing cp and mv in a multiversion
environment is also tricky, and EUNICE hasn't always done it right --
I'm not sure whether the current version keeps sticky version numbers,
properly collates file foo >>after<< files foo.1, foo.2, etc.; and
handles conflicts when you try to copy foo (actually foo.#) into a
directory containing a file foo with a different version number.

When I need old copies of files, I prefer to save them explicitly
with names like foo.old or foo.bug.  When I need automatic saving
of files to be edited I obtain them via a shell script wrapped
around my edit command -- that gives me the flexibility of saving
the copies in /tmp instead of in my own directory.  Soft deletion
can also be achieved by using a shell script around rm that copies
deleted files to /tmp.  Multiple versions are just one more
complication for anyone trying to write software that parses
file names for any reason, and I for one don't need the hassle.

					-- Ken Laws
-------