For all our development, we use Subversion as our sourcecode management tool. Usually, it works quite well, until you make a mistake that leads to using various versions of this tool across your systems.
As a command line addict, I’m heavily dependent on the command-line tools for my daily work. I have three systems I work with on a regular base:
- A Ubuntu desktop for the main development work while being in Germany, that ships with Subversion 1.4.4.
- A Windows based notebook, for presentations and meetings, that is made usable via Cygwin and that comes with Subversion 1.4.
- A MacBook for development and work in the field, that comes with subversion 1.4 as well.
So the situation is easy. All systems use the same command line version, and thus, Thomas should be happy. (That was back in mid-March.)
Let’s start the disaster that keeps me busy for the next days: “apt-get dist-update”
Subversion is now 1.5 on Ubuntu (via hardy-backports). And all of the sudden, my Windows and Mac systems are locked out, as Subversion *always* auto-updates the repository on any write access. Great! (The Ubuntu system is the only system with a sane filesystem (case-insensitive, unlimited path length) and a sane set of file-server capabilities (smb, nfs)).
Lets try to solve the problem. Upgrade the Windows system. Thats relatively easy, thanks to Cygwins update function. I end up with Subversion 1.5 for now. Luckily I dont use Torture-SVN on Windows, so that system is done. And more luckily, the Cygwin package maintainers did not yet publish packages for Subversion 1.6. But the next update promises to be fun.
Lets go to the Mac. Oh, SVN is bundled with XCode. So there is no update option available. Yeah, monolithic bundling makes life so easy! And no sane person would use public package systems with repositories that can hold updated versions. Luckily a Mac is nothing more than a Unix with a large set of proprietary extensions, so there is hope. So lets dig into the core.
MacPorts would want to install SVN 1.6. Of course, this version is not compatible with the older versions. And of course, there are no packages available elsewhere. And of course, there is no “downgrade”. Failure.
Next try: Lets see whether there is a pre-compiled download at the subversion site itself. After some digging in the archived parts of the site, yes, there is a Subversion 1.5.6 download. Download, install, done? Not really. Now its time for commandline configuration first, as the old 1.4-client is still installed. A quick edit later, the command line is happy.
I don’t even want to think about the monumental task to update the various VMWare images that sit on top of these physical machines. Life’s no fun when being forced to play admin.
- Never upgrade
- If you upgrade, take a week off afterwards to clean up the carnage – or
- Wait with the upgrade until all your systems have all your packages available (or until the old packages dont work anymore, whichever comes last).