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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

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

Merged
brendan-kellam merged 8 commits into
sourcebot-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 into
sourcebot-dev:mainfrom
svedin:svedin/bitbucket-server-sync-all-repos

Conversation

@svedin

@svedinsvedin commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

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 nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe 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✅ PassedThe 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✅ PassedAll 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.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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-kellambrendan-kellam changed the title Svedin/bitbucket server sync all reposfeat(worker): Add sync all option for bitbucket serverFeb 24, 2026

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor

@claude add a changelog entry

@claude

claudeBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Claude Code is working…

I'll analyze this and get back to you.

View job run

@svedin

Copy link
Copy Markdown
ContributorAuthor

I have added the changelog

@brendan-kellambrendan-kellam left a comment

Copy link
Copy Markdown
Contributor

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:mainFeb 25, 2026
7 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Feb 25, 2026
Sign up for freeto 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

@svedin@brendan-kellam@christiansvedin