We have following requirement when it comes to bussiness process concerning introducing new features to a stable branch.
We have a stable line which gets delivered to our clients. Also we have a development line where we develop new features. Sometimes, we decide that we need to introduce some developed features to a stable release line. Not all, but some of them. How to organize branches (we're using mercurial) so we can cherry pick features we want to apply to stable branch?
On the other side we need to have a branch where we'll have all features integrated into one branch, call it dev branch (which was derived from stable branch).
One of the ideas is to have a stable branch, dev branch (which was derived at one time from stable) and a separate branches for each feature.
Bugs are resolved on the stable branch and from time to time, changes are pulled to other branches (dev and feature ones). Once a decision, of integrating a particular feature to a stable branch, is made, then only a given feature branch is merged with the stable one. Also, feature branches are from time to time pulled on dev branch (which serves to integrate all features that are being developed).