[cfe-dev] [Openmp-dev] [GitHub] RFC: Enforcing no merge commit policy

Mehdi AMINI via cfe-dev cfe-dev at lists.llvm.org
Sat Apr 13 17:13:07 PDT 2019


On Sat, Apr 13, 2019 at 4:47 PM Mehdi AMINI <joker.eph at gmail.com> wrote:

>
>
> On Tue, Apr 9, 2019 at 12:39 AM David Chisnall via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> On 09/04/2019 00:32, Tom Stellard via cfe-dev wrote:
>> > As a backup plan, I am going to look into implementing option #1, but
>> instead
>> > of having git-llvm create a pull request, it would push first to a
>> staging
>> > branch and then push to master if a 'no-merge commit' status checks
>> pass.  This
>> > is essentially the same flow as using pull requests, but without all the
>> > pull request noise.
>>
>> I don't think that you can enforce this policy on the server side.  You
>> could; however, make git-llvm create a pull request and, if the relevant
>> checks pass, automatically use the GitHub APIs to do a rebase and merge.
>>
>
> I believe you can with:
> https://help.github.com/en/articles/enabling-required-status-checks
>
> I don't even think you need to push a branch for this*, the git-llvm
> script should be able to perform the required check locally, then issue a
> REST call and push to master.
>

I just double-checked (I created a fake "rebased" check on my repo) and it
still works as expected:

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: Required status check "rebased" is expected.
To github.com:joker-eph/test_required_check.git
 ! [remote rejected] master -> master (protected branch hook declined)
error: failed to push some refs to 'git at github.com:
joker-eph/test_required_check.git'

The `git llvm push` script could very well rebase, check the absence of
merge commit, and issue this REST call:

$ curl   --user "{GitHub_username}"   -H "Authorization: token {GitHub
token}"
https://api.github.com/repos/joker-eph/test_required_check/statuses/$(git
rev-list HEAD -n 1)  -X POST --data '{"state": "success", "context":
"rebased" }'

After which the push is passing:

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:joker-eph/test_required_check.git
   a07ce8f..2dd24ba  master -> master

-- 
Mehdi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190413/7031a0e0/attachment.html>


More information about the cfe-dev mailing list