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.