brainiac-github 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/brainiac/plugins/github/handler.rb +34 -0
- data/lib/brainiac/plugins/github/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 61c06c4b2537e0c675234514c9381b0797f96669401f108a5215f5f42a70b142
|
|
4
|
+
data.tar.gz: a7e2bfd0b3bd4ec8258131e31bd251a9d816a5cedd84742c8141449d161445ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e01941e3c2e97832df1683b438cd1632cee50f9d9afaa91538c53bf55e4e438992f7567b17066e555fab22603ce3c56a8831af9332c8d57bb0117354951ff7c3
|
|
7
|
+
data.tar.gz: 9b51d89a994a1a9b4d072375f9a39011ddba50adbce000c11e598ce820900e2d052c577614f730c20a589036e821508d32ed58ecb31940b48095686efaa7ca25
|
|
@@ -192,6 +192,14 @@ module Brainiac
|
|
|
192
192
|
LOG.info "[GitHub] PR ##{pr_number} assigned to remote agent #{work_item_agent} — skipping review dispatch"
|
|
193
193
|
return [200, { status: "ignored", reason: "work item owned by remote agent" }.to_json]
|
|
194
194
|
end
|
|
195
|
+
else
|
|
196
|
+
# No work item found — check if the PR's branch exists as a local worktree.
|
|
197
|
+
# This handles PRs opened manually (not through a card) where the worktree
|
|
198
|
+
# exists on only one machine. The machine that has the worktree should handle it.
|
|
199
|
+
unless branch_exists_locally?(repo_path, branch)
|
|
200
|
+
LOG.info "[GitHub] PR ##{pr_number} branch '#{branch}' not found locally — skipping review dispatch"
|
|
201
|
+
return [200, { status: "ignored", reason: "branch not on this machine" }.to_json]
|
|
202
|
+
end
|
|
195
203
|
end
|
|
196
204
|
|
|
197
205
|
card_key = "pr-review-#{repo_name.tr("/", "-")}-#{pr_number}"
|
|
@@ -396,6 +404,32 @@ module Brainiac
|
|
|
396
404
|
local_agent_names.include?(agent_from_bot)
|
|
397
405
|
end
|
|
398
406
|
|
|
407
|
+
# Check if a branch exists as a local worktree or local branch.
|
|
408
|
+
# Used to determine if this machine should handle a PR when there's no work item.
|
|
409
|
+
#
|
|
410
|
+
# @param repo_path [String] Path to the main repo
|
|
411
|
+
# @param branch [String] Branch name to check
|
|
412
|
+
# @return [Boolean] True if the branch exists locally
|
|
413
|
+
def branch_exists_locally?(repo_path, branch)
|
|
414
|
+
return false unless repo_path && File.directory?(repo_path)
|
|
415
|
+
|
|
416
|
+
# Check if branch exists in any local worktree
|
|
417
|
+
output, status = Open3.capture2("git", "worktree", "list", "--porcelain", chdir: repo_path)
|
|
418
|
+
return false unless status.success?
|
|
419
|
+
|
|
420
|
+
output.each_line do |line|
|
|
421
|
+
if line.start_with?("branch refs/heads/")
|
|
422
|
+
wt_branch = line.sub("branch refs/heads/", "").strip
|
|
423
|
+
return true if wt_branch == branch
|
|
424
|
+
end
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
# Also check if it's a local branch (not in a separate worktree)
|
|
428
|
+
_, status = Open3.capture2("git", "rev-parse", "--verify", "refs/heads/#{branch}",
|
|
429
|
+
chdir: repo_path, err: File::NULL)
|
|
430
|
+
status.success?
|
|
431
|
+
end
|
|
432
|
+
|
|
399
433
|
# Extract a Brainiac agent display name from a GitHub bot login.
|
|
400
434
|
# Bot logins follow the pattern "<name>-brainiac[bot]" or "<name>-brainiac".
|
|
401
435
|
# Returns the matched agent display name, or nil if not a known agent bot.
|