Repository navigation
Keep Git identity probes from blocking SSH host reconversion - #26578
Conversation
28d5cbe to
6476aad
Compare
|
Important Review skippedReview was skipped as selected files did not have any reviewable changes. ⚙️ Run configuration
📥 CommitsReviewing files that changed from the base of the PR and between 540955533dbaf62d999dcb634856fb77d7920094 and ba37006. You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (2)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review. 📝 WalkthroughWalkthroughRepository migration row selection now accepts an optional comparison function. Migration catalog preparation uses a repository comparison that ignores cached Git identity and ignores icons when both repositories use automatic GitHub icons. Tests cover identity retention after restart, stale incoming identities, automatic avatar retention, and conflicts when repository configuration or an uploaded icon differs. Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to Reconnecting to a converted SSH host should no longer fail repository import because of a cached Git identity update, while real configuration differences still conflict. No merge-blocking risk is evident. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)✅ Passed checks (4 passed)✨ Finishing Touches 💡 1📝 Generate docstrings 💡
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
b6d9b5d to
5409555
Compare
5409555 to
ba37006
Compare
ELI5
After converting an SSH host, stopping its server and reconnecting could leave it in relay mode. A routine Git check had changed a cached value, and Orca mistook that for a conflicting repository. The same host can now convert again while keeping the server’s current Git result.
What Changed
Repository imports use the existing catalog merge with a comparison that excludes
gitRemoteIdentity, which the execution host resolves from Git. Matching rows stay in place; names, paths, settings, ownership, and all other fields still have to match. Other catalog types keep their exact comparison.Added persistence regressions: three cache cases (restart with a resolved or no-remote identity, and a stale incoming identity) fail before the fix; three configuration-conflict guards stay enforced.
The earlier Docker Stop/reconnect end-to-end spec and its CI lane wiring were dropped when rebasing onto
main: the unit regressions cover the merge rule directly, and the Stop flow is being reworked separately.Why
Replacing an existing row with the retained source would overwrite the server’s newer cache. Comparing repository identity only would also hide genuine configuration conflicts. Excluding this one computed field preserves the server row and keeps those conflicts visible.
Linked Issue
Found while verifying SSH → Remote consolidation in #26483.
Visual Proof
Before: reconnect reports
orcad_migration_repository_id_conflictand no managed server returns. After: reconnect reports managed, and reopening Settings shows the connected server. Both runs use a hidden macOS Electron client and an owned Linux Docker SSH host.migration-git-cache-final-runtime-red.log
migration-git-cache-final-runtime-green.log
Testing
pnpm tc,pnpm lint, affected oxlint, changed-code quality, Electron build, and Node server build pass.Review
Checked that matching imports retain existing objects, real configuration conflicts refuse before publication, other catalog comparisons stay exact, and request/response shapes stay compatible with older peers.
Agent skill upstream boundary
Notes
Rebased onto
main(Phase 3.5 has merged). Existing hosts receive the fix when their managed server updates. Repository configuration differences still refuse import to preserve the destination’s state.Remote Settings can keep its old list after a reconnect until reopened; that separate rendered finding remains under investigation. A document-list error toast during cutover also remains separate from this cache fix.
Checklist