diff --git a/lib/config/definitions.js b/lib/config/definitions.js index 7f7865dfbd2a19be67ed7bd6bfb0d76054f18241..a8537639d4b2a4257266a5b6191f8490a1b3b83f 100644 --- a/lib/config/definitions.js +++ b/lib/config/definitions.js @@ -911,6 +911,12 @@ const options = [ type: 'integer', default: 0, // no limit }, + { + name: 'bbUseDefaultReviewers', + description: 'Use the default reviewers (Bitbucket server only).', + type: 'boolean', + default: true, + }, // Automatic merging { name: 'automerge', diff --git a/lib/platform/bitbucket-server/index.js b/lib/platform/bitbucket-server/index.js index 1a15af6f827649306df47e228acbaaab2a645806..53e812098e6cfcb1a6be2097ea0b933d2d555a06 100644 --- a/lib/platform/bitbucket-server/index.js +++ b/lib/platform/bitbucket-server/index.js @@ -97,6 +97,7 @@ async function initRepo({ gitPrivateKey, gitFs, localDir, + bbUseDefaultReviewers, }) { logger.debug( `initRepo("${JSON.stringify( @@ -122,6 +123,12 @@ async function initRepo({ const [projectKey, repositorySlug] = repository.split('/'); config = { projectKey, repositorySlug, gitPrivateKey }; + /* istanbul ignore else */ + if (bbUseDefaultReviewers !== false) { + logger.debug('Enable bitbucket default reviewer'); + config.bbUseDefaultReviewers = true; + } + // Always gitFs const { host, pathname } = url.parse(opts.endpoint); const gitUrl = GitStorage.getUrl({ @@ -444,15 +451,40 @@ function addAssignees(iid, assignees) { // BB Server doesnt support assignees } -async function addReviewers(iid, reviewers) { - logger.debug(`Adding reviewers ${reviewers} to #${iid}`); - for (const name of reviewers) { - await api.post( +async function addReviewers(prNo, reviewers) { + logger.debug(`Adding reviewers ${reviewers} to #${prNo}`); + + try { + const pr = await getPr(prNo); + if (!pr) { + throw Object.assign(new Error('not-found'), { statusCode: 404 }); + } + + const reviewersSet = new Set([...pr.reviewers, ...reviewers]); + + await api.put( `./rest/api/1.0/projects/${config.projectKey}/repos/${ config.repositorySlug - }/pull-requests/${iid}/participants`, - { body: { user: { name }, role: 'REVIEWER' } } + }/pull-requests/${prNo}`, + { + body: { + title: pr.title, + description: pr.description, + version: pr.version, + reviewers: Array.from(reviewersSet).map(name => ({ user: { name } })), + }, + } ); + await getPr(prNo, true); + } catch (err) { + if (err.statusCode === 404) { + throw new Error('not-found'); + } else if (err.statusCode === 409) { + throw new Error('repository-changed'); + } else { + logger.fatal({ err }, `Failed to add reviewers ${reviewers} to #${prNo}`); + throw err; + } } } @@ -651,6 +683,25 @@ async function createPr( ) { logger.debug(`createPr(${branchName}, title=${title})`); const base = useDefaultBranch ? config.defaultBranch : config.baseBranch; + let reviewers = []; + + /* istanbul ignore else */ + if (config.bbUseDefaultReviewers) { + logger.debug(`fetching default reviewers`); + const { id } = (await api.get( + `./rest/api/1.0/projects/${config.projectKey}/repos/${ + config.repositorySlug + }` + )).body; + + const defReviewers = (await api.get( + `./rest/default-reviewers/1.0/projects/${config.projectKey}/repos/${ + config.repositorySlug + }/reviewers?sourceRefId=refs/heads/${branchName}&targetRefId=refs/heads/${base}&sourceRepoId=${id}&targetRepoId=${id}` + )).body; + + reviewers = defReviewers.map(u => ({ user: { name: u.name } })); + } const body = { title, @@ -661,6 +712,7 @@ async function createPr( toRef: { id: `refs/heads/${base}`, }, + reviewers, }; let prInfoRes; try { diff --git a/renovate-schema.json b/renovate-schema.json index b869e7581f8c1f1d1a6e4649eb3a008a51ba155a..d2a96a7b779e3d2b551248c62ed04d0241c9fdf2 100644 --- a/renovate-schema.json +++ b/renovate-schema.json @@ -599,6 +599,11 @@ "type": "integer", "default": 0 }, + "bbUseDefaultReviewers": { + "description": "Use the default reviewers (Bitbucket server only).", + "type": "boolean", + "default": true + }, "automerge": { "description": "Whether to automerge branches/PRs automatically, without human intervention", "type": "boolean", diff --git a/test/platform/bitbucket-server/__snapshots__/index.spec.js.snap b/test/platform/bitbucket-server/__snapshots__/index.spec.js.snap index 79979eedcf13727190f3d39a89f47f623f3c3c67..3b791e3d25cb5e8387c260200363bd272efa7ee1 100644 --- a/test/platform/bitbucket-server/__snapshots__/index.spec.js.snap +++ b/test/platform/bitbucket-server/__snapshots__/index.spec.js.snap @@ -3,13 +3,217 @@ exports[`platform/bitbucket-server endpoint with no path addReviewers sends the reviewer name as a reviewer 1`] = ` Array [ Array [ - "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/participants", + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": false, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers sends the reviewer name as a reviewer 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", Object { "body": Object { - "role": "REVIEWER", - "user": Object { - "name": "name", - }, + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, + }, + }, + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers sends the reviewer name as a reviewer 3`] = `Array []`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers throws 1`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers throws 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "body": Object { + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, + }, + }, + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers throws not-found 1`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/4", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers throws not-found 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "body": Object { + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, + }, + }, + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers throws repository-changed 1`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with no path addReviewers throws repository-changed 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "body": Object { + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, }, }, ], @@ -39,6 +243,12 @@ Array [ Array [ "./rest/api/1.0/projects/SOME/repos/repo/branches/default", ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/default-reviewers/1.0/projects/SOME/repos/repo/reviewers?sourceRefId=refs/heads/branch&targetRefId=refs/heads/master&sourceRepoId=13076&targetRepoId=13076", + ], ] `; @@ -52,6 +262,13 @@ Array [ "fromRef": Object { "id": "refs/heads/branch", }, + "reviewers": Array [ + Object { + "user": Object { + "name": "jcitizen", + }, + }, + ], "title": "title", "toRef": Object { "id": "refs/heads/master", @@ -70,6 +287,12 @@ Array [ Array [ "./rest/api/1.0/projects/SOME/repos/repo/branches/default", ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/default-reviewers/1.0/projects/SOME/repos/repo/reviewers?sourceRefId=refs/heads/branch&targetRefId=refs/heads/master&sourceRepoId=13076&targetRepoId=13076", + ], ] `; @@ -83,6 +306,13 @@ Array [ "fromRef": Object { "id": "refs/heads/branch", }, + "reviewers": Array [ + Object { + "user": Object { + "name": "jcitizen", + }, + }, + ], "title": "title", "toRef": Object { "id": "refs/heads/master", @@ -1139,13 +1369,217 @@ Array [ exports[`platform/bitbucket-server endpoint with path addReviewers sends the reviewer name as a reviewer 1`] = ` Array [ Array [ - "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/participants", + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": false, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers sends the reviewer name as a reviewer 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", Object { "body": Object { - "role": "REVIEWER", - "user": Object { - "name": "name", - }, + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, + }, + }, + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers sends the reviewer name as a reviewer 3`] = `Array []`; + +exports[`platform/bitbucket-server endpoint with path addReviewers throws 1`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers throws 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "body": Object { + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, + }, + }, + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers throws not-found 1`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/4", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers throws not-found 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "body": Object { + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, + }, + }, + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers throws repository-changed 1`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/branches/default", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "useCache": true, + }, + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/merge", + ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5/commits?withCounts=true", + ], +] +`; + +exports[`platform/bitbucket-server endpoint with path addReviewers throws repository-changed 2`] = ` +Array [ + Array [ + "./rest/api/1.0/projects/SOME/repos/repo/pull-requests/5", + Object { + "body": Object { + "description": undefined, + "reviewers": Array [ + Object { + "user": Object { + "name": "userName2", + }, + }, + Object { + "user": Object { + "name": "name", + }, + }, + ], + "title": "title", + "version": 1, }, }, ], @@ -1175,6 +1609,12 @@ Array [ Array [ "./rest/api/1.0/projects/SOME/repos/repo/branches/default", ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/default-reviewers/1.0/projects/SOME/repos/repo/reviewers?sourceRefId=refs/heads/branch&targetRefId=refs/heads/master&sourceRepoId=13076&targetRepoId=13076", + ], ] `; @@ -1188,6 +1628,13 @@ Array [ "fromRef": Object { "id": "refs/heads/branch", }, + "reviewers": Array [ + Object { + "user": Object { + "name": "jcitizen", + }, + }, + ], "title": "title", "toRef": Object { "id": "refs/heads/master", @@ -1206,6 +1653,12 @@ Array [ Array [ "./rest/api/1.0/projects/SOME/repos/repo/branches/default", ], + Array [ + "./rest/api/1.0/projects/SOME/repos/repo", + ], + Array [ + "./rest/default-reviewers/1.0/projects/SOME/repos/repo/reviewers?sourceRefId=refs/heads/branch&targetRefId=refs/heads/master&sourceRepoId=13076&targetRepoId=13076", + ], ] `; @@ -1219,6 +1672,13 @@ Array [ "fromRef": Object { "id": "refs/heads/branch", }, + "reviewers": Array [ + Object { + "user": Object { + "name": "jcitizen", + }, + }, + ], "title": "title", "toRef": Object { "id": "refs/heads/master", diff --git a/test/platform/bitbucket-server/_fixtures/responses.js b/test/platform/bitbucket-server/_fixtures/responses.js index 22400d45c3dd972efd838085aa320e136ad0acd2..3886c36f6fa5ffb9b66f95b41b94483789e9faa5 100644 --- a/test/platform/bitbucket-server/_fixtures/responses.js +++ b/test/platform/bitbucket-server/_fixtures/responses.js @@ -569,6 +569,9 @@ function generateServerResponses(endpoint) { [`${endpoint}/rest/build-status/1.0/commits/0d9c7726c3d628b7e28af234595cfd20febdbf8e`]: { POST: {}, }, + [`${endpoint}/rest/default-reviewers/1.0/projects/SOME/repos/repo/reviewers?sourceRefId=refs/heads/branch&targetRefId=refs/heads/master&sourceRepoId=13076&targetRepoId=13076`]: { + GET: [{ name: 'jcitizen' }], + }, }; } diff --git a/test/platform/bitbucket-server/index.spec.js b/test/platform/bitbucket-server/index.spec.js index 10880bfffaaf093b723825d60308b697ceee4165..952039f46e00f926037206d155e0e7c90cc6b9ad 100644 --- a/test/platform/bitbucket-server/index.spec.js +++ b/test/platform/bitbucket-server/index.spec.js @@ -211,11 +211,67 @@ describe('platform/bitbucket-server', () => { }); it('sends the reviewer name as a reviewer', async () => { - expect.assertions(1); + expect.assertions(3); await initRepo(); await bitbucket.addReviewers(5, ['name']); + expect(api.get.mock.calls).toMatchSnapshot(); + expect(api.put.mock.calls).toMatchSnapshot(); expect(api.post.mock.calls).toMatchSnapshot(); }); + + it('throws not-found', async () => { + expect.assertions(5); + await initRepo(); + + await expect(bitbucket.addReviewers(null, ['name'])).rejects.toThrow( + 'not-found' + ); + + await expect(bitbucket.addReviewers(4, ['name'])).rejects.toThrow( + 'not-found' + ); + api.put.mockReturnValueOnce( + Promise.reject({ + statusCode: 404, + }) + ); + await expect(bitbucket.addReviewers(5, ['name'])).rejects.toThrow( + 'not-found' + ); + + expect(api.get.mock.calls).toMatchSnapshot(); + expect(api.put.mock.calls).toMatchSnapshot(); + }); + + it('throws repository-changed', async () => { + expect.assertions(3); + await initRepo(); + api.put.mockReturnValueOnce( + Promise.reject({ + statusCode: 409, + }) + ); + await expect(bitbucket.addReviewers(5, ['name'])).rejects.toThrow( + 'repository-changed' + ); + expect(api.get.mock.calls).toMatchSnapshot(); + expect(api.put.mock.calls).toMatchSnapshot(); + }); + + it('throws', async () => { + expect.assertions(3); + await initRepo(); + api.put.mockReturnValueOnce( + Promise.reject({ + statusCode: 405, + }) + ); + await expect(bitbucket.addReviewers(5, ['name'])).rejects.toEqual({ + statusCode: 405, + }); + expect(api.get.mock.calls).toMatchSnapshot(); + expect(api.put.mock.calls).toMatchSnapshot(); + }); }); describe('deleteLAbel()', () => { diff --git a/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap b/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap index f0875d761143d53dfcc97e43268866ac9f223604..fbbd2eef18f80ecc64d9ca12385d39b5ee95d1ee 100644 --- a/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap +++ b/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap @@ -9,6 +9,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -117,6 +118,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -225,6 +227,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -333,6 +336,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -441,6 +445,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -549,6 +554,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -657,6 +663,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", @@ -765,6 +772,7 @@ Array [ "automergeType": "pr", "azureWorkItemId": 0, "baseDir": null, + "bbUseDefaultReviewers": true, "binarySource": "bundled", "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}", "branchPrefix": "renovate/", diff --git a/website/docs/configuration-options.md b/website/docs/configuration-options.md index 0a14583253256ca9b239b4e720f15560541a4b0b..eb609c1ce3baa0b811821f1e219d6829ecaea353 100644 --- a/website/docs/configuration-options.md +++ b/website/docs/configuration-options.md @@ -91,6 +91,10 @@ It's possible to add this setting into the `renovate.json` file as part of the " ## bazel +## bbUseDefaultReviewers + +Apply the default reviewers rules to PR's (Bitbucket server only). + ## branchName It's recommended to use our default templates, but you may override branch name if you really wish. It's recommended to still keep `depName` and `newMajor` in the branch name to make sure all other Renovate features can still work.