Allow blank lines after the signoff section, since there will usually
be a blank line between the signoff and the checkpatch.pl output.
Improve the EMAILPAT regex to detect bad email addresses that do not
have a full name (at least 2 parts) and a full domain (also with
at least 2 parts).
Allow a generic "{Organization}-bug-id:" line in the signoff section
to allow linking the patch commit into arbitrary bug databases for
ease of tracking patches.
Add test cases for all of these changes.
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Iaf14f6c985d3dd4837064d29071bd9acd8031d67
Reviewed-on: http://review.whamcloud.com/1867
Reviewed-by: <bruce.korb@gmail.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Bobi Jam <bobijam@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
echo $(ARCH) >$(ARCHFILE)
TESTS := $(wildcard commit.*)
echo $(ARCH) >$(ARCHFILE)
TESTS := $(wildcard commit.*)
SHELL="$(SHELL)" $(SHELL) test-commit-msg.sh $(TESTS)
SHELL="$(SHELL)" $(SHELL) test-commit-msg.sh $(TESTS)
readonly INNOCUOUS=$(echo \
Acked-by \
Tested-by \
readonly INNOCUOUS=$(echo \
Acked-by \
Tested-by \
Reported-by \
Reviewed-by \
Reported-by \
Reviewed-by \
| tr ' ' '|')
readonly WIDTH_SUM=64
readonly WIDTH_REG=70
| tr ' ' '|')
readonly WIDTH_SUM=64
readonly WIDTH_REG=70
# Identify a name followed by an email address.
#
# Identify a name followed by an email address.
#
- readonly EMAILPAT=$'[ \t]*[a-zA-Z][^<>]*[ \t]<[^@ \t>]+@[^@ \t>]+>'
+ readonly EMAILPAT=$'[ \t]*[^<> ]* [^<>]* <[^@ \t>]+@[a-zA-Z0-9.-]+\.[a-z]+>'
HAS_ERROR=false
HAS_SUMMARY=false
HAS_ERROR=false
HAS_SUMMARY=false
ck_wrapup
# Signed-off-by: First Last <email@host.domain>
local txt=$(echo "${LINE#*: }" | grep -E "${EMAILPAT}")
ck_wrapup
# Signed-off-by: First Last <email@host.domain>
local txt=$(echo "${LINE#*: }" | grep -E "${EMAILPAT}")
- if (( ${#txt} == 0 )) ; then
+ if (( ${#txt} == 0 )); then
error "$SIGNOFF line requires name and email address"
else
HAS_SIGNOFF=true # require at least one
error "$SIGNOFF line requires name and email address"
else
HAS_SIGNOFF=true # require at least one
# capital "I" plus 40 hex digits
#
local txt=$(echo "$LINE" | grep "^$CHANGEID I[0-9a-fA-F]\{40\}\$")
# capital "I" plus 40 hex digits
#
local txt=$(echo "$LINE" | grep "^$CHANGEID I[0-9a-fA-F]\{40\}\$")
error "has invalid $CHANGEID line for Gerrit tracking"
HAS_CHANGEID=true
error "has invalid $CHANGEID line for Gerrit tracking"
HAS_CHANGEID=true
error "invalid signoff section line"
return
}
error "invalid signoff section line"
return
}
- if (( NUM == 1 )) ; then
+ if (( NUM == 1 )); then
HAS_JIRA_COMPONENT=$(echo "$LINE" | grep "$JIRA_FMT_A")
HAS_JIRA_COMPONENT=$(echo "$LINE" | grep "$JIRA_FMT_A")
- if (( ${#HAS_JIRA_COMPONENT} == 0 )) ; then
+ if (( ${#HAS_JIRA_COMPONENT} == 0 )); then
HAS_JIRA=$(echo "$LINE" | grep "$JIRA_FMT_B")
HAS_JIRA=$(echo "$LINE" | grep "$JIRA_FMT_B")
- if (( ${#HAS_JIRA} > 0 )) ; then
+ if (( ${#HAS_JIRA} > 0 )); then
error "has no component in summary."
else
error "missing JIRA ticket number."
fi
error "has no component in summary."
else
error "missing JIRA ticket number."
fi
- elif (( ${#LINE} > WIDTH_SUM )) ; then
+ elif (( ${#LINE} > WIDTH_SUM )); then
error "summary longer than $WIDTH_SUM columns."
else
HAS_SUMMARY=true
fi
error "summary longer than $WIDTH_SUM columns."
else
HAS_SUMMARY=true
fi
- elif (( ${#LINE} > WIDTH_REG )) ; then
+ elif (( ${#LINE} > WIDTH_REG )); then
error "has line longer than $WIDTH_REG columns."
elif ! $HAS_BODY && ! $HAS_LAST_BLANK; then
error "has no blank line after summary."
error "has line longer than $WIDTH_REG columns."
elif ! $HAS_BODY && ! $HAS_LAST_BLANK; then
error "has no blank line after summary."
git rev-parse HEAD 2>/dev/null
grep -v "^$SIGNOFF" "$ORIGINAL" | git stripspace -s
} | git hash-object --stdin)
git rev-parse HEAD 2>/dev/null
grep -v "^$SIGNOFF" "$ORIGINAL" | git stripspace -s
} | git hash-object --stdin)
- (( ${#NEWID} > 0 )) || \
die "git hash-object failed for $CHANGEID:"
echo "$CHANGEID I$NEWID"
die "git hash-object failed for $CHANGEID:"
echo "$CHANGEID I$NEWID"
$SIGNOFF Your Real Name <your_email@domain.name>
$CHANGEID Ixxxx(added automatically if missing)xxxx
$SIGNOFF Your Real Name <your_email@domain.name>
$CHANGEID Ixxxx(added automatically if missing)xxxx
- Included in the "sign off section" may be any of several other
- tag lines:
- $(echo "$INNOCUOUS" | tr '|' ' ')
The "$CHANGEID" line should only be there when updating a previous
The "$CHANGEID" line should only be there when updating a previous
- commit/submission. Copy the one from that commit.
+ commit/submission. Copy the one from the original commit.
+
+ The "sign off section" may also include several other tag lines:
+ $(for T in $(tr '|' ' ' <<< "$INNOCUOUS"); do echo " $T: <email>"; done
+ {Organization}-bug-id: associated ticket identifier
- mv "$ORIGINAL" "$SAVE" && \
+ mv "$ORIGINAL" "$SAVE" &&
echo "$0: saved original commit comment to $SAVE" 1>&2
}
echo "$0: saved original commit comment to $SAVE" 1>&2
}
$CHANGEID* ) do_changeid ;;
"")
$CHANGEID* ) do_changeid ;;
"")
- $IS_WRAPPING_UP && \
- error "blank lines not allowed in signoff section"
+ $IS_WRAPPING_UP && continue
- if [[ "$LINE" =~ ^($INNOCUOUS): ]] ; then
+ if [[ "$LINE" =~ ^($INNOCUOUS): ]]; then
+ elif [[ "$LINE" =~ ^[A-Za-z0-9_-]+-bug-id: ]]; then
+ ck_wrapup
+ else
+ # Allow arbitrary external bug identifiers for tracking.
+ # I can't seem to find a pattern for the "case" that
+ # checks for "*-bug-id", so this is checked here.
--- /dev/null
+LU-553 build: improve checks for commit-msg
+
+message
+body
+
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+Change-Id: I0123456789012345678901234567890123456789
+Xyratex-bug-id: MRP-123
+Oracle-bug-id: 12345
having to recreate it each time, or fetch it from .git/COMMIT_MSG.
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
having to recreate it each time, or fetch it from .git/COMMIT_MSG.
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
-Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+Signed-off-by: Andrew Dillinger <adillinger@wild-west.com>
--- /dev/null
+LU-553 build: improve checks for commit-msg
+
+message
+body
+
+Signed-off-by: Orin Scrivello, DDS <ouch@icu4dk.com>
+Change-Id: I0123456789012345678901234567890123456789
+Acked-by: Joe Doaks <Joe.Doaks@sample.info>
+Tested-by: Jane Pain <Jane.Pain@sample.co.uk>
+CC: Your Mother <mutha@home.net>
+Reported-by: Anony Mouse <mickey@steamboat.biz>
+Reviewed-by: Joe Hacker <root@p0wned.com>
body
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
body
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+Signed-off-by: Andreas Eric Dilger <adilger@dilger.ca>
+Signed-off-by: Andreas Eric Dilger <andreas.dilger@mail.my-domain.za>
+Signed-off-by: Andreas Smyth Esq. III <asmyth_iii@my-domain-3.co.uk>
Change-Id: I0123456789012345678901234567890123456789
Change-Id: I0123456789012345678901234567890123456789
-Acked-by: Joe Doaks <Joe.Doaks@sample.com>
-Tested-by: Jane Pain <Jane.Pain@sample.com>
-CC: Your Mother <mom@sample.com>
-Reported-by: Anony Mouse <mickey@sample.com>
-Reviewed-by: Joe Hacker <joey@hacker-industries.com>
+
+# total: 0 errors, 0 warnings, 36 lines checked
+#
+# Your patch has no obvious style problems and is ready for submission.
+rm -f $TEMPFILE $TEMPFILE.*