SRC, four years later

Four years ago, I wrote an entire version-control system in a 14-hour burst of inspiration. It’s a small, lightweight tool designed for solo single-file projects that allows several histories to coexist in a single directory – good for /etc files, HOWTOs, or that script collection in your ~/bin directory. I wasn’t certain, at the time,… Continue reading SRC, four years later

src 1.13 is released

My exercise in how small you can make a version-control system and still have it be useful, src, does seem to have a significant if quiet fanbase out there. I can tell because patches land in my mailbox at a slow but steady rate. As the blurb says: Simple Revision Control is RCS/SCCS reloaded with… Continue reading src 1.13 is released

Symbols in SRC-SCCS

The SCCS back end to SRC doesn’t support named symbolic references to numbered revisions, because SCCS masters don’t include a symbol table. This is one of the things RCS added. Goddess help me, I’ve figured out how to shoehorn in this feature. And probably should not do it.


I needed a break from serious work yesterday, so SRC now speaks SCCS as well as RCS. This wasn’t difficult, I had SRC carefully factored in anticipation from when I originally wrote it. I can’t say I think this feature will be actually useful; SCCS is pretty primitive, and the SRC support has some annoying… Continue reading SRC goes SCCS

SRC 1.0 is released

If you were reading A&D a year ago, you may recall that I invented a new version-control system to occupy an odd little niche that none of the exiting ones serve very well. Well, actually, it’s a shell around a very old version-control system that makes a reasonable fast version-storage manager but has a crappy… Continue reading SRC 1.0 is released

How to spot a high-quality repository conversion

In my last post, I inveighed against using git-svn to do whole-repository conversions from Subversion to git (as opposed to its intended use, which is working a Subversion repository live through a git remote). Now comes the word that hundreds of projects a week seem to be fleeing SourceForge because of their evil we’ll-hijack-your-repo-and-crapwarify-your installer… Continue reading How to spot a high-quality repository conversion

Progress towards the extinction of CVS

The Great Beast, designed for converting large CVS repos, is now in full production. It hasn’t killed off any specimens in the wild yet (and I’ll explain why in a bit), but it’s doing spectacularly well on our test repositories. As a representative large example, the entire Emacs CVS history, 1985-2009, 113309 CVS commits, lifts… Continue reading Progress towards the extinction of CVS

Chipping away at CVS

I’ve just shipped a new version of cvs-fast-export, 1.26. It speeds the tool up more, more, more – cranking through 25 years and 113300 commits of Emacs CVS history, for example in 2:48. That’s 672 commits a second, for those of you in the cheap seats. But the real news this time is a Python… Continue reading Chipping away at CVS

When hackers grow old

Lately I’ve been wrestling with various members of an ancient and venerable open-source development group which I am not going to name, though people who regularly follow my adventures will probably guess which one it is by the time I’m done venting. Why it so freaking hard to drag some people into the 21st century?… Continue reading When hackers grow old

Adverse selection and old technology

Yesterday I shipped cvs-fast-export 1.15, with a significant performance improvement produced by replacing a naive O(n**3) sort with a properly tuned O(n log n) version. In ensuing discussion on G+, one of my followers there asked if I thought this was likely to produce a real performance improvement, as in small inputs the constant setup… Continue reading Adverse selection and old technology