From 78118a3b029ee4eb140d47be22e86df17253a786 Mon Sep 17 00:00:00 2001
From: Jimmy Praet <jimmy.praet@telenet.be>
Date: Tue, 13 Jul 2021 01:26:25 +0200
Subject: Add checkbox to delete pull branch after successful merge (#16049)

* Add checkbox to delete pull branch after successful merge

* Omit DeleteBranchAfterMerge field in json

* Log a warning instead of error when PR head branch deleted

* Add DefaultDeleteBranchAfterMerge to PullRequestConfig

* Add support for delete_branch_after_merge via API

* Fix for API: the branch should be deleted from the HEAD repo

If head and base repo are the same, reuse the already opened ctx.Repo.GitRepo

* Don't delegate to CleanupBranch, only reuse branch deletion code

CleanupBranch contains too much logic that has already been performed by the Merge

* Reuse gitrepo in MergePullRequest

Co-authored-by: Andrew Thornton <art27@cantab.net>
---
 templates/repo/issue/view_content/pull.tmpl | 30 +++++++++++++++++++++++++++++
 templates/repo/settings/options.tmpl        |  6 ++++++
 2 files changed, 36 insertions(+)

(limited to 'templates/repo')

diff --git a/templates/repo/issue/view_content/pull.tmpl b/templates/repo/issue/view_content/pull.tmpl
index 3bdec4becb..fcb3597ae8 100644
--- a/templates/repo/issue/view_content/pull.tmpl
+++ b/templates/repo/issue/view_content/pull.tmpl
@@ -315,6 +315,12 @@
 									<button class="ui button merge-cancel">
 										{{$.i18n.Tr "cancel"}}
 									</button>
+									{{if .IsPullBranchDeletable}}
+										<div class="ui checkbox ml-2">
+											<input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}>
+											<label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label>
+										</div>
+									{{end}}
 								</form>
 							</div>
 							{{end}}
@@ -328,6 +334,12 @@
 									<button class="ui button merge-cancel">
 										{{$.i18n.Tr "cancel"}}
 									</button>
+									{{if .IsPullBranchDeletable}}
+										<div class="ui checkbox ml-2">
+											<input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}>
+											<label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label>
+										</div>
+									{{end}}
 								</form>
 							</div>
 							{{end}}
@@ -347,6 +359,12 @@
 									<button class="ui button merge-cancel">
 										{{$.i18n.Tr "cancel"}}
 									</button>
+									{{if .IsPullBranchDeletable}}
+										<div class="ui checkbox ml-2">
+											<input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}>
+											<label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label>
+										</div>
+									{{end}}
 								</form>
 							</div>
 							{{end}}
@@ -366,6 +384,12 @@
 									<button class="ui button merge-cancel">
 										{{$.i18n.Tr "cancel"}}
 									</button>
+									{{if .IsPullBranchDeletable}}
+										<div class="ui checkbox ml-2">
+											<input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}>
+											<label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label>
+										</div>
+									{{end}}
 								</form>
 							</div>
 							{{end}}
@@ -382,6 +406,12 @@
 										<button class="ui button merge-cancel">
 											{{$.i18n.Tr "cancel"}}
 										</button>
+										{{if .IsPullBranchDeletable}}
+											<div class="ui checkbox ml-2">
+												<input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}>
+												<label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label>
+											</div>
+										{{end}}
 									</form>
 								</div>
 							{{end}}
diff --git a/templates/repo/settings/options.tmpl b/templates/repo/settings/options.tmpl
index eb76a3b720..054df7c368 100644
--- a/templates/repo/settings/options.tmpl
+++ b/templates/repo/settings/options.tmpl
@@ -445,6 +445,12 @@
 								<label>{{.i18n.Tr "repo.settings.pulls.enable_autodetect_manual_merge"}}</label>
 							</div>
 						</div>
+						<div class="field">
+							<div class="ui checkbox">
+								<input name="default_delete_branch_after_merge" type="checkbox" {{if or (not $pullRequestEnabled) ($prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge)}}checked{{end}}>
+								<label>{{.i18n.Tr "repo.settings.pulls.default_delete_branch_after_merge"}}</label>
+							</div>
+						</div>
 						<div class="field">
 							<p>
 								{{.i18n.Tr "repo.settings.default_merge_style_desc"}}
-- 
cgit v1.2.3