<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 13, 2019 at 4:47 PM Mehdi AMINI <<a href="mailto:joker.eph@gmail.com">joker.eph@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 9, 2019 at 12:39 AM David Chisnall via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On 09/04/2019 00:32, Tom Stellard via cfe-dev wrote:<br>
> As a backup plan, I am going to look into implementing option #1, but instead<br>
> of having git-llvm create a pull request, it would push first to a staging<br>
> branch and then push to master if a 'no-merge commit' status checks pass.  This<br>
> is essentially the same flow as using pull requests, but without all the<br>
> pull request noise.<br>
<br>
I don't think that you can enforce this policy on the server side.  You <br>
could; however, make git-llvm create a pull request and, if the relevant <br>
checks pass, automatically use the GitHub APIs to do a rebase and merge.<br></blockquote><div><br></div><div>I believe you can with: <a href="https://help.github.com/en/articles/enabling-required-status-checks" target="_blank">https://help.github.com/en/articles/enabling-required-status-checks</a></div><div><br></div><div>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.<br></div></div></div></div></blockquote><div><br></div><div>I just double-checked (I created a fake "rebased" check on my repo) and it still works as expected:</div><div><br></div><div><div>$ git push</div><div>Enumerating objects: 5, done.</div><div>Counting objects: 100% (5/5), done.</div><div>Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.</div><div>Total 3 (delta 0), reused 0 (delta 0)</div><div>remote: error: GH006: Protected branch update failed for refs/heads/master.</div><div>remote: error: Required status check "rebased" is expected.</div><div>To github.com:joker-eph/test_required_check.git</div><div> ! [remote rejected] master -> master (protected branch hook declined)</div><div>error: failed to push some refs to 'git@github.com:joker-eph/test_required_check.git'</div><div><br></div><div>The `git llvm push` script could very well rebase, check the absence of merge commit, and issue this REST call:</div><div><br></div><div>$ curl   --user "{GitHub_username}"   -H "Authorization: token {GitHub token}"  <a href="https://api.github.com/repos/joker-eph/test_required_check/statuses/$(git">https://api.github.com/repos/joker-eph/test_required_check/statuses/$(git</a> rev-list HEAD -n 1)  -X POST --data '{"state": "success", "context": "rebased" }'</div><div><br></div><div>After which the push is passing:</div><div><br></div><div>$ git push<br></div><div>Enumerating objects: 5, done.</div><div>Counting objects: 100% (5/5), done.</div><div>Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.</div><div>Total 3 (delta 0), reused 0 (delta 0)</div><div>To github.com:joker-eph/test_required_check.git</div><div>   a07ce8f..2dd24ba  master -> master</div><div><br></div><div>-- </div><div>Mehdi</div></div></div></div></div></div></div>