You can enforce status checks on commits that are pushed directly to the github repository. The plan is to update the git-llvm script to check for merge commits before pushing and to 'pass' the status check via the github API. We are not going to start using GitHub pull requests, at least not in the near future.
git-llvm is client side, so how are merge commits actually blocked then?
The plan is to use GitHub's status check feature to block merge commits. We have created a 'rebased' status check and the git-llvm script will be updated to 1) check for a merge commit before pushing and the 2) 'Pass' the status check for the commit before pushing.
Using the status checks will force people to use the git-llvm script, so we can ensure that people are running the client-side checks e committing.
The goal is to prevent people from accidental merge commits and to prevent people who don't know the policy from doing merge commits.