9fans archive / 2001 / 11 / 752 /    prev next

From: Dan Cross <cross@mat...>
Subject: Re: [9fans] Python filesystem
Date: Thu, 29 Nov 2001 14:28:33 -0500 (EST)

In article <20011129144905.6695D19A9F@mai...> you write:
>	echo 'usage: cvshell' >[1=2]

cvshell?  I've noticed a trend in Plan 9 to write compressed word
sequences using all letters, eg, cvsshell.  Now the question arises, is
this a Freudian slip, or an intentional jab at CVS?  :-)

I was thinking about this problem, and one nice thing about RCS/CVS/
whatever is that they store deltas of a file up to a current version.
This is what /n/dump does, execpt that /n/dump has a non-arbitrary
level of granularity, which seems to be what is missing.  Labelling
versions could be handled by a meta-database of files at another level;
eg, have a directory versions/ with sudirectories and files
corresponding to the versions of files that make up a release.

	versions/1/2/1/vers

The files have standard namespace(6) format.  Or maybe even be mkfs
prototypes.  Anyway, there's the ability to make release from arbitrary
things on the dump; just create a namespace with all the named files in
it, and tar it up.

But what about arbitrary commitment to the dump?  It struck me that an
filesystem that mimmicked VMS file versions could give you that.
create(2)'ing a file would make a new version, which was really a delta
on the old.  If the deltas were kept in normal RCS-like files, and
reconsitituted on the fly by the revison control fs, you'd get
basically RCS/CVS, but with the ability to edit things using `normal'
tools; no more CVS commands or strange tools to manipulate the
repository.  Files would be named, eg, file.c;1.4.3.

What do we lack then?  Locking and management of metadata?  There's
probably a way around those, as well.  The revision control FS isn't
well formed for saving; maybe a better solution would be to echo a
revision number into a ctl or new file, and then have that create a new
delta.  Write the file into it, and let the FS take care of picking out
the delta and storing it.  Perhaps a metadata file could be associated
with every file.  eg, foo.c;meta, foo.c;1.0, etc.

Maybe I'm smoking my hair; these thoughts are only half formed.

	- Dan C.