]> git.ozlabs.org Git - next-scripts/blob - check_commits
check_commits: output a more useful commit line
[next-scripts] / check_commits
1 #!/bin/bash
2
3 if [ "$#" -lt 1 ]; then
4         printf "Usage: %s <commit range>\n", "$0" 1>&2
5         exit 1
6 fi
7
8 commits=$(git rev-list --no-merges "$@")
9 if [ -z "$commits" ]; then
10         printf "No commits\n"
11         exit 0
12 fi
13
14 for c in $commits; do
15         ae=$(git log -1 --format='%ae' "$c")
16         aE=$(git log -1 --format='%aE' "$c")
17         an=$(git log -1 --format='%an' "$c")
18         aN=$(git log -1 --format='%aN' "$c")
19         ce=$(git log -1 --format='%ce' "$c")
20         cE=$(git log -1 --format='%cE' "$c")
21         cn=$(git log -1 --format='%cn' "$c")
22         cN=$(git log -1 --format='%cN' "$c")
23         sob=$(git log -1 --format='%b' "$c" | grep -i '^[[:space:]]*Signed-off-by:')
24
25         am=false
26         cm=false
27         grep -i -q "<$ae>" <<<"$sob" ||
28                 grep -i -q "<$aE>" <<<"$sob" ||
29                 grep -i -q ":[[:space:]]*$an[[:space:]]*<" <<<"$sob" ||
30                 grep -i -q ":[[:space:]]*$aN[[:space:]]*<" <<<"$sob" ||
31                 am=true
32         grep -i -q "<$ce>" <<<"$sob" ||
33                 grep -i -q "<$cE>" <<<"$sob" ||
34                 grep -i -q ":[[:space:]]*$cn[[:space:]]*<" <<<"$sob" ||
35                 grep -i -q ":[[:space:]]*$cN[[:space:]]*<" <<<"$sob" ||
36                 cm=true
37
38         if "$am" || "$cm"; then
39                 git log -1 --pretty='format:  %h ("%s")' "$c"
40                 "$am" && printf "\tauthor SOB missing\n"
41                 "$cm" && printf "\tcommitter SOB missing\n"
42                 printf "%s %s\n%s\n" "$ae" "$ce" "$sob"
43         fi
44 done
45
46 exec gitk "$@"