Skip to content

Comments

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

Open
svedin wants to merge 7 commits intosourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos
Open

feat(worker): Add sync all option for bitbucket server#927
svedin wants to merge 7 commits intosourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin
Copy link

@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

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 e0cac55 and aaf18a2.

📒 Files selected for processing (1)
  • CHANGELOG.md

Walkthrough

Adds an optional all boolean to BitbucketConnectionConfig (schemas, types, docs) and backend support to fetch all Bitbucket Server repositories when all: true; Cloud deployment logs/returns a warning and ignores the option. (50 words)

Changes

Cohort / File(s) Summary
Documentation
docs/docs/connections/bitbucket-data-center.mdx
Inserted a "Sync all repos" Accordion describing all option, token requirement for private repos, and 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 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 repos and warnings; logs/records a warning if used with Cloud.
Schemas (TS)
packages/schemas/src/v3/*.schema.ts, schemas/v3/bitbucket.json
Added all boolean property (default false) to BitbucketConnectionConfig JSON schemas and exported schema index.
Types (TS)
packages/schemas/src/v3/*.type.ts
Added optional all?: boolean to BitbucketConnectionConfig interfaces with JSDoc noting it’s ignored for Cloud.
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: Extends Bitbucket integration; related code-level work that this PR builds on (server support and pagination).

Suggested labels

sourcebot-team

Suggested reviewers

  • msukkari
🚥 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 describes the main change: adding a sync all option for Bitbucket Server, which is the core feature implemented across multiple files.
Linked Issues check ✅ Passed The PR successfully implements the requested feature from issue #926: adds sync all repositories capability for Bitbucket Server via a new config.all option in multiple schema files and backend logic.
Out of Scope Changes check ✅ Passed All changes are directly related to implementing the sync all repositories feature for Bitbucket Server; no out-of-scope modifications detected.

✏️ 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
Author

svedin commented Feb 25, 2026

I have added the changelog

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