You can block developers pushing bad commits or merges to your "central" repository but you can't stop them from doing them locally. So you could use, for example, a pretxnchangegroup
hook to make sure a push doesn't result in customer specific code in the revision1.0
branch (or clone), but that will just reject the developer's push. He or she will still have the bad commit locally and will need to unravel it.
There's some confusion in the comments above because you're conflating terms. One merges things between (named) branches and pushes things between repositories.