I work for SaaS, which every six weeks releases new features and bug fixes for our customers. When we write code changes, they go through various stages (for example, a state machine) to reach production servers. The steps differ depending on whether the change is performed in a regular development cycle or as a disaster correction. We are currently using Harvest to control the steps and track which code (functions and bug fixes through packages) is issued to clients, and in this sense, it works well.
Unfortunately, the harvest is both expensive and a pain to use from a programmer's point of view. Branching and merging is a nightmare. So, we are exploring the transition to Mercurial. Mercurial seems to be superior to these areas. However, Mercurial does not seem to be designed to track changes or control the aforementioned process, it is only SCM.
Q: What options do we have when it comes to the release process, are there surely other SaaS companies (such as Google, Flickr, Facebook, LinkedIn) that want to control the quality before releasing the code to production servers?
Q: Is it a good idea to try to build a process in Mercurial, or are there other tools that we need to use with Mercurial?
[edit]
To clarify, this is our (proposed) structure.
Here is the flow of the process that we now have in Harvest:
Hotfix <--> Test Level 1 <--> Test Level 2 <--> Master (Production)
Feature <--> Test <--> Release Test <--> Master (Production)
, , , ( release). , , , "", . , "" 1, . -, , 1.