I'd like to restrict write access for the master branch to only several developers, while allowing others to pull everything and push to other non-master branches. Idea is that a developer would push to some other branch and then if code passes review, reviewer would merge it into the master branch.
I'm pretty sure that this can be easily done with a git commit hook, but I don't know python and this seems like such a generic problem, that somebody must have written it already. Do you know where I could find such a script? Or if you have one lying around, please paste it here, for lazy people like me.
For your requirement: "if code passes review, reviewer would merge it into the master branch."
You can try Gerrit Code Review: http://code.google.com/p/gerrit/
I think it could be possible to use such script but it is not the right place for rights management, it should be rather done on git server side. For example in gitosis you do this configuration in gitosis-admin repository in file gitosis.conf.
Security managed by a hook can be easily broken, only server can keep track of this things, please check documentation of your server for details how to restrict access.