summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorJim Meyering <meyering@fb.com>2021-12-19 17:19:01 -0800
committerJim Meyering <meyering@fb.com>2021-12-20 10:46:11 -0800
commita2b21e910509f58a5d8c9976d46d7cd63d068ecc (patch)
treeb5d0fdcc79e4b46bedc605bc438907b3f138d18f /scripts
parent915a5e3360ecdda46af2b8cfdb2e63ef467b53c3 (diff)
downloadcoreutils-a2b21e910509f58a5d8c9976d46d7cd63d068ecc.tar.gz
maint: commit-msg: compute UTF-8-aware line-length
* scripts/git-hooks/commit-msg: Count UTF-8 characters rather than bytes to avoid erroneously rejecting as "longer than 72" a log message line like the UTF-8 one for id.c just prior. It has 77 bytes but only 67 characters. (check_msg): Read in "utf8" mode. Also include actual length in the diagnostic. (main): Don't loop when stdout is redirected, as it is when invoked via vc-dwim. Paul Eggert reported privately both the error of counting bytes rather than chars and the re_edit loop when failing via vc-dwim.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/git-hooks/commit-msg9
1 files changed, 6 insertions, 3 deletions
diff --git a/scripts/git-hooks/commit-msg b/scripts/git-hooks/commit-msg
index 9c80406d9..7a99e45aa 100755
--- a/scripts/git-hooks/commit-msg
+++ b/scripts/git-hooks/commit-msg
@@ -87,7 +87,7 @@ sub check_msg($$)
my ($log_file, $line_ref) = @_;
local *LOG;
- open LOG, '<', $log_file
+ open LOG, '<:utf8', $log_file
or return "failed to open for reading: $!";
@$line_ref = <LOG>;
close LOG;
@@ -117,10 +117,12 @@ sub check_msg($$)
and return 'second line must be empty';
# Limit line length to allow for the ChangeLog's leading TAB.
+ my $max_len = 72;
foreach my $line (@line)
{
- 72 < length $line && $line =~ /^[^#]/
- and return 'line longer than 72';
+ my $len = length $line;
+ $max_len < $len && $line =~ /^[^#]/
+ and return "line length ($len) greater than than max: $max_len";
}
my $buf = join ("\n", @line) . "\n";
@@ -149,6 +151,7 @@ sub check_msg($$)
$err eq ''
and last;
$err = "$ME: $err\n";
+ -t STDOUT or die $err;
warn $err;
# Insert the diagnostic as a comment on the first line of $log_file.
rewrite $log_file, $err, \@line;