-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tools: don't use GH API for commit message checks #24574
tools: don't use GH API for commit message checks #24574
Conversation
script in action on this PR: https://travis-ci.com/nodejs/node/jobs/160424788#L470 |
And we have green - https://travis-ci.com/nodejs/node/jobs/160424788 |
@@ -25,21 +25,15 @@ if [ -z "${PR_ID}" ]; then | |||
echo " e.g. $0 <PR_NUMBER>" | |||
exit 1 | |||
fi | |||
# Retrieve the first commit of the pull request via GitHub API | |||
# TODO: If we teach core-validate-commit to ignore "fixup!" and "squash!" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this comment still relevant? The only thing that's different in it is the url in the command line example?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, you're right, I didn't read all of it and assumed it was just talking about switching to npx -q core-validate-commit --no-validate-metadata
which is already there. It's still not quite right because it's clear we can't continue to use the API. core-validate-commit
is going to have to be fed the list of commits.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to just remove this comment entirely and leave it to future evolution of core-validate-commit to resolve rather than having a TODO. @richardlau?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No objections to removing this TODO comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice idea! One user feedback issue.
@@ -25,21 +25,15 @@ if [ -z "${PR_ID}" ]; then | |||
echo " e.g. $0 <PR_NUMBER>" | |||
exit 1 | |||
fi | |||
# Retrieve the first commit of the pull request via GitHub API | |||
# TODO: If we teach core-validate-commit to ignore "fixup!" and "squash!" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No objections to removing this TODO comment.
tools/lint-pr-commit-message.sh
Outdated
|
||
PATCH=$( curl -sL https://github.com/nodejs/node/pull/${PR_ID}.patch | grep '^From \|^Subject: ' ) | ||
if FIRST_COMMIT="$( echo "$PATCH" | awk '/^From [0-9a-f]{40} / { if (count++ == 0) print $2 }' )"; then | ||
MESSAGE=$( echo "$PATCH" | awk '/^Subject: \[PATCH 1/ { gsub(/^Subject: \[PATCH[^\]]*\] /, ""); print }' ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like the MESSAGE
logic isn't working -- Probably because the message has been filtered out of PATCH
above?
e.g.
-bash-4.2$ bash tools/lint-pr-commit-message.sh 24574
*** Linting the first commit message for pull request 24574
*** according to the guidelines at https://goo.gl/p2fr5Q.
*** Commit message for 6f645d3675 is:
✔ 6f645d367591a2d3734caa28dacdd7bcdcef3528
✔ 1:7 Valid fixes url fixes-url
✔ 0:0 blank line after title line-after-title
✔ 0:0 line-lengths are valid line-length
✔ 0:0 valid subsystems subsystem
✔ 0:0 Title is formatted correctly. title-format
✔ 0:0 Title is <= 50 columns. title-length
-bash-4.2$
I would expect to see
...
*** Commit message for 6f645d3675 is:
tools: don't use GH API for commit message checks
Fixes: https://github.com/nodejs/node/issues/24567
...
The reason for printing the message is that it should make it obvious what is being linted (just in case, for example, the wrong SHA is used).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
diff --git a/tools/lint-pr-commit-message.sh b/tools/lint-pr-commit-message.sh
index 0bc873f..7ea75ab 100644
--- a/tools/lint-pr-commit-message.sh
+++ b/tools/lint-pr-commit-message.sh
@@ -28,12 +28,12 @@ fi
PATCH=$( curl -sL https://github.com/nodejs/node/pull/${PR_ID}.patch | grep '^From \|^Subject: ' )
if FIRST_COMMIT="$( echo "$PATCH" | awk '/^From [0-9a-f]{40} / { if (count++ == 0) print $2 }' )"; then
- MESSAGE=$( echo "$PATCH" | awk '/^Subject: \[PATCH 1/ { gsub(/^Subject: \[PATCH[^\]]*\] /, ""); print }' )
+ MESSAGE=$( git show --quiet --format='format:%B' $FIRST_COMMIT )
echo "
*** Linting the first commit message for pull request ${PR_ID}
*** according to the guidelines at https://goo.gl/p2fr5Q.
*** Commit message for $(echo $FIRST_COMMIT | cut -c 1-10) is:
- ${MESSAGE}
+${MESSAGE}
"
npx -q core-validate-commit --no-validate-metadata "${FIRST_COMMIT}"
fi
e.g.
-bash-4.2$ bash tools/lint-pr-commit-message.sh 24574
*** Linting the first commit message for pull request 24574
*** according to the guidelines at https://goo.gl/p2fr5Q.
*** Commit message for 6f645d3675 is:
tools: don't use GH API for commit message checks
Fixes: https://github.com/nodejs/node/issues/24567
✔ 6f645d367591a2d3734caa28dacdd7bcdcef3528
✔ 1:7 Valid fixes url fixes-url
✔ 0:0 blank line after title line-after-title
✔ 0:0 line-lengths are valid line-length
✔ 0:0 valid subsystems subsystem
✔ 0:0 Title is formatted correctly. title-format
✔ 0:0 Title is <= 50 columns. title-length
-bash-4.2$
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggested diff as suggested changes to fix user feedback.
tools/lint-pr-commit-message.sh
Outdated
|
||
PATCH=$( curl -sL https://github.com/nodejs/node/pull/${PR_ID}.patch | grep '^From \|^Subject: ' ) | ||
if FIRST_COMMIT="$( echo "$PATCH" | awk '/^From [0-9a-f]{40} / { if (count++ == 0) print $2 }' )"; then | ||
MESSAGE=$( echo "$PATCH" | awk '/^Subject: \[PATCH 1/ { gsub(/^Subject: \[PATCH[^\]]*\] /, ""); print }' ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MESSAGE=$( echo "$PATCH" | awk '/^Subject: \[PATCH 1/ { gsub(/^Subject: \[PATCH[^\]]*\] /, ""); print }' ) | |
MESSAGE=$( git show --quiet --format='format:%B' $FIRST_COMMIT ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just realised that if this change is made we can also drop |^Subject:
from the grep
for PATCH
above.
tools/lint-pr-commit-message.sh
Outdated
*** Linting the first commit message for pull request ${PR_ID} | ||
*** according to the guidelines at https://goo.gl/p2fr5Q. | ||
*** Commit message for $(echo $FIRST_COMMIT | cut -c 1-10) is: | ||
${MESSAGE} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
${MESSAGE} | |
${MESSAGE} |
Ping @rvagg. |
@richardlau I went ahead and applied your two nits because this is a change I desperately want to see land. Can you confirm that everything looks good to you now and, if so, clear your request for changes? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with one remaining nit.
Fixes: nodejs#24567 PR-URL: nodejs#24574 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Landed in 76faccc |
Fixes: nodejs#24567 PR-URL: nodejs#24574 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Fixes: #24567
.patch URLs contain enough predictable and usable data to make this work without the API