Changes
5 changed files (+68/-1)
-
-
@@ -59,6 +59,16 @@ func GetUnmergedPullRequestsByHeadInfo(repoID int64, branch string) ([]*PullRequFind(&prs) } // HasUnmergedPullRequestsByHeadInfo checks if there are open and not merged pull request // by given head information (repo and branch) func HasUnmergedPullRequestsByHeadInfo(repoID int64, branch string) (bool, error) { return db.GetEngine(db.DefaultContext). Where("head_repo_id = ? AND head_branch = ? AND has_merged = ? AND issue.is_closed = ? AND flow = ?", repoID, branch, false, false, PullRequestFlowGithub). Join("INNER", "issue", "issue.id = pull_request.issue_id"). Exist(&PullRequest{}) } // GetUnmergedPullRequestsByBaseInfo returns all pull requests that are open and has not been merged // by given base information (repo and branch). func GetUnmergedPullRequestsByBaseInfo(repoID int64, branch string) ([]*PullRequest, error) {
-
-
-
@@ -107,6 +107,18 @@ func TestGetUnmergedPullRequest(t *testing.T) {assert.True(t, IsErrPullRequestNotExist(err)) } func TestHasUnmergedPullRequestsByHeadInfo(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) exist, err := HasUnmergedPullRequestsByHeadInfo(1, "branch2") assert.NoError(t, err) assert.Equal(t, true, exist) exist, err = HasUnmergedPullRequestsByHeadInfo(1, "not_exist_branch") assert.NoError(t, err) assert.Equal(t, false, exist) } func TestGetUnmergedPullRequestsByHeadInfo(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) prs, err := GetUnmergedPullRequestsByHeadInfo(1, "branch2")
-
-
-
@@ -873,6 +873,17 @@ func MergePullRequest(ctx *context.APIContext) {log.Trace("Pull request merged: %d", pr.ID) if form.DeleteBranchAfterMerge { // 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.Status(http.StatusOK) return } var headRepo *git.Repository if ctx.Repo != nil && ctx.Repo.Repository != nil && ctx.Repo.Repository.ID == pr.HeadRepoID && ctx.Repo.GitRepo != nil { headRepo = ctx.Repo.GitRepo
-
-
-
@@ -1600,11 +1600,23 @@ func ViewIssue(ctx *context.Context) {} else { ctx.Data["WontSignReason"] = "not_signed_in" } ctx.Data["IsPullBranchDeletable"] = canDelete && isPullBranchDeletable := canDelete && pull.HeadRepo != nil && git.IsBranchExist(ctx, pull.HeadRepo.RepoPath(), pull.HeadBranch) && (!pull.HasMerged || ctx.Data["HeadBranchCommitID"] == ctx.Data["PullHeadCommitID"]) if isPullBranchDeletable && pull.HasMerged { exist, err := models.HasUnmergedPullRequestsByHeadInfo(pull.HeadRepoID, pull.HeadBranch) if err != nil { ctx.ServerError("HasUnmergedPullRequestsByHeadInfo", err) return } isPullBranchDeletable = !exist } ctx.Data["IsPullBranchDeletable"] = isPullBranchDeletable stillCanManualMerge := func() bool { if pull.HasMerged || issue.IsClosed || !ctx.IsSigned { return false
-
-
-
@@ -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
-