This answer complements VonC 's answer .
Since each developer should have his own clone (his own working repository), the only control that you can really impose on 1 is to enable or disable during repository push-posting (or during you pull their changes). This can be done using updateor pre-receive hook .
1) The hook pre-commitcan be bypassed with git commit --no-verify "
, - , , , update-paranoid ( contrib/hooks git ) gitolite ( git) ; /diff, , .