It’s no secret that I have been a big fan of distributed development tools for a while. One of the maybe best things about them is that they have almost zero overhead settings up. This means that the biggest argument for not using (are there really any?) a version control system is gone. We have been using bzr in MMS for quite a while and recently the core team of developers with access to the source code has grown quite a bit. So we started having trouble with revision numbers, since they are in a distributed version control by definition not absolute. But fear not, there is a good solution to “work around” that problem. One that goes well with the good idea of having multiple branches. I’ll just use mms as an example. First thing to do is to create a local main branch, a mirror of the what is available on the web:
bzr get http://bazaar.launchpad.net/~team-mms/mms/1.1.0 mms-1.1.0
Now we have a local version of the main repo. So lets branch that for our own changes:
bzr branch mms-1.1.0 mms-1.1.0-arj
Then whenever I want to do something I just work in mms-1.1.0-arj. Commit to that locally. Then when the changs are look good enough to be push, do a bzr pull in the main repo, bzr merge ../mms-1.1.0-arj. Then bzr push to push the changes to main repo.
When changes come in from other people through local the main repo, just do a bzr merge ../mms-1.1.0 inside the mms-1.1.0-arj directory.
Futhermore if one is working on a big new feature, it might be a good idea to create another local branch just for that. This makes it easier to track everything in the long run.