]> git.ozlabs.org Git - next-scripts/commitdiff
check_commits: speed up somewhat and produce usable output
authorStephen Rothwell <sfr@canb.auug.org.au>
Sat, 21 Jul 2018 14:54:03 +0000 (00:54 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Sun, 22 Jul 2018 22:01:57 +0000 (08:01 +1000)
check_commits

index bfce10243f1e57de57ef558e0d137c61bc1e5628..1a87da91bba2618a3e448378c0dbacef2313602d 100755 (executable)
@@ -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 "$@"