Hacker News new | past | comments | ask | show | jobs | submit login

Actually 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.




"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".


If 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...


You 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.


This. Thanks, I forgot about SVN!




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: