diff --git a/cmd/web.go b/cmd/web.go index 9776fdc11..f6baf6ad4 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -518,6 +518,7 @@ func runWeb(ctx *cli.Context) error { }, context.RepoRef()) // m.Get("/branches", repo.Branches) + m.Post("/branches/:name/delete", reqSignIn, reqRepoWriter, repo.DeleteBranchPost) m.Group("/wiki", func() { m.Get("/?:page", repo.Wiki) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 97725a950..579ab8515 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -588,6 +588,7 @@ pulls.cannot_auto_merge_desc = This pull request can't be merged automatically b pulls.cannot_auto_merge_helper = Please merge manually in order to resolve the conflicts. pulls.merge_pull_request = Merge Pull Request pulls.open_unmerged_pull_exists = `You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.` +pulls.delete_branch = Delete Branch milestones.new = New Milestone milestones.open_tab = %d Open diff --git a/routers/repo/branch.go b/routers/repo/branch.go index fcb6efd01..c3336e598 100644 --- a/routers/repo/branch.go +++ b/routers/repo/branch.go @@ -5,6 +5,7 @@ package repo import ( + "code.gitea.io/git" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" ) @@ -30,3 +31,21 @@ func Branches(ctx *context.Context) { ctx.Data["Branches"] = brs ctx.HTML(200, tplBranch) } + +// DeleteBranchPost responses for delete merged branch +func DeleteBranchPost(ctx *context.Context) { + branchName := ctx.Params(":name") + + if err := ctx.Repo.GitRepo.DeleteBranch(branchName, git.DeleteBranchOptions{ + Force: false, + }); err != nil { + ctx.Handle(500, "DeleteBranch", err) + return + } + + redirectTo := ctx.Query("redirect_to") + if len(redirectTo) == 0 { + redirectTo = ctx.Repo.RepoLink + } + ctx.Redirect(redirectTo) +} diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 1cf5722ed..104c89313 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -661,6 +661,15 @@ func ViewIssue(ctx *context.Context) { } } + if issue.IsPull { + pull := issue.PullRequest + ctx.Data["IsPullBranchDeletable"] = ctx.Repo.IsWriter() && ctx.Repo.GitRepo.IsBranchExist(pull.HeadBranch) + + deleteBranchURL := ctx.Repo.RepoLink + "/branches/" + pull.HeadBranch + "/delete" + queryParams := "?redirect_to=" + ctx.Data["Link"].(string) + ctx.Data["DeleteBranchLink"] = deleteBranchURL + queryParams + } + ctx.Data["Participants"] = participants ctx.Data["NumParticipants"] = len(participants) ctx.Data["Issue"] = issue diff --git a/templates/repo/issue/view_content.tmpl b/templates/repo/issue/view_content.tmpl index bbb8f4f98..1cb69fe11 100644 --- a/templates/repo/issue/view_content.tmpl +++ b/templates/repo/issue/view_content.tmpl @@ -163,6 +163,15 @@
{{$.i18n.Tr "repo.pulls.has_merged"}}
+ {{if .IsPullBranchDeletable}} +
+
+
+ {{.CsrfTokenHtml}} + +
+
+ {{end}} {{else if .Issue.IsClosed}}
{{$.i18n.Tr "repo.pulls.reopen_to_merge"}} @@ -265,7 +274,7 @@
{{.Name}}
- + {{end}}