From d2aac97b1101700c63b4dcbf056bf31b1253dbeb Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 20 Jan 2021 10:33:50 -0800 Subject: [PATCH] feat(sync-repo-settings): add a delete head branch option (#1291) --- packages/sync-repo-settings/README.md | 2 ++ packages/sync-repo-settings/src/schema.json | 4 ++++ packages/sync-repo-settings/src/sync-repo-settings.ts | 2 ++ packages/sync-repo-settings/src/types.ts | 4 ++++ packages/sync-repo-settings/test/test.ts | 1 + 5 files changed, 13 insertions(+) diff --git a/packages/sync-repo-settings/README.md b/packages/sync-repo-settings/README.md index e035f39b020..5eb49e77c17 100644 --- a/packages/sync-repo-settings/README.md +++ b/packages/sync-repo-settings/README.md @@ -35,6 +35,8 @@ branchProtectionRules: requiresCodeOwnerReviews: true # Require up to date branches requiresStrictStatusChecks: true + # Automatically delete head branches after merging PRs. Defaults to `true`. + deleteBranchOnMerge: true # List of required status check contexts that must pass for commits to be accepted to matching branches. requiredStatusCheckContexts: - check1 diff --git a/packages/sync-repo-settings/src/schema.json b/packages/sync-repo-settings/src/schema.json index b066870f53e..8d67724b032 100644 --- a/packages/sync-repo-settings/src/schema.json +++ b/packages/sync-repo-settings/src/schema.json @@ -16,6 +16,10 @@ "description": "Whether or not PRs are merged with a merge commit on this repository.", "type": "boolean" }, + "deleteBranchOnMerge": { + "description": "Either true to allow automatically deleting head branches when pull requests are merged, or false to prevent automatic deletion.", + "type": "boolean" + }, "branchProtectionRules": { "description": "Branch protection rules", "type": "array", diff --git a/packages/sync-repo-settings/src/sync-repo-settings.ts b/packages/sync-repo-settings/src/sync-repo-settings.ts index cb3b8aacffe..2d3a7f39a71 100644 --- a/packages/sync-repo-settings/src/sync-repo-settings.ts +++ b/packages/sync-repo-settings/src/sync-repo-settings.ts @@ -60,6 +60,7 @@ const repoConfigDefaults: RepoConfig = deepFreeze({ mergeCommitAllowed: false, squashMergeAllowed: true, rebaseMergeAllowed: true, + deleteBranchOnMerge: true, }); const branchProtectionDefaults = deepFreeze({ @@ -399,6 +400,7 @@ async function updateRepoOptions( allow_merge_commit: config.mergeCommitAllowed, allow_rebase_merge: config.rebaseMergeAllowed, allow_squash_merge: config.squashMergeAllowed, + delete_branch_on_merge: config.deleteBranchOnMerge, }); logger.info(`Success updating repo options for ${repo}`); } catch (err) { diff --git a/packages/sync-repo-settings/src/types.ts b/packages/sync-repo-settings/src/types.ts index 13b9b6fcfcc..ec0a8b61a8c 100644 --- a/packages/sync-repo-settings/src/types.ts +++ b/packages/sync-repo-settings/src/types.ts @@ -25,6 +25,10 @@ export interface RepoConfig { * Whether or not PRs are merged with a merge commit on this repository. */ mergeCommitAllowed?: boolean; + /** + * Either true to allow automatically deleting head branches when pull requests are merged, or false to prevent automatic deletion. + */ + deleteBranchOnMerge?: boolean; /** * Branch protection rules */ diff --git a/packages/sync-repo-settings/test/test.ts b/packages/sync-repo-settings/test/test.ts index c63096ceb4e..2708c3e4db2 100644 --- a/packages/sync-repo-settings/test/test.ts +++ b/packages/sync-repo-settings/test/test.ts @@ -58,6 +58,7 @@ function nockUpdateRepoSettings( allow_merge_commit: false, allow_rebase_merge: rebaseBoolean, allow_squash_merge: squashBoolean, + delete_branch_on_merge: true, }) .reply(200); }