Skip to content

Commit 4920fe0

Browse files
hsbtclaude
andcommitted
Fetch PR data once to avoid duplicate API calls
Extract the PR API call into the review method and pass it to review_non_fork_branch and review_redmine_links so the same endpoint is not fetched twice per run. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c888b75 commit 4920fe0

1 file changed

Lines changed: 5 additions & 6 deletions

File tree

tool/auto_review_pr.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ def initialize(client)
6060

6161
def review(pr_number)
6262
existing_comments = fetch_existing_comments(pr_number)
63-
review_non_fork_branch(pr_number, existing_comments)
63+
pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}")
64+
review_non_fork_branch(pr_number, pr, existing_comments)
6465
review_upstream_repos(pr_number, existing_comments)
65-
review_redmine_links(pr_number, existing_comments)
66+
review_redmine_links(pr_number, pr, existing_comments)
6667
end
6768

6869
private
@@ -82,13 +83,12 @@ def post_comment(pr_number, comment)
8283
end
8384

8485
# Suggest re-filing from a fork if the PR branch is in ruby/ruby itself
85-
def review_non_fork_branch(pr_number, existing_comments)
86+
def review_non_fork_branch(pr_number, pr, existing_comments)
8687
if already_commented?(existing_comments, FORK_COMMENT_PREFIX)
8788
puts "Skipped: The PR ##{pr_number} already has a fork branch comment."
8889
return
8990
end
9091

91-
pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}")
9292
head_repo = pr.dig(:head, :repo, :full_name)
9393
if head_repo != REPO
9494
puts "Skipped: The PR ##{pr_number} is already from a fork (#{head_repo})."
@@ -124,13 +124,12 @@ def review_upstream_repos(pr_number, existing_comments)
124124
post_comment(pr_number, format_upstream_comment(upstream_repos))
125125
end
126126

127-
def review_redmine_links(pr_number, existing_comments)
127+
def review_redmine_links(pr_number, pr, existing_comments)
128128
if already_commented?(existing_comments, REDMINE_COMMENT_PREFIX)
129129
puts "Skipped: The PR ##{pr_number} already has a Redmine links comment."
130130
return
131131
end
132132

133-
pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}")
134133
text = "#{pr[:title]}\n#{pr[:body]}"
135134

136135
tickets = text.scan(REDMINE_TICKET_PATTERN).uniq

0 commit comments

Comments
 (0)