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

James Y Knight via cfe-dev cfe-dev at lists.llvm.org
Mon Apr 29 07:50:23 PDT 2019


That's great! This is so nice and easy, much simpler than I thought it was
going to be! Being able to do this fully local is a wonderful
simplification -- and can easily get us the minimal checks that we wanted
as a prerequisite.

Longer-term, I think we will still probably want to push the commit
somewhere prior to commit so that we can automatically run hosted presubmit
checks (e.g. running builds on a build-farm), but we can consider that
separately.


On Mon, Apr 15, 2019 at 11:52 PM Tom Stellard via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> On 04/13/2019 05:13 PM, Mehdi AMINI wrote:
> >
> >
> > On Sat, Apr 13, 2019 at 4:47 PM Mehdi AMINI <joker.eph at gmail.com
> <mailto: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 <mailto: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
> <
> https://api.github.com/repos/joker-eph/test_required_check/statuses/$%28git>
> rev-list HEAD -n 1)  -X POST --data '{"state": "success", "context":
> "rebased" }'
> >
>
> Ok, this would be much better than what I was proposing.  Thanks
> for figuring this out.
>
> -Tom
>
> > 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
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190429/cee02b61/attachment.html>


More information about the cfe-dev mailing list