I've often wondered whether it would be worthwhile for git to include some global configuration to allow global pre/post commit hooks which are opt-out on a per repository basis. If I could do this for every repository our developers created automatically - I would.
However, it seems reasonable to have an explicit option to clone, such as --use-hooks, that allows repositories to enable their local hooks automatically.
Apart from that, you could have a server-side hook that prevents any push containing such files.
If you do this, then developers only need to install the hooks once when they set up their machine, and then will already have them when they clone a repo.
> schema.rb
Don't you kind of need this in a rails project?
That said I've seen this done, but wouldn't recommend it. Your schema.rb is helpful to collaborators and running through all of your migrations on a new base is silly.