mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Improve the logic of the file entry Git hooks to support more cases
In addition to starting with a "*", file entries now need a ":" somewhere in them. This helps reduce false positives with bulleted lists. Also, support multiple files separated by commas after a "*". * build-aux/git-hooks/commit-msg-files.awk (check_commit_msg_files): Accumulate file entries over multiple lines to support the above.
This commit is contained in:
parent
2e85ac2b27
commit
9914de503b
1 changed files with 23 additions and 8 deletions
|
|
@ -59,15 +59,28 @@ function check_commit_msg_files(commit_sha, verbose, changes, good, \
|
|||
if (verbose && ! msg)
|
||||
msg = $0
|
||||
|
||||
# Find lines that reference files. We look at any line starting
|
||||
# with "*" (possibly prefixed by "; ") where the file part starts
|
||||
# with an alphanumeric character. The file part ends if we
|
||||
# encounter any of the following characters: [ ( < { :
|
||||
if (/^(; )?\*[ \t]+[[:alnum:]]/ && match($0, /[[:alnum:]][^[(<{:]*/)) {
|
||||
# There might be multiple files listed on this line, separated
|
||||
# by spaces (and possibly a comma). Iterate over each of them.
|
||||
split(substr($0, RSTART, RLENGTH), filenames, ",?([[:blank:]]+|$)")
|
||||
# Find file entries in the commit message. We look at any line
|
||||
# starting with "*" (possibly prefixed by "; ") followed by a ":",
|
||||
# possibly on a different line. If we encounter a blank line
|
||||
# without seeing a ":", then we don't treat that as a file entry.
|
||||
|
||||
# Accumulate the contents of a (possible) file entry.
|
||||
if (/^[ \t]*$/)
|
||||
filenames_str = ""
|
||||
else if (/^(; )?\*[ \t]+[[:alnum:]]/)
|
||||
filenames_str = $0
|
||||
else if (filenames_str)
|
||||
filenames_str = (filenames_str $0)
|
||||
|
||||
# We have a file entry; analyze it.
|
||||
if (filenames_str && /:/) {
|
||||
# Delete the leading "*" and any trailing information.
|
||||
sub(/^(; )?\*[ \t]+/, "", filenames_str)
|
||||
sub(/[ \t]*[[(<:].*$/, "", filenames_str)
|
||||
|
||||
# There might be multiple files listed in this entry, separated
|
||||
# by spaces (and possibly a comma). Iterate over each of them.
|
||||
split(filenames_str, filenames, ",[ \t]+")
|
||||
for (i in filenames) {
|
||||
# Remove trailing slashes from any directory entries.
|
||||
sub(/\/$/, "", filenames[i])
|
||||
|
|
@ -83,6 +96,8 @@ function check_commit_msg_files(commit_sha, verbose, changes, good, \
|
|||
good = 0
|
||||
}
|
||||
}
|
||||
|
||||
filenames_str = ""
|
||||
}
|
||||
}
|
||||
close(cmd)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue