[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