Tobias Bouschen created JDO-792:
-----------------------------------

             Summary: Create branch protection for master branch
                 Key: JDO-792
                 URL: https://issues.apache.org/jira/browse/JDO-792
             Project: JDO
          Issue Type: Task
            Reporter: Tobias Bouschen
            Assignee: Tobias Bouschen


In order to enforce certain restrictions for specific branches, GitHub provides 
the concept of 'branch protection'. Such restrictions can take many forms, for 
example enforcing a linear history or requiring specific GitHub actions to pass 
before allowing a pull-request to merged on the branch.

I would suggest also creating such restrictions for the master branch of both 
the main JDO and the JDO site repository. My suggested rules are as follows:
 * *Require a linear history* – This will disallow merge commits on the branch. 
As a result
 ** pushes to the protected branch containing a merge commit will be rejected 
by the repository. This will most likely only apply to GitHub and not GitBox, 
so pushing a merge commit to a protected branch through GitBox will most likely 
break the mirror. I would recommend against it.
 ** the option "Create a merge commit" to merge a pull request for this branch 
is disabled.
 ** pull-requests for this branch containing a merge commit can only be merged 
using the "Squash and merge" option to remove this merge commit in the process.
 * *Require status checks before merging* – This will require the selected 
status checks (i.e. GitHub actions) to pass before the pull requests for this 
branch can be merged.
 * *Require branches to be up-to-date* – This will require a PR to always be 
up-to-date with its base branch. This is a sub-option of "Require status 
checks" and is meant as a way to enforce that the checks are always run on the 
current version of the base branch. This ensures that a combination of new 
commits on the master and the commits of the pull request create a build 
failure which is not visible with either of the two separately.

As requiring branches to be up-to-date creates the most overhead when there are 
frequent other activities on the repository, this requirement should be 
considered carefully. Especially with long-running checks, always having to 
rebase pull-requests on the current master before being able to merge them can 
be cumbersome.

Another possible option would be requiring approvals (of members with write 
access) before a pull request can be merged. I did not suggest this by default 
as this rule is binding since none of us have administrative privileges on the 
repository. As a result, it would be impossible to create a pull requests for a 
trivial fix and merge it without any approval. (This restriction does not apply 
to direct pushes to the branch.)

Lastly, as merge commits are not desired and are generally disallowed by the 
branch protection rule, I would suggest to completely disable the option to 
create a merge commit when merging a pull request.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to