[LispM] NFS file version: naming conventions
Alfred M. Szmidt
ams at gnu.org
Fri Aug 4 08:31:38 PDT 2017
You *could* have unversioned "foo.lisp" but I don't remember if it
handled in the correct way that you're thinking (e.g. it being
:version :newest, and opening it for writing generating a new
numbered version and renaming the old one, etc.)
I'm sure that was the behaviour -- question is if this was a fix I did
or if it is default? That I don't remeber right now.
The system certainly did that correctly on ITS and LMFS (and
TOPS-20 and VMS), but all of those filesystems natively supported
versions in the first place. As you know, the Unix support for
this is a complete hack that neither the Unix filesystem nor any
Unix programs or shells understand.
Unix as such is a complete hack.
There is no standard versioning convention on Unix, and at the time
I remember Unix people thinking we were weird for wanting versioned
files at all. (I don't believe they had RCS in mind, either.)
Nowadays, the most official place that a Unix versioning scheme
appears would be in links to dynamic library modules, and it's
"libXpm.so.4.11.0".
But those aren't really "versioned files" though (they sometimes refer
to the ABI version ... sometimes not), nor is there anything remotley
standard about them how they change. The number is completely
arbitrary and you could use the more classical tilde naming just as
well without anything really caring.
Only Emacs uses the ".~213~" convention, and it is not for normal
versioned files. It is for BACKUP files.
Which for all intents and purposes are versioned files as they would
have been on a Lisp Machine. The behaviour of what Emacs does is
almost exactly the behaviour of Zmacs (lock files being one thing
being different). The major difference is how they are stored on the
file system.
Those are files that will be elided in directory listings ("ls -B")
and are considered something to be (perhaps automatically) deleted.
Same for versioned files on a Lisp Machine, they would get expunged
after this or that many versions.
In fact, there are no unversioned files in the Symbolics source
tree. There are only versioned files.
This isn't entierly true, FASL/BIN files are "unversioned" -- there
is/was only a "latest" version of it -- normally version 1. The same
was the case on ITS and MIT Lisp Machines.
So, if you are using GNU programs that are aware of the Symbolics
convention, it may appear (e.g. in Dired) that there are no files
there at all!
I'm not sure what that means? Dired will show "tilde files" just fine
by default.
And you have to be very careful not to accidently delete any of
those "backup" files you do see. I think this is not a
coincidence.
The same can be said for dired on Lisp Machines. It is very easy to
expunge a full directory of files, just like in Emacs.
If I were implementing file versions for Unix today...well, I'd do
it on the Unix end with a version-aware filesystem that's slightly
more sophisticated than the ones we had on ITS et al. Then the
LispM could have a file access-path that spoke natively.
Maybe just get LMFS or Local-File working as a FUSE file system
... both are far nicer than the crud we have on Unix.
More information about the LispM
mailing list