diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index 28180b9..265767e 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -495,6 +495,9 @@ def solve_issues_in_repository( logger.info('No issues found for %s', repository_config.repo) return + # batch up PRs to handle comments after all issues are resolved + jobs: list[tuple[str, str, str]] = [] + for issue in issues: issue_url = issue.get('web_url') issue_number = issue.get('number') @@ -516,15 +519,8 @@ def solve_issues_in_repository( client, ) if issue_resolution.success: - handle_pr_comments( - repository_config, - issue_resolution.pull_request_id, - branch_name, - Path(repository_path), - client, - seen_issues_db, - issue_url, - ) + # defer comment handling until after all issues complete + jobs.append((issue_url, issue_resolution.pull_request_id, branch_name)) seen_issues_db.mark_as_seen(issue_url, str(issue_number)) seen_issues_db.update_pr_info( issue_url, @@ -538,6 +534,21 @@ def solve_issues_in_repository( ) + # once all new issues are done, process any PR comments in batch + for issue_url, pr_id, branch_name in jobs: + with tempfile.TemporaryDirectory() as repository_path: + run_cmd(['git', 'clone', repository_config.repo_url(), repository_path]) + run_cmd(['git', 'checkout', branch_name], repository_path) + handle_pr_comments( + repository_config, + pr_id, + branch_name, + Path(repository_path), + client, + seen_issues_db, + issue_url, + ) + def handle_pr_comments( repository_config, pr_number,