I have a repository hosted on GitHub which has several forks.
How can I set up the config of the main repository to set the receive.denyNonFastForwards
GitHub does not expose this functionality, though there are two options:
GitHub support can set this on a repository.
You can emulate this by setting the GitHub repository as a mirror of another repository that you have more control over. Only give write access to the GitHub account to a minimal set of responsible individuals, and to an account used to do the mirroring. The non-GitHub repository would be where you would set receive.denyNonFastForwards
, and have everyone push. The mirroring could then be done by a post-receive
hook, cron job, or a combination of the two. A reason to go with both would be to get a minimal time lag between the two repositories, and still make sure everything is up to date even if the post-receive
hook failed to update GitHub (if GitHub was down, for example).