I've been pretty busy the last few weeks and it will probably remain that way for the foreseeable future. Unfortunately that means my more detailed reviews of different revision control systems will have to be delayed. In the meantime for those interested I'll explain the basics of a workflow I've adopted on a few projects using Mercurial. Please keep in mind that you can use this method with most, if not all, of the current distributed revision control tools.
Since I have more experience with revision control tools than others in my team ("more" being "some"), I decided to set up a repository to help us manage our code and documentation. However, I'm not a fan of leaving my computer on all the time due to little details such as...the electric bill. The workflow we have been using is pretty simple. There is a master repository on my desktop, which is turned on in the evenings. When people make a change to the repository, they create a "bundle" file, and e-mail it to me with a certain subject.
The command in Mercurial is:
hg bundle --base [base revision] -r [end revision] [bundle file]
The desktop monitors the e-mail account for messages with the appropriate subject from a list of approved senders, and checks for the attached bundle file. If it exists, it is downloaded and applied to the repository. Merge conflicts are handled manually as usual. Once the new changes are successfully merged, a new bundle file is created and e-mailed to everyone so they have an up-to-date version of the repository.
While this may sound overly complicated, from a usage standpoint it is pretty simple and works well in practice for small groups of people. There is also the added bonus of enabling people to exchange changes with each other directly without going through the main repository, thus improving the quality of the main code. I agree that giving everyone SSH access to push/pull changes would simplify the process, however that is not an option for us, plus it would be boring ;).
Wednesday, February 20, 2008
Distributed Code Management with Mercurial
Labels:
Mercurial,
programming,
Project Management,
version control
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment