From dc282c7db73967f37fe970dddc4beee926c3227d Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Date: Tue, 18 Mar 2014 22:18:52 +0100 Subject: [PATCH] complain about multiple [ChangeLog] misuses Change-Id: I223eaf32782b2c0d2de3a815e0968706bfff1bdb Reviewed-by: Sergio Ahumada <sahumada@blackberry.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> --- git-hooks/sanitize-commit | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/git-hooks/sanitize-commit b/git-hooks/sanitize-commit index 79d6c89..1ce8bb1 100755 --- a/git-hooks/sanitize-commit +++ b/git-hooks/sanitize-commit @@ -100,6 +100,7 @@ my $badurl = defined($cfg{url}); my $badlog = defined($cfg{log}); my $spell_check = !defined($cfg{spell}); my $parents = 0; +my ($inchangelog, $changelog) = (0, ""); my ($footer, $cherry) = (0, 0); my ($badauthor, $badcommitter) = (0, 0); my ($revert1, $revert2, $nonrevert) = (0, 0, 0); @@ -204,6 +205,7 @@ while (<MSG>) { } } elsif ($_ eq "") { $cherry = 0; + $inchangelog = 0; # Empty line following footer(s). $footer = 2 if ($footer == 1); } elsif ($cherry) { @@ -233,6 +235,14 @@ while (<MSG>) { $ftr = 1; } elsif (/^[A-Z][a-z]+(-[A-Za-z][a-z]+)+: /) { $ftr = 1; + } elsif (/^\[change-?log\]/i) { + $inchangelog = 1; + } + if ($inchangelog) { + if (($ftr || $footer == 1) && !defined($cfg{changelog})) { + &complain("No empty line between ChangeLog and footers", "changelog"); + } + $changelog .= "\n".$_; } if ($ftr) { if ($footer == 0) { @@ -276,6 +286,12 @@ if ($badsign) { if ($footer == 3 && !defined($cfg{footer})) { &complain("Empty lines between footers", "footer"); } +if (length($changelog) && !defined($cfg{changelog})) { + &complain("Bad form of [ChangeLog] tag", "changelog") if ($changelog !~ /^\n\[ChangeLog\]/s); + &complain("Missing space between ChangeLog tags and text", "changelog") if ($changelog !~ /\]\s[^\[]/s); + &complain("JIRA task referenced from ChangeLog", "changelog") if ($changelog =~ /\[QT[A-Z]+-\d+\]/s); + &complain("Current repository referenced from ChangeLog", "changelog") if ($changelog =~ /\[$repo\]/si); +} { local $file = 'log message'; -- GitLab