We used SCCS on a satellite constellation demonstration system. Two developers shared archives via an NFS mounted shared file system. SCCS was a “check out” model, in that if you wanted to make a change, you first acquired a lock, made your edits, then checked it in releasing the lock.
Collections of revisions were self managed as you say.
RCS came along and I think that’s where the $Id$ construct came in. This would expand to the version number of that particular file - if you const char * const idstr = “$Id$” then you could “strings” your binary and see what components were there. Of course, fileguard #ifdef’s would affect this.
Finally, CVS (maybe) had the idea of tagging, which would associate a single label across a current snapshot of different files and their versions.
In 1993-94, ClearCase came on the scene and tried monetizing this concept. A site license cost $30k in 1994 dollars and required a kernel patch for it to work. Try explaining that to your DEC, HP or Sun representative. The software implemented its own filesystem - you would set some kind of version label on a directory and then magically all files and sub folders would appear as of that date. This included libraries, binaries, data files, even crash dumps.
This is all from memory, someone can fact check and correct the finer details.
Nice blog post!