I\'m using git, and I\'m setting up the following branches to support my workflow:
More recently, a framework made for authorization enforcement, gitolite, can help putting in place all kinds of policies, for instance to allow only the tester to merge in the "Testing" branch.
In addition, gitolite proposes with VREFs (explained in "Gitolite Update Hook exclude a repository") the possibility to define many "update hooks" which will control the commits being pushed to the repo managed by gitolite.
But all those controls are for a "central" repo, not for all the downstream repos cloned on the various developers' workstations.