Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign uptools: don't use GH API for commit message checks #24574
Conversation
rvagg
requested a review
from
richardlau
Nov 23, 2018
This comment has been minimized.
This comment has been minimized.
nodejs-github-bot
added
the
tools
label
Nov 23, 2018
rvagg
referenced this pull request
Nov 23, 2018
Closed
Hitting rate limits with Travis commit message linting #24567
This comment has been minimized.
This comment has been minimized.
|
script in action on this PR: https://travis-ci.com/nodejs/node/jobs/160424788#L470 |
refack
approved these changes
Nov 23, 2018
This comment has been minimized.
This comment has been minimized.
|
And we have green - https://travis-ci.com/nodejs/node/jobs/160424788 |
refack
added
build
test
meta
labels
Nov 23, 2018
devsnek
approved these changes
Nov 23, 2018
mscdex
reviewed
Nov 23, 2018
| @@ -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!" | |||
This comment has been minimized.
This comment has been minimized.
mscdex
Nov 23, 2018
Contributor
Isn't this comment still relevant? The only thing that's different in it is the url in the command line example?
This comment has been minimized.
This comment has been minimized.
rvagg
Nov 23, 2018
Author
Member
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.
This comment has been minimized.
This comment has been minimized.
rvagg
Nov 23, 2018
Author
Member
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?
This comment has been minimized.
This comment has been minimized.
danbev
approved these changes
Nov 23, 2018
richardlau
requested changes
Nov 23, 2018
|
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!" | |||
This comment has been minimized.
This comment has been minimized.
|
|
||
| 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 }' ) |
This comment has been minimized.
This comment has been minimized.
richardlau
Nov 23, 2018
Member
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).
This comment has been minimized.
This comment has been minimized.
richardlau
Nov 23, 2018
Member
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}"
fie.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$
richardlau
requested changes
Nov 23, 2018
|
Suggested diff as suggested changes to fix user feedback. |
|
|
||
| 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 }' ) |
This comment has been minimized.
This comment has been minimized.
richardlau
Nov 23, 2018
Member
| MESSAGE=$( echo "$PATCH" | awk '/^Subject: \[PATCH 1/ { gsub(/^Subject: \[PATCH[^\]]*\] /, ""); print }' ) | |
| MESSAGE=$( git show --quiet --format='format:%B' $FIRST_COMMIT ) |
This comment has been minimized.
This comment has been minimized.
richardlau
Nov 23, 2018
Member
Just realised that if this change is made we can also drop |^Subject: from the grep for PATCH above.
| *** 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} |
This comment has been minimized.
This comment has been minimized.
This was referenced Nov 23, 2018
This comment has been minimized.
This comment has been minimized.
|
Ping @rvagg. |
This comment has been minimized.
This comment has been minimized.
|
@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? |
This comment has been minimized.
This comment has been minimized.
gireeshpunathil
approved these changes
Dec 1, 2018
richardlau
approved these changes
Dec 1, 2018
|
LGTM with one remaining nit. |
tools/lint-pr-commit-message.sh Outdated
This comment has been minimized.
This comment has been minimized.
Trott
added a commit
to Trott/io.js
that referenced
this pull request
Dec 1, 2018
This comment has been minimized.
This comment has been minimized.
|
Landed in 76faccc |
rvagg commentedNov 23, 2018
Fixes: #24567
.patch URLs contain enough predictable and usable data to make this work without the API