> Quite interesting idea! Are you willing to prepare a patch for it?
This works.
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index bd8c1ff7af2..58aad8b7f26 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -157,6 +157,7 @@ author_line_regex = \
additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.* <.*>)')
changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?')
pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?([0-9]+)$')
+title_pr_regex = re.compile(r' \[PR ?[0-9]+]$')
dr_regex = re.compile(r'\tDR ([0-9]+)$')
star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
end_of_location_regex = re.compile(r'[\[<(:]')
@@ -343,6 +344,7 @@ class GitCommit:
self.check_for_broken_parentheses()
self.deduce_changelog_locations()
self.check_file_patterns()
+ self.check_pr_consistent()
if not self.errors:
self.check_mentioned_files()
self.check_for_correct_changelog()
@@ -568,6 +570,17 @@ class GitCommit:
msg = 'unsupported wildcard prefix'
self.errors.append(Error(msg, name))
+ def check_pr_consistent(self):
+ """Check that a 'PR component/nnn' line is present if the first
+ line ends with a bug number like [PRnnn] or [PR nnn]."""
+ m = title_pr_regex.search(self.info.lines[0])
+ if m:
+ for line in self.changes:
+ if pr_regex.match(line):
+ return
+ msg = 'summary contains "%s" but no PR in changelog'
+ self.errors.append(Error(msg % m.group()))
+
def check_for_empty_description(self):
for entry in self.changelog_entries:
for i, line in enumerate(entry.lines):