That's based on the fail https://gcc.gnu.org/pipermail/gccadmin/2023q3/020349.html and on the discussion on IRC.
The problem in for the cron job was that r14-3661-g084a7cf9fb2d9cb98dfbe7d91602c840ec50b002 referenced a commit that did not exist. This was temporarily fixed by Jakub, but it makes sense to detect this in the pre-commit hook. With the patch, contrib/gcc-changelog/git_email.py 0001-Revert-libstdc-Use-GLIBCXX_CHECK_LINKER_FEATURES-for.patch now prints: OK Warnings: Cannot obtain info about reverted commit '46c2e94ca66ed9991c45a6ba6204ed02869efc39' while contrib/gcc-changelog/git_check_commit.py 084a7cf9fb2d9cb98dfbe7d91602c840ec50b002 now fails with: Checking 084a7cf9fb2d9cb98dfbe7d91602c840ec50b002: FAILED ERR: Cannot find to-be-reverted commit: "46c2e94ca66ed9991c45a6ba6204ed02869efc39" (check_email.py always shows the warning, git_check_commit.py only with '-v') Notes: - I am not sure whether a sensible testcase can be added - and, hence, I have not added one. - I have run "pytest-3' but my python is too old and thus might miss some checks which newer pytest/flake8 will find. But at least it did pass here. - I have not tested the cherry-pick + commit does not exist case, which now creates a warning as I did not quickly find a testcase. Comments, remarks, suggestions, approval? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
contrib/gcc-changelog: Check whether revert-commit exists contrib/ChangeLog: * gcc-changelog/git_commit.py (GitCommit.__init__): Handle commit_to_info_hook = None; otherwise, if None, regard it as error. (to_changelog_entries): Handle commit_to_info_hook = None; if info is None, create a warning for it. * gcc-changelog/git_email.py (GitEmail.__init__): call super() with commit_to_info_hook=None instead of a lamda function. contrib/gcc-changelog/git_commit.py | 14 +++++++++----- contrib/gcc-changelog/git_email.py | 3 +-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py index 4f3131021f2..4d024026f2b 100755 --- a/contrib/gcc-changelog/git_commit.py +++ b/contrib/gcc-changelog/git_commit.py @@ -329,11 +329,13 @@ class GitCommit: self.revert_commit = m.group('hash') break if self.revert_commit: + # The following happens for get_email.py: + if not self.commit_to_info_hook: + return self.info = self.commit_to_info_hook(self.revert_commit) - - # The following happens for get_email.py: - if not self.info: - return + if not self.info: + self.errors.append(Error('Cannot find to-be-reverted commit', self.revert_commit)) + return self.check_commit_email() @@ -796,12 +798,14 @@ class GitCommit: orig_date = self.original_info.date current_timestamp = orig_date.strftime(DATE_FORMAT) elif self.cherry_pick_commit: - info = self.commit_to_info_hook(self.cherry_pick_commit) + info = (self.commit_to_info_hook + and self.commit_to_info_hook(self.cherry_pick_commit)) # it can happen that it is a cherry-pick for a different # repository if info: timestamp = info.date.strftime(DATE_FORMAT) else: + self.warnings.append(f"Cherry-picked commit not found: '{self.cherry_pick_commit}'") timestamp = current_timestamp elif not timestamp or use_commit_ts: timestamp = current_timestamp diff --git a/contrib/gcc-changelog/git_email.py b/contrib/gcc-changelog/git_email.py index 49f41f2ec99..93808dfabb6 100755 --- a/contrib/gcc-changelog/git_email.py +++ b/contrib/gcc-changelog/git_email.py @@ -89,8 +89,7 @@ class GitEmail(GitCommit): t = 'M' modified_files.append((target if t != 'D' else source, t)) git_info = GitInfo(None, date, author, message, modified_files) - super().__init__(git_info, - commit_to_info_hook=lambda x: None) + super().__init__(git_info, commit_to_info_hook=None) def show_help():