Skip to content

Commit 2b4989f

Browse files
Copilotalexr00
andcommitted
Add deleteBranchAfterMerge setting and implementation
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 2dc39b6 commit 2b4989f

File tree

5 files changed

+23
-1
lines changed

5 files changed

+23
-1
lines changed

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,11 @@
321321
"default": true,
322322
"description": "%githubPullRequests.defaultDeletionMethod.selectRemote.description%"
323323
},
324+
"githubPullRequests.deleteBranchAfterMerge": {
325+
"type": "boolean",
326+
"default": false,
327+
"description": "%githubPullRequests.deleteBranchAfterMerge.description%"
328+
},
324329
"githubPullRequests.terminalLinksHandler": {
325330
"type": "string",
326331
"enum": [

package.nls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"githubPullRequests.hideViewedFiles.description": "Hide files that have been marked as viewed in the pull request changes tree.",
4040
"githubPullRequests.defaultDeletionMethod.selectLocalBranch.description": "When true, the option to delete the local branch will be selected by default when deleting a branch from a pull request.",
4141
"githubPullRequests.defaultDeletionMethod.selectRemote.description": "When true, the option to delete the remote will be selected by default when deleting a branch from a pull request.",
42+
"githubPullRequests.deleteBranchAfterMerge.description": "Automatically delete the branch after merging a pull request.",
4243
"githubPullRequests.terminalLinksHandler.description": "Default handler for terminal links.",
4344
"githubPullRequests.terminalLinksHandler.github": "Create the pull request on GitHub",
4445
"githubPullRequests.terminalLinksHandler.vscode": "Create the pull request in VS Code",

src/common/settingKeys.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export const DEFAULT_MERGE_METHOD = 'defaultMergeMethod';
3333
export const DEFAULT_DELETION_METHOD = 'defaultDeletionMethod';
3434
export const SELECT_LOCAL_BRANCH = 'selectLocalBranch';
3535
export const SELECT_REMOTE = 'selectRemote';
36+
export const DELETE_BRANCH_AFTER_MERGE = 'deleteBranchAfterMerge';
3637
export const REMOTES = 'remotes';
3738
export const PULL_PR_BRANCH_BEFORE_CHECKOUT = 'pullPullRequestBranchBeforeCheckout';
3839
export type PullPRBranchVariants = 'never' | 'pull' | 'pullAndMergeBase' | 'pullAndUpdateBase' | true | false;

src/github/activityBarViewProvider.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { MergeArguments, PullRequest, ReviewType } from './views';
1515
import { IComment } from '../common/comment';
1616
import { emojify, ensureEmojis } from '../common/emoji';
1717
import { disposeAll } from '../common/lifecycle';
18+
import { DELETE_BRANCH_AFTER_MERGE, PR_SETTINGS_NAMESPACE } from '../common/settingKeys';
1819
import { ReviewEvent } from '../common/timelineEvent';
1920
import { formatError } from '../common/utils';
2021
import { generateUuid } from '../common/uuid';
@@ -409,6 +410,13 @@ export class PullRequestViewProvider extends WebviewViewBase implements vscode.W
409410

410411
if (!result.merged) {
411412
vscode.window.showErrorMessage(vscode.l10n.t('Merging pull request failed: {0}', result?.message ?? ''));
413+
} else {
414+
// Check if auto-delete branch setting is enabled
415+
const deleteBranchAfterMerge = vscode.workspace.getConfiguration(PR_SETTINGS_NAMESPACE).get<boolean>(DELETE_BRANCH_AFTER_MERGE, false);
416+
if (deleteBranchAfterMerge) {
417+
// Automatically delete the branch after successful merge
418+
await PullRequestReviewCommon.deleteBranch(this._folderRepositoryManager, this._item);
419+
}
412420
}
413421

414422
this._replyMessage(message, {

src/github/pullRequestOverview.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { COPILOT_SWE_AGENT, copilotEventToStatus, CopilotPRStatus, mostRecentCop
3131
import { commands, contexts } from '../common/executeCommands';
3232
import { disposeAll } from '../common/lifecycle';
3333
import Logger from '../common/logger';
34-
import { DEFAULT_MERGE_METHOD, PR_SETTINGS_NAMESPACE } from '../common/settingKeys';
34+
import { DEFAULT_MERGE_METHOD, DELETE_BRANCH_AFTER_MERGE, PR_SETTINGS_NAMESPACE } from '../common/settingKeys';
3535
import { ITelemetry } from '../common/telemetry';
3636
import { EventType, ReviewEvent, SessionLinkInfo, TimelineEvent } from '../common/timelineEvent';
3737
import { asPromise, formatError } from '../common/utils';
@@ -626,6 +626,13 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
626626

627627
if (!result.merged) {
628628
vscode.window.showErrorMessage(`Merging pull request failed: ${result.message}`);
629+
} else {
630+
// Check if auto-delete branch setting is enabled
631+
const deleteBranchAfterMerge = vscode.workspace.getConfiguration(PR_SETTINGS_NAMESPACE).get<boolean>(DELETE_BRANCH_AFTER_MERGE, false);
632+
if (deleteBranchAfterMerge) {
633+
// Automatically delete the branch after successful merge
634+
await PullRequestReviewCommon.deleteBranch(this._folderRepositoryManager, this._item);
635+
}
629636
}
630637

631638
const mergeResult: MergeResult = {

0 commit comments

Comments
 (0)