X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=check_fixes;h=84d72150734715e44c73da727f1f07d0d6658625;hb=HEAD;hp=46a0b370169cbe879754e8c1264d7bcc211fc880;hpb=e81b3701b03a70e546fe509b71048087d58f6ca3;p=next-scripts diff --git a/check_fixes b/check_fixes index 46a0b37..84d7215 100755 --- a/check_fixes +++ b/check_fixes @@ -1,5 +1,7 @@ #!/bin/bash +shopt -s extglob + if [ "$#" -lt 1 ]; then printf 'Usage: %s \n', "$0" 1>&2 exit 1 @@ -15,36 +17,29 @@ Linus_tree="${HOME}/kernels/linus.git" split_re='^([Cc][Oo][Mm][Mm][Ii][Tt])?[[:space:]]*([[:xdigit:]]{5,})([[:space:]]*)(.*)$' nl=$'\n' +tab=$'\t' # Strip the leading and training spaces from a string strip_spaces() { - [[ "$1" =~ ^[[:space:]]*(.*[^[:space:]])[[:space:]]*$ ]] - echo "${BASH_REMATCH[1]}" + local str="${1##*([[:space:]])}" + str="${str%%*([[:space:]])}" + echo "$str" } for c in $commits; do - commit_log=$(git log -1 --format='%h ("%s")' "$c") - commit_msg="In commit - - $commit_log - -" - - fixes_lines=$(git log -1 --format='%B' "$c" | - grep -i '^[[:space:]]*Fixes:') - - while read -r fline; do - [[ "$fline" =~ ^[[:space:]]*[Ff][Ii][Xx][Ee][Ss]:[[:space:]]*(.*)$ ]] - f="${BASH_REMATCH[1]}" - fixes_msg="Fixes tag - - $fline + printf -v commit_msg 'In commit\n\n %s\n\n' \ + "$(git log -1 --format='%h ("%s")' "$c")" -has these problem(s): + readarray -t fixes_lines < <(git log -1 --format='%B' "$c" | + grep -i '^[[:space:]]*Fixes:') + fixes_lines=( "${fixes_lines[@]##*([[:space:]])}" ) + fixes_lines=( "${fixes_lines[@]%%*([[:space:]])}" ) -" + for fline in "${fixes_lines[@]}"; do + f="${fline##[Ff][Ii][Xx][Ee][Ss]:*([[:space:]])}" + printf -v fixes_msg 'Fixes tag\n\n %s\n\nhas these problem(s):\n\n' "$fline" sha= subject= msg= @@ -127,7 +122,7 @@ has these problem(s): target_subject=$(strip_spaces "$target_subject") if [ "$subject" != "${target_subject:0:${#subject}}" ]; then - msg="${msg:+${msg}${nl}} - Subject does not match target commit subject" + msg="${msg:+${msg}${nl}} - Subject does not match target commit subject${nl} Just use${nl}${tab}git log -1 --format='Fixes: %h (\"%s\")'" fi lsha=$(cd "$Linus_tree" && git rev-parse -q --verify "$sha") if [ -z "$lsha" ]; then @@ -140,7 +135,7 @@ has these problem(s): printf '%s%s%s\n' "$commit_msg" "$fixes_msg" "$msg" commit_msg='' fi - done <<< "$fixes_lines" + done done exit 0