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
cvs-fast-export 1.43 is released
Maintaining cvs-fast-export is, frankly, a pain in the ass. Parts of the code I inherited are head-achingly opaque. CVS repositories are chronically prone to malformations that look like bugs in the tool and/or can’t be adapted to in any safe way. Its actual bugs are obscure and often difficult to fix – the experience is… Continue reading cvs-fast-export 1.43 is released
Brute force beats premature optimization
I made a really common and insidious programming mistake recently. I’m going to explain it in detail because every programmer in the world needs the reminder not to do this, and I hope confessing that even “ESR” falls into such a trap will make the less experienced properly wary of it. Our sutra for today… Continue reading Brute force beats premature optimization
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.
SRC users: check in, please?
I just released version 1.7 of SRC, Simple Revision Control. For those of you late to the party, SRC is a simple version control system for directories full of small standalone files like FAQs, scripts in your ~/bin, dotfiles, and so forth – cases where you don’t want multi-file changesets. It’s actually a Python wrapper… Continue reading SRC users: check in, please?
SRC goes SCCS
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
debubble – a tool for popping pointless merge bubbles
If you hate pointless merge bubbles as much as I do, you’ll kick yourself because you didn’t think of this. But don’t feel bad. I should have, a lot sooner, myself. Voila! git-debubble.
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
Emacs git conversion is done
Finally. After ten months of work, it’s done. Emacs is fully converted to git. You can clone from git://git.sv.gnu.org/emacs.git and if you have commit rights you can push to it and the changes will stick. The bzr repo is still up but only as an archive.
I wrote a version-control system today
I wrote a version-control system today. Yes, an entire VCS. Took me 14 hours. Yeah, you’re looking at me like I’m crazy. “Why,” you ask, quite reasonably, “would you want to do a thing like that? We’re not short of powerful VCSes these days. That is true. But I got to thinking, early this morning,… Continue reading I wrote a version-control system today
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