I am opposed to preventing direct pushes to master.
There are all sorts of small things best fixed with a direct push. If I
had to open a new PR for stuff like
caprice32: 4.5.0 -> 4.6.0 by bignaux · Pull Request #82586 · NixOS/nixpkgs · GitHub I probably wouldn’t bother.
Keeping track of open pull requests, knowing which ones need review,
etc. is difficult enough as it is without polluting the list with all
the stuff that is currently pushed directly.
I think it would instead be better to monitor what was being pushed
directly to master. It’s possible to identify which commits were not
part of a PR through the GitHub API.