This Space for Rent

New Code (sort of)!

As part of the great Mastodon reanimation project of 2007, I've been going back and digging out some of the code that went into earlier versions of the distribution. A lot of this code was stored inside a proprietary source code control system that used to have a free version which was withdrawn when the company went into a screaming hissy fit about someone reverse engineering the wire protocol it used, so one of the prerequisited for the nouveau mastodonte was to find a new SCCS, move all of the old archives over to it, and port the SCCS itself back to SLS Linux.

After short consideration, I chose Linus Torvald's Git package (because it was written, more or less, in C, and because it supported decentralized repositories, which I grew fond of when I was using the hissy fit control system several years ago.) Git, as befitting a Linux program, isn't exactly what you'd call portable, unless by "portable" you mean Redhat, Debian, and MacOS X; I had to slightly tweak it to make it compile on FreeBSD 4.8 & 4.4, and I had to extensively tweak it to make it work on Mastodon and the SLS system that Pell still runs.

I did the first rounds of tweaks by hand, but only as a training run. My current version of git 1.5.2.2 (which I will send back to the maintainers, but I don't expect that it will be accepted) has had most of the autoconf/edit-10,000-variables-in-the-makefile "configuration" code ripped out and replaced by a configure.sh script, which is not fully tested, but now builds the code on MacOS 10 (where it passes all the tests) and Pell (where it doesn't, because the test suite wants to be able to use trap - exit, which the fairly old version of b*sh there doesn't understand (it appears to be able to handle pull/push/clone/commit, which covers most of the stuff I want it to be able to do for now; the tests not working properly is annoying, and if they bother me too much I'll tweak that part of the tests so they won't die with missing features.)

It's a patch, and you patch and make my slightly-more-portable git by doing:

      cd git-1.5.2.2
      patch -p1 < git-portability.patch
      chmod +x configure.sh
      ./configure.sh
      make

I don't know if any of the fancier transports work on older Unices, or if any of the code that uses poll() [implemented as a wrapper around select()] works, but I can push changes over to pell, pull them back out, and clone packages into and off of the system. So it counts as New Code!™, at least up until the point where Git migrates out from under it.