[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Unix system version clobbering
Date: Sat, 4 Aug 90 15:25 CDT
From: dmitchell@BACKUS.trc.amoco.com (Donald H. Mitchell)
Architectural background
I'm storing my files under a .sct directory on a Unix fileserver using NFS as
the access mechanism. The user property nfs-generation-retention-count
controls how many versions of each file the symbolics will keep under a unix
directory. The default value is 5.
Problem
Ok, now I want to use defsystem to create and manage multiple versions of
systems. I like the idea of using the retention count control mechanism; so,
first I tried setting the files' protections (file attribute) to 444 (read
only). I then merrily began editing the files further; however, when I did a
dired, my protected files were gone! The retention control mechanism ate them
even though they were protected!
In LMFS there are permission bits for reaping and deleting. There are
no equivalent protections in NFS. The only way to "delete protect"
files is to remove write permission from the directory; but then you
can't create any files either.
Protection mechanisms don't save you from
the grim reaper (notice that this problem is under the Symbolics's control).
Not really. Setting 444 permission does not protect a file from being
deleted under NFS. You would have the same problem if someone edited
the file from GNUEmacs (where the generation-retention-count is also on
a per-user basis).
"Ok, just handle generation retention by hand and set
nfs-generation-retention-count to some absurdly large value", you say.
However, all I need is one new user to get on the system and edit a file and
all the preciously saved versions are gone (don't forget that
nfs-generation-retention-count is a user property)!
What do I do? Go back to changing file names after each version is complete?
Use a lmfs partition (yuch!)?
LMFS does have some useful features. Reap/delete protection is one.
Presumably you could simulate this by adding more funny characters to
the file name (just as versions are simulated). The versioning system
is designed to be compatible with the semi-standard used by GNUEmacs.
But you would lose this compatibility if you extended the syntax.
Set some global retention count control
variable that I can't find? Advise the save file routine not to delete
protected files?
You could use the technique most Unix folks use which is to snapshot
your sources. sct:copy-system can be used to make a copy of a system in
some archive. You could get really creative and use SCCS or RCS to
maintain your archival sources. Check everything out into your .sct
directory, work a bunch, and when you release a version check everything
in and out.