diff options
Diffstat (limited to 'routers/web/repo/pull.go')
-rw-r--r-- | routers/web/repo/pull.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index 37826abfb4..b40eb1ea17 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -1051,6 +1051,17 @@ func MergePullRequest(ctx *context.Context) { log.Trace("Pull request merged: %d", pr.ID) if form.DeleteBranchAfterMerge { + // Don't cleanup when other pr use this branch as head branch + exist, err := models.HasUnmergedPullRequestsByHeadInfo(pr.HeadRepoID, pr.HeadBranch) + if err != nil { + ctx.ServerError("HasUnmergedPullRequestsByHeadInfo", err) + return + } + if exist { + ctx.Redirect(issue.Link()) + return + } + var headRepo *git.Repository if ctx.Repo != nil && ctx.Repo.Repository != nil && pr.HeadRepoID == ctx.Repo.Repository.ID && ctx.Repo.GitRepo != nil { headRepo = ctx.Repo.GitRepo @@ -1222,6 +1233,17 @@ func CleanUpPullRequest(ctx *context.Context) { return } + // Don't cleanup when there are other PR's that use this branch as head branch. + exist, err := models.HasUnmergedPullRequestsByHeadInfo(pr.HeadRepoID, pr.HeadBranch) + if err != nil { + ctx.ServerError("HasUnmergedPullRequestsByHeadInfo", err) + return + } + if exist { + ctx.NotFound("CleanUpPullRequest", nil) + return + } + if err := pr.LoadHeadRepo(); err != nil { ctx.ServerError("LoadHeadRepo", err) return |