To those who work outside software, you may be wondering what ‘CM’ is. It stands for Configuration Management, and (largely) refers to the backing up of every single change you make to your software. That would be simple. But it also takes care of the fact that several people may be making changes at once. It backs up each of their changes, and provides some sort of facility to merge them back together again when desired. These parallel lines of development are usually called branches.
What use does Macrobug have for that, I hear you ask? With only one developer…Well, the developer in question (me!) works on several different things at once. I have one branch (’trunk’) which contains all Macrobug’s most stable code. There are also branches representing experimental major development I’m doing, for example, trying to rip out Eclipse dependencies from the heart of my code. And finally there are branches representing release-quality code. Except I haven’t got any of those yet.
Why am I thinking about CM at the moment? Because when designing these branch structures, it’s easy to make assumptions. Right now my branch structure contains the word ‘Eclipse’ - whoops. If ever I want to remove dependency on Eclipse, I have choices:
- Create a parallel branch structure for the new code
- Painstakingly transfer everything from the old structure to the new structure.
- Have an inaccurate name
At Symbian I was always massively careful to avoid such assumptions because I knew the pain of moving away from them later. I tried here too, but missed this one. I’m not sure what to do yet. Ah well. Not a big deal in the grand scheme of things.