Quellcode durchsuchen

provide button to delete merged pull request

Tanapol Nearunchorn vor 8 Jahren
Ursprung
Commit
73fedc7275

+ 1 - 0
cmd/web.go

@@ -543,6 +543,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)

+ 1 - 0
conf/locale/locale_en-US.ini

@@ -580,6 +580,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

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
modules/bindata/bindata.go


+ 19 - 0
routers/repo/branch.go

@@ -5,6 +5,8 @@
 package repo
 
 import (
+	"github.com/gogits/git-module"
+
 	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/context"
 )
@@ -29,3 +31,20 @@ func Branches(ctx *context.Context) {
 	ctx.Data["Branches"] = brs
 	ctx.HTML(200, 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)
+}

+ 9 - 0
routers/repo/issue.go

@@ -629,6 +629,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

+ 10 - 1
templates/repo/issue/view_content.tmpl

@@ -163,6 +163,15 @@
 								<div class="item text purple">
 									{{$.i18n.Tr "repo.pulls.has_merged"}}
 								</div>
+								{{if .IsPullBranchDeletable}}
+									<div class="ui divider"></div>
+									<div>
+										<form class="ui form" action="{{.DeleteBranchLink}}" method="post">
+											{{.CsrfTokenHtml}}
+											<button class="ui red button">{{$.i18n.Tr "repo.pulls.delete_branch"}}</button>
+										</form>
+									</div>
+								{{end}}
 							{{else if .Issue.IsClosed}}
 								<div class="item text grey">
 									{{$.i18n.Tr "repo.pulls.reopen_to_merge"}}
@@ -265,7 +274,7 @@
 					<div class="item">
 						<a class="ui label {{if not .IsChecked}}hide{{end}}" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name}}</a>
 					</div>
-					
+
 				{{end}}
 			</div>
 

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.