Skip to content

feat(worker): Add sync all option for bitbucket server#927

Merged
brendan-kellam merged 8 commits intosourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos
Feb 25, 2026
Merged

feat(worker): Add sync all option for bitbucket server#927
brendan-kellam merged 8 commits intosourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin
Copy link
Contributor

@svedin svedin commented Feb 24, 2026

Fixes #926

Implementation of an option to sync all repositories for bitbucket server

Summary by CodeRabbit

  • New Features

    • Added a "Sync all repos" option for Bitbucket Server connections to sync all repositories visible to the provided token (ignored for Bitbucket Cloud).
  • Documentation

    • Added docs, examples, and a JSON sample showing how to enable the "Sync all repos" option and where it appears in the Bitbucket connection docs.
  • Changelog

    • Documented the new Bitbucket Server "sync all repositories" capability.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 24, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between aaf18a2 and 8a77aa9.

📒 Files selected for processing (1)
  • CHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • CHANGELOG.md

Walkthrough

Adds an optional boolean all to BitbucketConnectionConfig (schemas, types, docs) and backend handling to fetch all Bitbucket Server repositories when all: true; for Cloud the option is ignored and a warning is recorded. (50 words)

Changes

Cohort / File(s) Summary
Documentation
docs/docs/connections/bitbucket-data-center.mdx
Inserted a "Sync all repos" Accordion describing the all option, token requirement for private repos, and a JSON example ("all": true).
Docs: Schema Snippets
docs/snippets/schemas/v3/bitbucket.schema.mdx, docs/snippets/schemas/v3/connection.schema.mdx, docs/snippets/schemas/v3/index.schema.mdx
Added all boolean property to BitbucketConnectionConfig docs with default false and a note that it's ignored for deploymentType: cloud.
Backend
packages/backend/src/bitbucket.ts
When config.all === true and deployment is Server, calls new serverGetAllRepos to paginate /rest/api/1.0/repos, aggregates repositories and warnings; if deployment is Cloud, logs and returns a warning that the option is ignored.
Schemas (TS / JSON)
packages/schemas/src/v3/*.schema.ts, packages/schemas/src/v3/index.schema.ts, schemas/v3/bitbucket.json
Added all boolean property (default false) to the BitbucketConnectionConfig JSON schemas and exported schema index.
Types (TS)
packages/schemas/src/v3/*.type.ts, packages/schemas/src/v3/index.type.ts
Added optional all?: boolean to BitbucketConnectionConfig interfaces with JSDoc stating it’s ignored for Cloud deployments.
Changelog
CHANGELOG.md
Added entry: "Added Bitbucket Server (Data Center) sync all repositories support."

Sequence Diagram

sequenceDiagram
    participant User as User/Config
    participant Backend as Backend
    participant Bitbucket as Bitbucket Server API

    User->>Backend: Submit connection config (`all: true`)
    Backend->>Backend: Inspect `deploymentType`
    alt deploymentType == "server"
        Backend->>Bitbucket: GET /rest/api/1.0/repos?page=0
        Bitbucket-->>Backend: repos batch + pagination info
        loop while more pages
            Backend->>Bitbucket: GET /rest/api/1.0/repos?page=n
            Bitbucket-->>Backend: repos batch
        end
        Backend->>Backend: Aggregate repos + warnings
        Backend-->>User: Return collected repos
    else deploymentType == "cloud"
        Backend->>Backend: Record/log warning (option ignored)
        Backend-->>User: Return result with warning
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Add Bitbucket support #275: Modifies Bitbucket integration and pagination behavior; closely related code-level changes that this PR extends.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a sync all option for Bitbucket Server, which is the core feature in this PR.
Linked Issues check ✅ Passed The PR fully addresses issue #926 by implementing sync all repositories functionality for Bitbucket Server with schema updates, backend implementation, and documentation.
Out of Scope Changes check ✅ Passed All changes are directly related to implementing the sync all option for Bitbucket Server: schema definitions, backend logic, documentation, and changelog entry.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
packages/backend/src/bitbucket.ts (1)

77-87: Consider avoiding redundant repo fetches when all is enabled.

If all is intended to be a full sync, the later workspaces/projects/repos branches still fire and can cause duplicate entries or extra API calls. Consider short‑circuiting those selectors or de‑duplicating before filtering.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/backend/src/bitbucket.ts` around lines 77 - 87, When config.all ===
true we call serverGetAllRepos and still fall through to the later
workspaces/projects/repos branches causing duplicate fetches; short‑circuit
after handling the all:true case by returning or skipping the subsequent
selectors (or deduplicate before applying filters). Update the code around the
allRepos/allWarnings handling (the config.all check and serverGetAllRepos call,
and the subsequent workspaces/projects/repos branches) to either: 1) immediately
skip/return after concatenating repos/warnings when config.all is true, or 2)
perform a deduplication step on allRepos (e.g., by repo id or slug) before any
further filtering to prevent duplicate entries and extra API calls.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@packages/backend/src/bitbucket.ts`:
- Around line 77-87: When config.all === true we call serverGetAllRepos and
still fall through to the later workspaces/projects/repos branches causing
duplicate fetches; short‑circuit after handling the all:true case by returning
or skipping the subsequent selectors (or deduplicate before applying filters).
Update the code around the allRepos/allWarnings handling (the config.all check
and serverGetAllRepos call, and the subsequent workspaces/projects/repos
branches) to either: 1) immediately skip/return after concatenating
repos/warnings when config.all is true, or 2) perform a deduplication step on
allRepos (e.g., by repo id or slug) before any further filtering to prevent
duplicate entries and extra API calls.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8d171f6 and a467bb9.

📒 Files selected for processing (12)
  • docs/docs/connections/bitbucket-data-center.mdx
  • docs/snippets/schemas/v3/bitbucket.schema.mdx
  • docs/snippets/schemas/v3/connection.schema.mdx
  • docs/snippets/schemas/v3/index.schema.mdx
  • packages/backend/src/bitbucket.ts
  • packages/schemas/src/v3/bitbucket.schema.ts
  • packages/schemas/src/v3/bitbucket.type.ts
  • packages/schemas/src/v3/connection.schema.ts
  • packages/schemas/src/v3/connection.type.ts
  • packages/schemas/src/v3/index.schema.ts
  • packages/schemas/src/v3/index.type.ts
  • schemas/v3/bitbucket.json

@brendan-kellam brendan-kellam changed the title Svedin/bitbucket server sync all repos feat(worker): Add sync all option for bitbucket server Feb 24, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
docs/snippets/schemas/v3/bitbucket.schema.mdx (1)

70-74: Consider schema-level enforcement for all + cloud combination.

Currently, all: true with deploymentType: "cloud" passes schema validation silently. The only signal to the user is the prose description. Adding a schema constraint (e.g., via an additional if/then) would surface a validation error at config parse time rather than silently ignoring the option.

♻️ Suggested addition to the existing if/then/else block
  "if": {
    "properties": {
      "deploymentType": {
        "const": "server"
      }
    }
  },
  "then": {
    "required": [
      "url"
    ]
  },
+ "else": {
+   "properties": {
+     "all": {
+       "const": false,
+       "description": "The `all` option is only supported for `deploymentType: server`."
+     }
+   }
+ },
  "additionalProperties": false

Note: since this is an auto-generated file, the change should be applied to the source schema (e.g., packages/schemas/src/v3/bitbucket.schema.ts and schemas/v3/bitbucket.json) and regenerated.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/snippets/schemas/v3/bitbucket.schema.mdx` around lines 70 - 74, Add a
JSON Schema-level conditional that rejects the combination of "all": true
together with deploymentType: "cloud": insert an if that matches deploymentType
equal to "cloud" and all equal to true, and in the then branch make the schema
invalid for that combination (e.g., using a not or a then that forces an
impossible constraint for "all") so that validation fails instead of silently
ignoring the option; apply this change to the source schema and regenerate the
generated JSON/MDX artifacts.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@docs/snippets/schemas/v3/bitbucket.schema.mdx`:
- Around line 70-74: Add a JSON Schema-level conditional that rejects the
combination of "all": true together with deploymentType: "cloud": insert an if
that matches deploymentType equal to "cloud" and all equal to true, and in the
then branch make the schema invalid for that combination (e.g., using a not or a
then that forces an impossible constraint for "all") so that validation fails
instead of silently ignoring the option; apply this change to the source schema
and regenerate the generated JSON/MDX artifacts.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a467bb9 and fe35ef8.

📒 Files selected for processing (12)
  • docs/docs/connections/bitbucket-data-center.mdx
  • docs/snippets/schemas/v3/bitbucket.schema.mdx
  • docs/snippets/schemas/v3/connection.schema.mdx
  • docs/snippets/schemas/v3/index.schema.mdx
  • packages/backend/src/bitbucket.ts
  • packages/schemas/src/v3/bitbucket.schema.ts
  • packages/schemas/src/v3/bitbucket.type.ts
  • packages/schemas/src/v3/connection.schema.ts
  • packages/schemas/src/v3/connection.type.ts
  • packages/schemas/src/v3/index.schema.ts
  • packages/schemas/src/v3/index.type.ts
  • schemas/v3/bitbucket.json
🚧 Files skipped from review as they are similar to previous changes (10)
  • packages/schemas/src/v3/bitbucket.type.ts
  • packages/schemas/src/v3/connection.type.ts
  • packages/schemas/src/v3/index.type.ts
  • packages/schemas/src/v3/index.schema.ts
  • packages/backend/src/bitbucket.ts
  • packages/schemas/src/v3/connection.schema.ts
  • docs/snippets/schemas/v3/index.schema.mdx
  • packages/schemas/src/v3/bitbucket.schema.ts
  • docs/snippets/schemas/v3/connection.schema.mdx
  • schemas/v3/bitbucket.json

@brendan-kellam
Copy link
Contributor

@claude add a changelog entry

@claude
Copy link

claude bot commented Feb 25, 2026

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin
Copy link
Contributor Author

svedin commented Feb 25, 2026

I have added the changelog

Copy link
Contributor

@brendan-kellam brendan-kellam left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM thx!

@brendan-kellam brendan-kellam merged commit da5317b into sourcebot-dev:main Feb 25, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Sync all visible repositories in Bitbucket Server

3 participants