From: Ali Alnubani <[email protected]> The checkpatches.sh script was checking if stdin is a terminal before honoring the -n flag, causing it to incorrectly attempt to read patches from stdin when run without a TTY (e.g., in Jenkins/CI pipelines).
Reorder the conditionals to check for the -n and -r flags before checking stdin state. This ensures the -n/-r flags takes precedence and the script checks git commits as intended. Signed-off-by: Ali Alnubani <[email protected]> Signed-off-by: Thomas Monjalon <[email protected]> --- v2: make also -r a priority (before considering stdin) --- devtools/checkpatches.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh index 9fb8fd0a07..47e8ca57b4 100755 --- a/devtools/checkpatches.sh +++ b/devtools/checkpatches.sh @@ -421,8 +421,8 @@ check_release_notes() { # <patch> grep -v $current_rel_notes } -number=0 -range='origin/main..' +number= +range= quiet=false verbose=false while getopts hn:qr:v ARG ; do @@ -558,17 +558,20 @@ if [ -n "$1" ] ; then for patch in "$@" ; do check "$patch" '' done -elif [ ! -t 0 ] ; then # stdin - check '' '' -else - if [ $number -eq 0 ] ; then - commits=$(git rev-list --reverse $range) - else +elif [ -n "$number" ] || [ -n "$range" ] || [ -t 0 ]; then + if [ -n "$number" ] ; then commits=$(git rev-list --reverse --max-count=$number HEAD) + else + if [ -z "$range" ] ; then + range='origin/main..' # default + fi + commits=$(git rev-list --reverse $range) fi for commit in $commits ; do check '' $commit done +else # stdin + check '' '' fi pass=$(($total - $status)) $quiet || printf '\n%d/%d valid patch' $pass $total -- 2.51.0

