issues = self.R.issue.filter(**filters)
processed_issue_ids = set()
+ is_backport_pr = False
+
if len(issues) > 0:
log.info(f"Found {len(issues)} linked issue(s). Applying transformations.")
for issue in issues:
+ if issue.tracker.id == REDMINE_TRACKER_ID_BACKPORT:
+ is_backport_pr = True
self._process_issue_transformations(issue)
processed_issue_ids.add(issue.id)
# Still, check commit logs.
fixes_regex = re.compile(r"Fixes: https://tracker.ceph.com/issues/(\d+)", re.MULTILINE)
commit_fixes = set(fixes_regex.findall(commit.message))
for tracker_id in commit_fixes:
- log.info(f"Commit {commit.hexsha} claims to fix https://tracker.ceph.com/issues/{tracker_id}")
- found_tracker_ids.add(int(tracker_id))
+ try:
+ t_id = int(tracker_id)
+
+ # If this is a backport PR, ignore "Fixes:" tags pointing to main trackers
+ if is_backport_pr:
+ referenced_issue = self.R.issue.get(t_id)
+ if referenced_issue.tracker.id != REDMINE_TRACKER_ID_BACKPORT:
+ log.info(f"Ignoring 'Fixes:' tag for main tracker #{t_id} in backport PR context.")
+ continue
+
+ log.info(f"Commit {commit.hexsha} claims to fix https://tracker.ceph.com/issues/{t_id}")
+ found_tracker_ids.add(t_id)
+ except Exception as e:
+ log.warning(f"Could not verify tracker #{tracker_id}: {e}")
+ # Fallback to adding it if verification fails just in case
+ found_tracker_ids.add(int(tracker_id))
except git.exc.GitCommandError as e:
log.error(f"Git command failed for commit SHA '{merge_commit_sha}': {e}. Ensure the commit exists in the local repository.")
return