aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--routers/repo/pull.go14
-rw-r--r--services/pull/pull.go21
-rw-r--r--templates/repo/pulls/status.tmpl34
3 files changed, 41 insertions, 28 deletions
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index bee3bbc1df..901a668632 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -325,6 +325,20 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) *git.C
}
ctx.Data["NumCommits"] = compareInfo.Commits.Len()
ctx.Data["NumFiles"] = compareInfo.NumFiles
+
+ if compareInfo.Commits.Len() != 0 {
+ sha := compareInfo.Commits.Front().Value.(*git.Commit).ID.String()
+ commitStatuses, err := models.GetLatestCommitStatus(ctx.Repo.Repository.ID, sha, models.ListOptions{})
+ if err != nil {
+ ctx.ServerError("GetLatestCommitStatus", err)
+ return nil
+ }
+ if len(commitStatuses) != 0 {
+ ctx.Data["LatestCommitStatuses"] = commitStatuses
+ ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(commitStatuses)
+ }
+ }
+
return compareInfo
}
diff --git a/services/pull/pull.go b/services/pull/pull.go
index f3fb762303..23a4bf9776 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -9,6 +9,7 @@ import (
"bytes"
"context"
"encoding/json"
+ "errors"
"fmt"
"strings"
"time"
@@ -641,31 +642,27 @@ func GetCommitMessages(pr *models.PullRequest) string {
// GetLastCommitStatus returns the last commit status for this pull request.
func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, err error) {
- if err = pr.LoadHeadRepo(); err != nil {
+ if err = pr.LoadBaseRepo(); err != nil {
return nil, err
}
- if pr.HeadRepo == nil {
- return nil, models.ErrPullRequestHeadRepoMissing{ID: pr.ID, HeadRepoID: pr.HeadRepoID}
- }
-
- headGitRepo, err := git.OpenRepository(pr.HeadRepo.RepoPath())
+ gitRepo, err := git.OpenRepository(pr.BaseRepo.RepoPath())
if err != nil {
return nil, err
}
- defer headGitRepo.Close()
+ defer gitRepo.Close()
- lastCommitID, err := headGitRepo.GetBranchCommitID(pr.HeadBranch)
+ compareInfo, err := gitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(), pr.MergeBase, pr.GetGitRefName())
if err != nil {
return nil, err
}
- err = pr.LoadBaseRepo()
- if err != nil {
- return nil, err
+ if compareInfo.Commits.Len() == 0 {
+ return nil, errors.New("pull request has no commits")
}
- statusList, err := models.GetLatestCommitStatus(pr.BaseRepo.ID, lastCommitID, models.ListOptions{})
+ sha := compareInfo.Commits.Front().Value.(*git.Commit).ID.String()
+ statusList, err := models.GetLatestCommitStatus(pr.BaseRepo.ID, sha, models.ListOptions{})
if err != nil {
return nil, err
}
diff --git a/templates/repo/pulls/status.tmpl b/templates/repo/pulls/status.tmpl
index 2847903a52..e48f5f3fe3 100644
--- a/templates/repo/pulls/status.tmpl
+++ b/templates/repo/pulls/status.tmpl
@@ -1,19 +1,21 @@
{{if $.LatestCommitStatus}}
- <div class="ui top attached header">
- {{if eq .LatestCommitStatus.State "pending"}}
- {{$.i18n.Tr "repo.pulls.status_checking"}}
- {{else if eq .LatestCommitStatus.State "success"}}
- {{$.i18n.Tr "repo.pulls.status_checks_success"}}
- {{else if eq .LatestCommitStatus.State "warning"}}
- {{$.i18n.Tr "repo.pulls.status_checks_warning"}}
- {{else if eq .LatestCommitStatus.State "failure"}}
- {{$.i18n.Tr "repo.pulls.status_checks_failure"}}
- {{else if eq .LatestCommitStatus.State "error"}}
- {{$.i18n.Tr "repo.pulls.status_checks_error"}}
- {{else}}
- {{$.i18n.Tr "repo.pulls.status_checking"}}
- {{end}}
- </div>
+ {{if not $.Issue.PullRequest.HasMerged}}
+ <div class="ui top attached header">
+ {{if eq .LatestCommitStatus.State "pending"}}
+ {{$.i18n.Tr "repo.pulls.status_checking"}}
+ {{else if eq .LatestCommitStatus.State "success"}}
+ {{$.i18n.Tr "repo.pulls.status_checks_success"}}
+ {{else if eq .LatestCommitStatus.State "warning"}}
+ {{$.i18n.Tr "repo.pulls.status_checks_warning"}}
+ {{else if eq .LatestCommitStatus.State "failure"}}
+ {{$.i18n.Tr "repo.pulls.status_checks_failure"}}
+ {{else if eq .LatestCommitStatus.State "error"}}
+ {{$.i18n.Tr "repo.pulls.status_checks_error"}}
+ {{else}}
+ {{$.i18n.Tr "repo.pulls.status_checking"}}
+ {{end}}
+ </div>
+ {{end}}
{{range $.LatestCommitStatuses}}
<div class="ui attached segment">
@@ -21,7 +23,7 @@
<span class="ui">{{.Context}} <span class="text grey">{{.Description}}</span></span>
<div class="ui right">
{{if $.is_context_required}}
- {{if (call $.is_context_required .Context)}}<div class="ui label">{{$.i18n.Tr "repo.pulls.status_checks_requested"}}</div>{{end}}
+ {{if (call $.is_context_required .Context)}}<div class="ui label">{{$.i18n.Tr "repo.pulls.status_checks_requested"}}</div>{{end}}
{{end}}
<span class="ui">{{if .TargetURL}}<a href="{{.TargetURL}}">{{$.i18n.Tr "repo.pulls.status_checks_details"}}</a>{{end}}</span>
</div>