Skip to content

Commit efa9a8a

Browse files
CirnoTlafrikstechknowlogick6543
authored
Show status check for merged PRs (#13975)
* Show status check for merged PRs * Handle PRs with no commits * Styling Co-authored-by: Lauris BH <[email protected]> Co-authored-by: techknowlogick <[email protected]> Co-authored-by: 6543 <[email protected]>
1 parent 48bd02e commit efa9a8a

File tree

3 files changed

+41
-28
lines changed

3 files changed

+41
-28
lines changed

routers/repo/pull.go

+14
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,20 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) *git.C
325325
}
326326
ctx.Data["NumCommits"] = compareInfo.Commits.Len()
327327
ctx.Data["NumFiles"] = compareInfo.NumFiles
328+
329+
if compareInfo.Commits.Len() != 0 {
330+
sha := compareInfo.Commits.Front().Value.(*git.Commit).ID.String()
331+
commitStatuses, err := models.GetLatestCommitStatus(ctx.Repo.Repository.ID, sha, models.ListOptions{})
332+
if err != nil {
333+
ctx.ServerError("GetLatestCommitStatus", err)
334+
return nil
335+
}
336+
if len(commitStatuses) != 0 {
337+
ctx.Data["LatestCommitStatuses"] = commitStatuses
338+
ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(commitStatuses)
339+
}
340+
}
341+
328342
return compareInfo
329343
}
330344

services/pull/pull.go

+9-12
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"bytes"
1010
"context"
1111
"encoding/json"
12+
"errors"
1213
"fmt"
1314
"strings"
1415
"time"
@@ -641,31 +642,27 @@ func GetCommitMessages(pr *models.PullRequest) string {
641642

642643
// GetLastCommitStatus returns the last commit status for this pull request.
643644
func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, err error) {
644-
if err = pr.LoadHeadRepo(); err != nil {
645+
if err = pr.LoadBaseRepo(); err != nil {
645646
return nil, err
646647
}
647648

648-
if pr.HeadRepo == nil {
649-
return nil, models.ErrPullRequestHeadRepoMissing{ID: pr.ID, HeadRepoID: pr.HeadRepoID}
650-
}
651-
652-
headGitRepo, err := git.OpenRepository(pr.HeadRepo.RepoPath())
649+
gitRepo, err := git.OpenRepository(pr.BaseRepo.RepoPath())
653650
if err != nil {
654651
return nil, err
655652
}
656-
defer headGitRepo.Close()
653+
defer gitRepo.Close()
657654

658-
lastCommitID, err := headGitRepo.GetBranchCommitID(pr.HeadBranch)
655+
compareInfo, err := gitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(), pr.MergeBase, pr.GetGitRefName())
659656
if err != nil {
660657
return nil, err
661658
}
662659

663-
err = pr.LoadBaseRepo()
664-
if err != nil {
665-
return nil, err
660+
if compareInfo.Commits.Len() == 0 {
661+
return nil, errors.New("pull request has no commits")
666662
}
667663

668-
statusList, err := models.GetLatestCommitStatus(pr.BaseRepo.ID, lastCommitID, models.ListOptions{})
664+
sha := compareInfo.Commits.Front().Value.(*git.Commit).ID.String()
665+
statusList, err := models.GetLatestCommitStatus(pr.BaseRepo.ID, sha, models.ListOptions{})
669666
if err != nil {
670667
return nil, err
671668
}

templates/repo/pulls/status.tmpl

+18-16
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
{{if $.LatestCommitStatus}}
2-
<div class="ui top attached header">
3-
{{if eq .LatestCommitStatus.State "pending"}}
4-
{{$.i18n.Tr "repo.pulls.status_checking"}}
5-
{{else if eq .LatestCommitStatus.State "success"}}
6-
{{$.i18n.Tr "repo.pulls.status_checks_success"}}
7-
{{else if eq .LatestCommitStatus.State "warning"}}
8-
{{$.i18n.Tr "repo.pulls.status_checks_warning"}}
9-
{{else if eq .LatestCommitStatus.State "failure"}}
10-
{{$.i18n.Tr "repo.pulls.status_checks_failure"}}
11-
{{else if eq .LatestCommitStatus.State "error"}}
12-
{{$.i18n.Tr "repo.pulls.status_checks_error"}}
13-
{{else}}
14-
{{$.i18n.Tr "repo.pulls.status_checking"}}
15-
{{end}}
16-
</div>
2+
{{if not $.Issue.PullRequest.HasMerged}}
3+
<div class="ui top attached header">
4+
{{if eq .LatestCommitStatus.State "pending"}}
5+
{{$.i18n.Tr "repo.pulls.status_checking"}}
6+
{{else if eq .LatestCommitStatus.State "success"}}
7+
{{$.i18n.Tr "repo.pulls.status_checks_success"}}
8+
{{else if eq .LatestCommitStatus.State "warning"}}
9+
{{$.i18n.Tr "repo.pulls.status_checks_warning"}}
10+
{{else if eq .LatestCommitStatus.State "failure"}}
11+
{{$.i18n.Tr "repo.pulls.status_checks_failure"}}
12+
{{else if eq .LatestCommitStatus.State "error"}}
13+
{{$.i18n.Tr "repo.pulls.status_checks_error"}}
14+
{{else}}
15+
{{$.i18n.Tr "repo.pulls.status_checking"}}
16+
{{end}}
17+
</div>
18+
{{end}}
1719

1820
{{range $.LatestCommitStatuses}}
1921
<div class="ui attached segment">
2022
<span>{{template "repo/commit_status" .}}</span>
2123
<span class="ui">{{.Context}} <span class="text grey">{{.Description}}</span></span>
2224
<div class="ui right">
2325
{{if $.is_context_required}}
24-
{{if (call $.is_context_required .Context)}}<div class="ui label">{{$.i18n.Tr "repo.pulls.status_checks_requested"}}</div>{{end}}
26+
{{if (call $.is_context_required .Context)}}<div class="ui label">{{$.i18n.Tr "repo.pulls.status_checks_requested"}}</div>{{end}}
2527
{{end}}
2628
<span class="ui">{{if .TargetURL}}<a href="{{.TargetURL}}">{{$.i18n.Tr "repo.pulls.status_checks_details"}}</a>{{end}}</span>
2729
</div>

0 commit comments

Comments
 (0)