This Space for Rent

Ridiculously misleading software behavior of the day

Eight years ago, I ported git 1.5.2.2 to my macbook so I could make it into my development machine (there were more recent versions of git available, but they had really bizarre behavior when faced with my scheme of replicated repositories (one Linux, two FreeBSDs, and the macbook), each of which would have changes made to them and pushed to each other to keep everything in sync (git 2(?) complained bitterly about being used for local changes and having things pushed into it from other repositories, and then started just vanishing pushes into different branches which would make everything puke when I merged them into my baseline and attempt to then push out to everywhere else. It didn’t take more than 3-4 iterations of “oh, look, this repository is borked; time to delete it and reclone it from the current master” before I snapped. 1.5.2.2 isn’t perfect either, but having to do git checkout -f on my SCCS tree before I can build against pushed changes doesn’t fish up the tree and force a delete/clone cycle.)

So I’ve been using 1.5.2.2 on everything (including on my current development machine, which runs osx 10.10 and has version 2.3.2 on it by default) for basically ever now, without fuss muss or bother.

But over the last few weeks I’ve been using my spare time to update a first-gen Intel mini as a replacement for the existing FreeBSD 4.4 incarnation of downbelow (mainly because fsck is faster on the mac, but also because Time Machine is a much less painful way of doing backups than my previous method of having a second disk which I rsync everything onto every night, and faster fsck + many fewer files means that the server will be able to drag itself back to life in finite time after a power failure takes the whole network down) and a couple of days ago I installed git as part of moving Postoffice (postfix? Ick, no, no way; I’m willing to write a maildir local mail delivery agent, but not to use some industrial strength write-only mail server) and discovered that when I made the universe the git directory bloated up to 200+mb.

WTF? This didn’t make any sense, so I looked around to see what the dickens was going on. And it turned out that in this case the dickens was that all of the git builtins were hardlinked together and thus du was cheerfully counting the same file over and over and over and over and over again. Sigh.

I replaced all of the lns in the makefile with ln -s, which doesn’t actually save any space (it may actually cost space; I’m not sure how symbolic links are stored on the mac) but it at least makes the output of du a little less terrifying (it would have been much more annoying if Linus Torvalds, et seq, had followed the FSF’s lead in installing as separate binaries programs that are aliases of each other) and keeps me from doing more unrecovery than I absolutely have to. Yeah, I’m sure that symlinks are philosophically impure, but nobody is paying me for this and I can make whatever dog’s breakfast of my network that I want.