Hi Andreas, On Tue, 11 Dec 2018 21:47:43 +0100 Andreas Grünbacher <andreas.gruenbacher@xxxxxxxxx> wrote: > > Yep, I've not asked for a way to get the server to reject or warn > about such pushes without a reason. Sure, but also here's the script I run (which could be run before pushing) ... ---------------------------------------------------------------------- #!/bin/bash if [ "$#" -lt 1 ]; then printf "Usage: %s <commit range>\n", "$0" 1>&2 exit 1 fi commits=$(git rev-list --no-merges "$@") if [ -z "$commits" ]; then printf "No commits\n" 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>%n<%aE>%n %an %n %aN ' "$c" | sort -u) ce=$(git log -1 --format='<%ce>%n<%cE>%n %cn %n %cN ' "$c" | sort -u) msg=$(git log -1 --format='%b' "$c") sob=$(echo "$msg" | sed -En 's/^\s*Signed-off-by:?\s*/ /ip') am=false cm=false grep -i -F -q "$ae" <<<"$sob" || am=true grep -i -F -q "$ce" <<<"$sob" || cm=true "$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 ---------------------------------------------------------------------- -- Cheers, Stephen Rothwell
Attachment:
pgp4YOQ9bnBB0.pgp
Description: OpenPGP digital signature