So… your team is using a distributed version control system like mercurial or git for some time already. You feel more confident with the merging tools and processes, it seemed more complicated than your good ol’ subversion at first, but now you and your team understand that you can never go back. Now what?
Because you want to release often, it’s natural to tie your DVCS to your integration and deployment system and have all your tests run automatically every time you deploy. There are many ways to work with the DVCS in this scenario, we are not going to get into that, but we use the so-called feature branches because it better adjusts to our particular team and present situation. We keep the feature branches as small (short-lived) as possible, and follow a set of rules that helps us dealing with this combined processes. I wanted to share those rules with you:
Some related things you want to read: