6 ms·
Is this just a historic artifact, or does it have some practical use?
by arka2147483647 8y ago
Is this just a historic artifact, or does it have some practical use?
- andrew_ 8y agoI'd wager historical artifact. The feature set in git alone steamrolls SCCS, and concurrency methods have decidedly moved away from lock in favor of merge. There's also been little activity in the last three years or so. I'd also wager there are still some good uses for it, and it's probably enjoying use by some folks still, but it looks like it's gone the way of CVS.
- janoc 8y agoActually this is a real relic (started in 1972!). The original open source (SCCS used to be proprietary) RCS tool that predates CVS (CVS was built on top of RCS) was meant as an alternative to SCCS, with similar functionality. SCCS was horrible, even by CVS standards. I had the "pleasure" of using this on HP UX back in the day and it wasn't fun at all. * File oriented, there is no concept of an atomic commit, change set or anything similar, every file is independently tracked - so your commit may fail halfway (e.g. because of a conflict) and the repo is left in an inconsistent state, with some files having their changes applied and some not. RCS and CVS have inherited this wonderful design trait too. One of major Subversion improvements over CVS was introduction of atomic commits that either succeed or fail but not break halfway. * Locking. Yay. You checked out a file, it got locked. If you forgot about it and e.g. went on vacation or something, everyone else was screwed until you came back ... Even CVS was not working in this way. * Frequent file corruption. Hacking the ,v files was frequent, sometimes you had to do it as root (e.g. in the above-mentioned case of a colleague on vacation leaving a file locked). Hopefully you had good backups ... * Yay for the wonderful "comma vee" extension that meant this didn't work on anything but Unix and even there some tools choked on it. Same for RCS and CVS ... * No way to access the repository remotely, except over NFS, with all the associated problems. SCCS (and RCS) were really meant to version individual files, such as system configuration files. There it was working relatively OK. However, using this for actual source code on a larger project with multiple developers was a pure masochism. I can't imagine anyone using this today. Even CVS runs circles around it, not to mention Subversion, Git or Mercurial.
- russfink 8y agoThis. Thanks, I forgot about SVN!
- deleted 8y ago[deleted]
- lscotte 8y agoIf I'm not mistaken, one more is that the only fully stored file in SCCS is the first commit, from them on its just the deltas. Checking out a lot of files with a long commit history could take a while on the old hardware we had back when SCCS was more common. RCS improved in this by doing the reverse: the latest file is fully stored and deltas go backwards in time. Again, that's if memory serves correctly...
- dfox 8y agoYou are mistaken, while it is true that first revision is stored essentially as-is, this ceases to be true when you create another revision. SCCS stores all the revisions interwoven in single file (the format is called weave) by tracking on per-line basis the range of revisions that contained such line.
- _kst_ 8y ago"Yay for the wonderful "comma vee" extension that meant this didn't work on anything but Unix and even there some tools choked on it. Same for RCS and CVS ..." RCS and CVS use "filename,v". SCCS uses "s.filename".
- ansible 8y agoYep. It is kind of amusing how tracking history has evolved over the years. We started out with an initial version (of a file) and then tracking the changes since the beginning. One of the major innovations with RCS was to track changes in reverse time, so that the latest version of the file was quickly accessible. And with git and other DVCS, we're back to forward-time tracking of changes, but now with snapshots along the way to easily produce the current version on a branch. While it's amusing to see someone still working on it, for new projects, if I was interested in not using git, I'd likely go for fossil just because it integrates many other useful tools like issue tracking. It is unfortunate that an integrated issue tracking never seemed to get widespread adoption in the git world.
- jimktrains2 8y agoGit doesn't store deltas, it stores the whole object for each version of the file.
- wolfgang42 8y agoIn theory, Git doesn't store deltas. In practice, it uses packfiles which store some objects as diffs against other objects. (As I understand it, though, it doesn't do this strictly by time, it has some heuristics to find the most similar other object which may pick completely unrelated objects if they're similar enough.)
- jimktrains2 8y agoMy understanding is that that's an optimization for space and only used for much older commits. Pack files aren't needed in or present in every repository. They're more an archive than part of everyday usage is my understanding.
- beefhash 8y agoI think it's somewhere inbetween, similar to the heirloom-doctools. You can interact with any live SCCS repo -- if you find any outside of BitKeeper (whose format seems to have diverged anyway). And for some reason it's in POSIX. I'm pretty sure nobody even cares about its existence in POSIX, but it's technically there. Though I can't think of a single OS that ships SCCS; OpenBSD ships GNU CVS and their own RCS (OpenCVS is sadly in eternal limbo[1]), not sure what FreeBSD does. Linux distributions generally don't ship anything. And git has basically won anyway. [1] http://openbsd-archive.7691.n7.nabble.com/Status-of-OpenCVS-td318199.html http://openbsd-archive.7691.n7.nabble.com/Status-of-OpenCVS-...
- pjmlp 8y ago> Though I can't think of a single OS that ships SCCS Commercial UNIX systems do. Check the documentation of Aix, HP-UX and similar.
- deleted 8y ago[deleted]
- AdieuToLogic 8y agoRecent FreeBSD's do not, though the what[0] command has been ported from SCCS and is, IMHO, the only part of SCCS which remains relevant. 0 - https://www.freebsd.org/cgi/man.cgi?query=what&apropos=0&sektion=0&manpath=FreeBSD+11.2-RELEASE&arch=default&format=html https://www.freebsd.org/cgi/man.cgi?query=what&apropos=0&sek...
- anthk 8y agoI think OpenBSD switched to its own CVS binary. EDIT: So, not yet, but they will. OpenBSD has a long story of reimplementing GNU tools in BSD, see the bc(1), dc(1) history.
- beefhash 8y agoWork on OpenCVS started in 2004[1] and schwarze@ said last year that the project is "dormant" and in a state where "trying to use it in production revealed instabilities that were non-trivial to debug, and nobody did the work to get if from 'almost ready' to 'reliable'." [1] https://bsd.slashdot.org/story/04/12/06/1154242/new-bsd-licensed-cvs-replacement-for-openbsd https://bsd.slashdot.org/story/04/12/06/1154242/new-bsd-lice... [2] https://marc.info/?l=openbsd-misc&m=149453183500614&w=2 https://marc.info/?l=openbsd-misc&m=149453183500614&w=2
- kchoudhu 8y agoI migrated the mortgage desk of a major investment bank off SCCS in 2010. These old tools are more common than the cool kids would have you believe.
- canhascodez 8y agoA single department of one organization, eight years ago, which you migrated to something else? You seem to be contradicting yourself. Any current use of SCCS would exceed my expectations, but I'm quite confused by your example.
- kchoudhu 8y agoEven in tech, 8 years is not a long time. When I said that there was SCCS in use at a major bank in 2010, the hope therefore was that the reader would think "that probably means that SCCS is in use elsewhere".
- smarks 8y agoFrom my point of view this is primarily a historic artifact, with limited practical use. As I mentioned in another comment, my projects (at Sun in the 1980s and 1990s) used SCCS on shared filesystems. For day to day work everything has long since moved to other VCSes such as Git and Mercurial. The JDK sources were maintained in SCCS (which was wrapped within CodeManager/Teamware) prior to being open sourced in 2007. The history in the OpenJDK repositories goes only back to that time. The (Oracle internal) archives of previous versions of the JDK, which date to before JDK 1.0, are still in SCCS format. I'll occasionally browse through the ancient history of these sources using Schily's SCCS implementation. What's cool is that all my old shell aliases and functions still work. Of course this is browsing/viewing only. I haven't checked in an edit using SCCS in decades.