[TUHS] Book Recommendation [ reallly inscrutable languages ]

Larry McVoy lm at mcvoy.com
Sat Nov 20 08:28:40 AEST 2021


Hi Alan (and others, should this move to COFF?)

> I'm happy to hear that some folks appreciated what I called "INEX" (for
> include/exclude); one of my contributions to SCCS.

You just got yourself a big fan, anyone who had the insight to add includes
and excludes to SCCS is a smart cookie, thank you for those, BitKeeper makes
heavy use of them.

> I've had to argue against RCS and, of course, deal with CVS, much to my
> chagrin.

You and me both.

> Are you familiar with the concept of SCCS ID lists (slists), which act as a
> table of contents of a "unit" (usually a library or load module)?

That sounds like BitKeeper's ChangeSet file.  BitKeeper's model is
repository based, a repository is a collection of SCCS files that are
all managed as a unit.  It doesn't work this way but you could think
of the original content of the ChangeSet file as

	src/foo.c 1.1
	man/foo.1 1.1

It is <pathname> <revision>

The ChangeSet file is itself versioned so lets say you added a file,
then version 1.2 of the ChangeSet file is

	src/foo.c 1.1
	man/foo.1 1.1
	examples/foo.eg 1.1

Because pathnames can change (BitKeeper has pathnames versioned just like
the content is version) we had to come up with a non-changing name for
pathnames (think inode # but it has to be globally unique).  Ditto for
revisions, they get changed all the time because of merges.

BitKeeper's internal names look like (you can skip this for now):

Inode:

lm at lm.bitmover.com|man/WhatIs|19980710174007|58324|a9558aeac091a142

or

user at host.domain|relative/path|date|chksum|64 bits of /dev/random

Revision:

lm at work.bitmover.com|man/WhatIs|20000205064107|58704

or 

same as the inode but skip the 64 bits.


Getting back to useful stuff, you can clone a repository to any commit,
all that does is check out that version of the ChangeSet file and strips
off deltas until the tip matches the revision from that version of the
ChangeSet file.

BitKeeper was the first fully distributed SCM system, Git, Hg, et al,
are all inspired by BitKeeper (and would have done well to copy it more
closely, Git in particular is just awful).  BitKeeper owes a tremendous
nod to SCCS, SCCS taught me the value of that file format.

--lm


More information about the TUHS mailing list