From 8ac96087870ad81df6ba5915a67b20a5ff97a24f Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Sat, 3 Oct 2020 16:35:48 +1000 Subject: [PATCH 1/2] pr-publish: support dispatching with autosquash --- Library/Homebrew/dev-cmd/pr-publish.rb | 13 ++++++++++++- docs/Manpage.md | 4 ++++ manpages/brew.1 | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/pr-publish.rb b/Library/Homebrew/dev-cmd/pr-publish.rb index f85011490d..55d32abf5b 100644 --- a/Library/Homebrew/dev-cmd/pr-publish.rb +++ b/Library/Homebrew/dev-cmd/pr-publish.rb @@ -14,6 +14,12 @@ module Homebrew Publish bottles for a pull request with GitHub Actions. Requires write access to the repository. EOS + switch "--autosquash", + description: "If supported on the target tap, automatically reformat and reword commits "\ + "in the pull request to our preferred format." + flag "--message=", + depends_on: "--autosquash", + description: "Message to include when autosquashing revision bumps, deletions, and rebuilds." flag "--tap=", description: "Target tap repository (default: `homebrew/core`)." flag "--workflow=", @@ -30,6 +36,11 @@ module Homebrew workflow = args.workflow || "publish-commit-bottles.yml" ref = "master" + extra_args = [] + extra_args << "--autosquash" if args.autosquash? + extra_args << "--message='#{args.message}'" if args.message.presence + dispatch_args = extra_args.join " " + args.named.uniq.each do |arg| arg = "#{tap.default_remote}/pull/#{arg}" if arg.to_i.positive? url_match = arg.match HOMEBREW_PULL_OR_COMMIT_URL_REGEX @@ -40,7 +51,7 @@ module Homebrew end ohai "Dispatching #{tap} pull request ##{issue}" - GitHub.workflow_dispatch_event(user, repo, workflow, ref, pull_request: issue) + GitHub.workflow_dispatch_event(user, repo, workflow, ref, pull_request: issue, args: dispatch_args) end end end diff --git a/docs/Manpage.md b/docs/Manpage.md index 88ec6e5faa..eed8ecd33d 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1119,6 +1119,10 @@ Find pull requests that can be automatically merged using `brew pr-publish`. Publish bottles for a pull request with GitHub Actions. Requires write access to the repository. +* `--autosquash`: + If supported on the target tap, automatically reformat and reword commits in the pull request to our preferred format. +* `--message`: + Message to include when autosquashing revision bumps, deletions, and rebuilds. * `--tap`: Target tap repository (default: `homebrew/core`). * `--workflow`: diff --git a/manpages/brew.1 b/manpages/brew.1 index 6203447fd5..5fa5423e19 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1576,6 +1576,14 @@ Include pull requests that have failing status checks\. Publish bottles for a pull request with GitHub Actions\. Requires write access to the repository\. . .TP +\fB\-\-autosquash\fR +If supported on the target tap, automatically reformat and reword commits in the pull request to our preferred format\. +. +.TP +\fB\-\-message\fR +Message to include when autosquashing revision bumps, deletions, and rebuilds\. +. +.TP \fB\-\-tap\fR Target tap repository (default: \fBhomebrew/core\fR)\. . From dbab49fa1fc4fc2704cee4d7f40e0d52087b7bba Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Sat, 3 Oct 2020 16:41:17 +1000 Subject: [PATCH 2/2] docs: update for autosquash dispatching --- docs/Brew-Test-Bot-For-Core-Contributors.md | 7 ++++++- docs/Homebrew-homebrew-core-Merge-Checklist.md | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/Brew-Test-Bot-For-Core-Contributors.md b/docs/Brew-Test-Bot-For-Core-Contributors.md index 30af7c3308..7de3ab8857 100644 --- a/docs/Brew-Test-Bot-For-Core-Contributors.md +++ b/docs/Brew-Test-Bot-For-Core-Contributors.md @@ -14,5 +14,10 @@ If a pull request is correct and doesn't need any modifications to commit messag If a pull request needs its commits squashed or its commit messages reformatted to [follow our style](https://docs.brew.sh/Formula-Cookbook#commit): 1. Ensure the job has already completed successfully. -2. Run `brew pr-pull --autosquash 12345` where `12345` is the pull request number (or URL). For revision bumps, rebuilds, and formula deletions, you can optionally include a `--message` argument to explain the change. +2. Run `brew pr-publish --autosquash 12345` where `12345` is the pull request number (or URL). For revision bumps, rebuilds, and formula deletions, you can optionally include a `--message` argument to explain the change. + +If a pull request needs its commit messages changed in a way that autosquash doesn't support: + +1. Ensure the job has already completed successfully. +2. Run `brew pr-pull 12345` where `12345` is the pull request number (or URL). 3. Amend any relevant commits if needed, then run `git push` to push the commits. diff --git a/docs/Homebrew-homebrew-core-Merge-Checklist.md b/docs/Homebrew-homebrew-core-Merge-Checklist.md index 6d1825de76..9329316f94 100644 --- a/docs/Homebrew-homebrew-core-Merge-Checklist.md +++ b/docs/Homebrew-homebrew-core-Merge-Checklist.md @@ -55,7 +55,7 @@ Check for: - formula `bottle :unneeded`, you can merge it through GitHub UI - bottles need to be pulled, and... - the commits are correct and don't need changes, approve the PR to trigger an automatic merge (use `brew pr-publish $PR_ID` to trigger manually in case of a new formula) - - the commits need to be squashed, use `brew pr-pull --autosquash $PR_ID` and `git push` + - the commits need to be squashed, use `brew pr-publish --autosquash $PR_ID` and `git push` - the commits need to be amended, use `brew pr-pull $PR_ID`, make changes, and `git push` - don't forget to thank the contributor - celebrate the first-time contributors