I'm working at a SaaS company who releases new features and bug fixes to our customers every six weeks. When we write code changes they pass through different steps (like a state machine) before reaching the production servers. The steps are different depending on if the change is done in the regular development cycle or as an emergency fix. We're currently using Harvest to manage the steps and track what code (features and bug fixes through packages) is being released to the customers and in that sense it's working well.
Unfortunately Harvest is both expensive and a pain to use from a programmer's point of view. Branching and merging is a nightmare. So we're looking into switching to Mercurial. Mercurial seems to excel in those areas. However, Mercurial doesn't seem to be made for tracking changes or manage the above mentioned process, it only does SCM.
Q: What options do we have when it comes to the release process, surely there are other SaaS companies (e.g. Google, Flickr, Facebook, LinkedIn) out there who wants quality control before releasing code to production servers?
Q: Is it a bad idea to try and build the process in Mercurial or are there other tools that we need to use together with Mercurial?
[Edit] To clarify, this is our (suggested) branch structure.
Here's the process flow we currently have in Harvest:
Hotfix <--> Test Level 1 <--> Test Level 2 <--> Master (Production)
Feature <--> Test <--> Release Test <--> Master (Production)
I'm not looking for a bug tracker, but rather a deployment tool that helps us track and deploy code that has been verified by our testers (code in release branch). If there is more than one hotfix being worked on at the same time we need to be able to test them together and if one breaks the code we need to be able to "demote" the code breaking changes back one step in the process f开发者_如何转开发low. Today it's enough for the two developers to "promote" their changes to Test Level 1 and the system can be tested with both changes together. If one developer's changes breaks anything only when it's together with the other developer's code it can easily be demoted back from Test Level 1.
However, Mercurial doesn't seem to be made for tracking changes or manage the above mentioned process, it only does SCM.
It's best to use a separate tool for issue tracking. That way you can use the best of breed for each task. Just makes sure that you select one which integrates well with your version control system.
To give some examples: jira (commercial) and trac (free) both have mercurial integration plugins. They also have customizable workflow states, allowing you to model your process.
I've come to realize that what we're looking for is not an issue tracker, but rather a deployment tool to replace that aspect of Harvest. Go and Anthill Pro are two candidates.
精彩评论