mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
tools: abort CQ session when landing several commits
Most PRs are meant to be squashed in one commit when landing. If the collaborator hasn't been using `fixup!` commits, the CQ lands the PR as several commits. This change makes the CQ abort by default when attempting to land several commits, unless there's another label added to the PR to force squashing or landing as several commits. Fixes: https://github.com/nodejs/node/issues/40436 Refs: https://github.com/nodejs/node-core-utils/pull/572 PR-URL: https://github.com/nodejs/node/pull/40577 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
1 parent
14825d63c0
commit
9bd6d526e6
2 files changed
+16
-2
No files matched your search
@@ -25,7 +25,7 @@ From a high-level, the Commit Queue works as follow:
|
||||
2. Check if the last Jenkins CI is finished running (if it is not, skip this
|
||||
PR)
|
||||
3. Remove the `commit-queue` label
|
||||
4. Run `git node land <pr>`
|
||||
4. Run `git node land <pr> --oneCommitMax`
|
||||
5. If it fails:
|
||||
1. Abort `git node land` session
|
||||
2. Add `commit-queue-failed` label to the PR
|
||||
@@ -37,6 +37,12 @@ From a high-level, the Commit Queue works as follow:
|
||||
3. Close the PR
|
||||
4. Go to next PR in the queue
|
||||
|
||||
To make the Commit Queue squash all the commits of a pull request into the
|
||||
first one, add the `commit-queue-squash` label.
|
||||
To make the Commit Queue land a pull request containing several commits, add the
|
||||
`commit-queue-rebase` label. When using this option, make sure
|
||||
that all commits are self-contained, meaning every commit should pass all tests.
|
||||
|
||||
## Current limitations
|
||||
|
||||
The Commit Queue feature is still in early stages, and as such it might not
|
||||
|
||||
@@ -70,7 +70,15 @@ for pr in "$@"; do
|
||||
# Delete the commit queue label
|
||||
gitHubCurl "$(labelsUrl "$pr")"/"$COMMIT_QUEUE_LABEL" DELETE
|
||||
|
||||
git node land --autorebase --yes "$pr" >output 2>&1 || echo "Failed to land #${pr}"
|
||||
if gitHubCurl "$(labelsUrl "$pr")" GET | jq -e 'map(.name) | index("commit-queue-squash")'; then
|
||||
MULTIPLE_COMMIT_POLICY="--fixupAll"
|
||||
elif gitHubCurl "$(labelsUrl "$pr")" GET | jq -e 'map(.name) | index("commit-queue-rebase")'; then
|
||||
MULTIPLE_COMMIT_POLICY=""
|
||||
else
|
||||
MULTIPLE_COMMIT_POLICY="--oneCommitMax"
|
||||
fi
|
||||
|
||||
git node land --autorebase --yes $MULTIPLE_COMMIT_POLICY "$pr" >output 2>&1 || echo "Failed to land #${pr}"
|
||||
# cat here otherwise we'll be supressing the output of git node land
|
||||
cat output
|
||||
|
||||
|
||||
Reference in new issue
Block a user