From: Stephen Rothwell Date: Sat, 21 Jul 2018 14:54:03 +0000 (+1000) Subject: check_commits: speed up somewhat and produce usable output X-Git-Url: https://git.ozlabs.org/?a=commitdiff_plain;h=9a25379ad95313af3f99a9b0b1f6db64e7dd2daa;p=next-scripts check_commits: speed up somewhat and produce usable output --- diff --git a/check_commits b/check_commits index bfce102..1a87da9 100755 --- a/check_commits +++ b/check_commits @@ -11,36 +11,49 @@ if [ -z "$commits" ]; then exit 0 fi +author_missing= +committer_missing= + +print_commits() +{ + local t="$1" + + shift + + s= + is='is' + its='its' + [ "$#" -gt 1 ] && { + s='s' + is='are' + its='their' + } + printf "Commit%s\n\n" "$s" + git log --no-walk --pretty='format: %h ("%s")' "$@" + printf "\n%s missing a Signed-off-by from %s %s%s.\n" "$is" "$its" "$t" "$s" + printf "\n" +} + for c in $commits; do - ae=$(git log -1 --format='%ae' "$c") - aE=$(git log -1 --format='%aE' "$c") - an=$(git log -1 --format='%an' "$c") - aN=$(git log -1 --format='%aN' "$c") - ce=$(git log -1 --format='%ce' "$c") - cE=$(git log -1 --format='%cE' "$c") - cn=$(git log -1 --format='%cn' "$c") - cN=$(git log -1 --format='%cN' "$c") + ae=$(git log -1 --format='<%ae>%n<%aE>%n %an %n %aN ' "$c") + ce=$(git log -1 --format='<%ce>%n<%cE>%n %cn %n %cN ' "$c") sob=$(git log -1 --format='%b' "$c" | grep -i '^[[:space:]]*Signed-off-by:') am=false cm=false - grep -i -q "<$ae>" <<<"$sob" || - grep -i -q "<$aE>" <<<"$sob" || - grep -i -q ":[[:space:]]*$an[[:space:]]*<" <<<"$sob" || - grep -i -q ":[[:space:]]*$aN[[:space:]]*<" <<<"$sob" || + grep -i -F -q "$ae" <<<"$sob" || am=true - grep -i -q "<$ce>" <<<"$sob" || - grep -i -q "<$cE>" <<<"$sob" || - grep -i -q ":[[:space:]]*$cn[[:space:]]*<" <<<"$sob" || - grep -i -q ":[[:space:]]*$cN[[:space:]]*<" <<<"$sob" || + grep -i -F -q "$ce" <<<"$sob" || cm=true - - if "$am" || "$cm"; then - git log -1 --pretty='format: %h ("%s")' "$c" - "$am" && printf "\tauthor SOB missing\n" - "$cm" && printf "\tcommitter SOB missing\n" - printf "%s %s\n%s\n" "$ae" "$ce" "$sob" - fi + "$am" && author_missing+=" $c" + "$cm" && committer_missing+=" $c" done +if [ "$author_missing" ]; then + print_commits "author" $author_missing +fi +if [ "$committer_missing" ]; then + print_commits "committer" $committer_missing +fi + exec gitk "$@"