This week I stumbled across a python based vcs (version control system) called Bazaar-NG and I think I may actually start using it. I’ve had a passing familiarity with version control systems and their basic concept for quite a while now (I mean, open source software as we know it could not exist without these prograams), but I’ve never successfully used one beyond checking out the occasional package manager port setup or latest release using cvs. CVS is probably the most commonly used vcs in the open source/linux/unix world and it actually comes installed on MacOS X1.
I came upon Bazaar-NG (or bzr) by way of a posting about the Bazaar (or baz) vcs which is actually a fork of the Arch (or tla) vcs, with changes to the user interface designed improve its usability while keeping the same backend storage format. Bazaar and Arch are interesting and quite different from CVS in that they don’t rely on one centrally managed repository. Instead anyone can download a copy of the original project and then check in their changes to their local branch. Once changes in the local branch are ready they can then be merged back into the original project using a built in merge command. Bazaar-NG appears to be aiming for a similar distributed approach to version control, but with simplicity, platform portability and ease of use as the primary goals (and currently areas of weakness in Arch and Bazaar).
Initially I thought I would try out the original Bazaar vcs since it was a mature product that handled things in a way I liked, but after some investigation on the MacOS X side I discovered Darwin Ports didn’t currently have a port and the Fink package was not up to date. I briefly considered making my own port file, but then decided to take another look at Bazaar-NG. Downloading and setting Bazaar-NG up for testing in my home directory didn’t end up being very difficult althought the start.py installation script doesn’t seem to work properly under MacOS X 10.4 (mainly because of an ElementTree module depency). I had no problem running the installation out of my home directory though when I set bzr up there and updated my .bash_profile file to support a few more executable directories..
At the moment Bazaar-NG is fairly early in its development life and hasn’t yet implemented all of the branch merging functionality that will allow it to be used for larger scale distributed projects. That being said, it’s perfectly usable as a basic vcs at the local single user level and fully supports typical commands like add, committ, diff, export, move and remove (plus a few more). It’s already being used as the vcs for its own development tree. I’m looking forward to playing with it more and following along with the development process as the merge features are added because I think this project has a lot of potential.