Ensure your app is ready for Protected Branches
We’ve begun to roll out Protected Branches across GitHub. When you
protect a branch in one of your repositories, you will be prevented from
force pushing to that branch or deleting it. You can also configure required
status checks for your protected branch. When configured, changing a branch to
point at a new commit will fail unless that commit (or another commit with
the same Git tree) has a Status in the success
state for
each required status check.
These restrictions apply to branch manipulations performed via the GitHub API
as well. So when you protect a branch, you will no longer be able to delete
the branch via the API or update it to point at a
non-ancestor commit, even with "force": true
. And if your branch has required
status checks, you won’t be able to update it or merge pull
requests into that branch until success
Statuses have been posted to
the target commit for all required status checks.
These restrictions are all represented by 422 errors:
curl -i -H 'Authorization: token TOKEN' \ -X DELETE https://api.github.com/repos/octocat/hubot/git/refs/heads/master HTTP/1.1 422 Unprocessable Entity { "message": "Cannot delete a protected branch", "documentation_url": "https://help.github.com/articles/about-protected-branches" }
Protected branches and required status checks are a great way to ensure your
project’s conventions are followed. For example, you could write a Status
integration that only posts a success
Status when the pull request’s author
has signed your project’s Contributor License Agreement. Or you could write one
that only posts a success
Status when three or more members of your
@initech/senior-engineers
team have left a comment saying they’ve reviewed
the changes. If you configure these integrations as required status checks, you
can be sure that these conditions have been satisfied before a pull request is
merged. See our Status API guide to learn how to create integrations
like these.
If you have any questions, please let us know.