REVISED="$(mktemp "$1.XXXXXX")"
SIGNOFF="Signed-off-by:"
CHANGEID="Change-Id:"
+WIDTH_SUM=64
+WIDTH_REG=70
# Check for, and add if missing, a unique Change-Id
new_changeid() {
git write-tree
git rev-parse HEAD 2>/dev/null
grep -v "$SIGNOFF" "$ORIGINAL" | git stripspace -s
- } | git hash-object -t commit --stdin
+ } | git hash-object --stdin
}
usage() {
A more detailed explanation. This can be as detailed as you'd like.
Please explain both what problem was solved and a good high-level
- description of how it was solved. Wrap lines at 70 columns or less.
+ description of how it was solved. Wrap at $WIDTH_REG columns or less.
$SIGNOFF Your Real Name <your_email@domain.name>
$CHANGEID Ixxxx(added automatically if missing)xxxx
export HAS_SUMMARY=false
export HAS_BLANK=false
export HAS_COMMENTS=false
+export HAS_DIFF=false
grep -q "^$CHANGEID" "$ORIGINAL" && HAS_CHANGEID=true || HAS_CHANGEID=false
IFS=""
while read LINE; do
- LENGTH=$(echo $LINE | wc -c)
+ WIDTH=$(($(echo $LINE | wc -c) - 1)) # -1 for end-of-line character
case "$LINE" in
$SIGNOFF*)
$HAS_SUMMARY || usage "missing summary before $SIGNOFF."
$HAS_BLANK || usage "missing blank line before $SIGNOFF."
- GOOD=$(echo "$LINE" | grep "^$SIGNOFF .* .* <.*@.*>")
+ # Signed-off-by: First Last <email@host.domain>
+ GOOD=$(echo "$LINE" | grep "^$SIGNOFF .* .* <.*@[^.]*\..*>")
[ -z "$GOOD" ] &&
usage "missing valid commit summary line to show" \
"agreement with code submission requirements at"
$CHANGEID*)
$HAS_SUMMARY || usage "missing summary before $CHANGEID line."
$HAS_BLANK || usage "missing blank line before $CHANGEID line."
+ # Change-Id: I762ab50568f25527176ae54e92c446cf06112097
+ GOOD=$(echo "$LINE" | grep "^$CHANGEID I[0-9a-fA-F]\{40\}")
+ [ -z "$GOOD" ] &&
+ usage "missing valid $CHANGEID line for Gerrit tracking"
HAS_CHANGEID=true
echo $LINE
;;
"") [ $HAS_SUMMARY -a $NUM -eq 2 ] && HAS_BLANK=true
echo $LINE
;;
+ diff*|index*) # beginning of uncommented diffstat from "commit -v"
+ # diff --git a/build/commit-msg b/build/commit-msg
+ # index 80a3442..acb4c50 100755
+ DIFF=$(echo "$LINE" | grep -- "^diff --git a/")
+ [ "$DIFF" ] && HAS_DIFF=true && continue
+ INDEX=$(echo "$LINE" | grep -- "^index [0-9a-fA-F]\{6,\}\.\.")
+ [ $HAS_DIFF -a "$INDEX" ] && break || HAS_DIFF=false
+ ;;
\#*) HAS_COMMENTS=true
continue
;;
*) if [ $NUM -eq 1 ]; then
FMT="^[A-Z]\{2,5\}-[0-9]\{1,5\} [-a-z0-9]\{2,9\}: "
GOOD=$(echo "$LINE" | grep "$FMT")
- [ $LENGTH -gt 64 ] &&
- usage "summary longer than 64 columns."
+ [ $WIDTH -gt $WIDTH_SUM ] &&
+ usage "summary longer than $WIDTH_SUM columns."
if [ -z "$GOOD" ]; then
FMT="^[A-Z]\{2,5\}-[0-9]\{1,5\} "
NO_SUBSYS=$(echo "$LINE" | grep "$FMT")
usage "missing valid commit summary line."
fi
HAS_SUMMARY=true
- elif [ $LENGTH -gt 70 ]; then
- usage "has lines longer than 70 columns."
+ elif [ $WIDTH -gt $WIDTH_REG ]; then
+ usage "has lines longer than $WIDTH_REG columns."
fi
+ HAS_DIFF=false
echo $LINE
;;
esac