diff --git a/integrations/repo_commits_test.go b/integrations/repo_commits_test.go index f341f8026af5..f26960271a3b 100644 --- a/integrations/repo_commits_test.go +++ b/integrations/repo_commits_test.go @@ -65,7 +65,7 @@ func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) { doc = NewHTMLParser(t, resp.Body) // Check if commit status is displayed in message column - sel := doc.doc.Find("#commits-table tbody tr td.message i.commit-status") + sel := doc.doc.Find("#commits-table tbody tr td.message a.commit-statuses-trigger i.commit-status") assert.Equal(t, sel.Length(), 1) for _, class := range classes { assert.True(t, sel.HasClass(class)) diff --git a/models/commit_status.go b/models/commit_status.go index 9dffece3785f..5d637afc2b58 100644 --- a/models/commit_status.go +++ b/models/commit_status.go @@ -252,7 +252,8 @@ func NewCommitStatus(opts NewCommitStatusOptions) error { // SignCommitWithStatuses represents a commit with validation of signature and status state. type SignCommitWithStatuses struct { - Status *CommitStatus + Status *CommitStatus + Statuses []*CommitStatus *SignCommit } @@ -272,6 +273,7 @@ func ParseCommitsWithStatus(oldCommits *list.List, repo *Repository) *list.List if err != nil { log.Error("GetLatestCommitStatus: %v", err) } else { + commit.Statuses = statuses commit.Status = CalcCommitStatus(statuses) } diff --git a/routers/repo/blame.go b/routers/repo/blame.go index 514adc3bc1ff..9be1ea05af9b 100644 --- a/routers/repo/blame.go +++ b/routers/repo/blame.go @@ -102,6 +102,7 @@ func RefBlame(ctx *context.Context) { blob := entry.Blob() ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(statuses) + ctx.Data["LatestCommitStatuses"] = statuses ctx.Data["Paths"] = paths ctx.Data["TreeLink"] = treeLink diff --git a/routers/repo/commit.go b/routers/repo/commit.go index 43a95c2adb95..c411d247e2e5 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -302,6 +302,7 @@ func Diff(ctx *context.Context) { } ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses) + ctx.Data["CommitStatuses"] = statuses diff, err := gitdiff.GetDiffCommit(repoPath, commitID, setting.Git.MaxGitDiffLines, diff --git a/routers/repo/issue.go b/routers/repo/issue.go index e350f74de9d3..eec0b7fd9628 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -259,7 +259,8 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption uti return } - commitStatus[issues[i].PullRequest.ID], _ = pull_service.GetLastCommitStatus(issues[i].PullRequest) + var statuses, _ = pull_service.GetLastCommitStatus(issues[i].PullRequest) + commitStatus[issues[i].PullRequest.ID] = models.CalcCommitStatus(statuses) } } diff --git a/routers/repo/view.go b/routers/repo/view.go index 66ad8e3ad7fa..8f010490c3fb 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -359,6 +359,7 @@ func renderDirectory(ctx *context.Context, treeLink string) { } ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(statuses) + ctx.Data["LatestCommitStatuses"] = statuses // Check permission to add or upload new file. if ctx.Repo.CanWrite(models.UnitTypeCode) && ctx.Repo.IsViewBranch { diff --git a/routers/user/home.go b/routers/user/home.go index 779971ca97d4..46532f82b9c6 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -563,7 +563,8 @@ func Issues(ctx *context.Context) { issue.Repo = showReposMap[issue.RepoID] if isPullList { - commitStatus[issue.PullRequest.ID], _ = pull_service.GetLastCommitStatus(issue.PullRequest) + var statuses, _ = pull_service.GetLastCommitStatus(issue.PullRequest) + commitStatus[issue.PullRequest.ID] = models.CalcCommitStatus(statuses) } } diff --git a/services/pull/pull.go b/services/pull/pull.go index 23a4bf9776bd..499bafff1e4f 100644 --- a/services/pull/pull.go +++ b/services/pull/pull.go @@ -640,8 +640,8 @@ func GetCommitMessages(pr *models.PullRequest) string { return stringBuilder.String() } -// GetLastCommitStatus returns the last commit status for this pull request. -func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, err error) { +// GetLastCommitStatus returns list of commit statuses for latest commit on this pull request. +func GetLastCommitStatus(pr *models.PullRequest) (status []*models.CommitStatus, err error) { if err = pr.LoadBaseRepo(); err != nil { return nil, err } @@ -666,7 +666,7 @@ func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, e if err != nil { return nil, err } - return models.CalcCommitStatus(statusList), nil + return statusList, nil } // IsHeadEqualWithBranch returns if the commits of branchName are available in pull request head diff --git a/templates/repo/commit_page.tmpl b/templates/repo/commit_page.tmpl index 0448c938bd51..6260d2e9652b 100644 --- a/templates/repo/commit_page.tmpl +++ b/templates/repo/commit_page.tmpl @@ -23,7 +23,7 @@ {{.i18n.Tr "repo.diff.browse_source"}} {{end}} -
{{RenderCommitBody .Commit.Message $.RepoLink $.Repository.ComposeMetas}}{{end}} diff --git a/templates/repo/commit_status.tmpl b/templates/repo/commit_status.tmpl index 638f81ed8ffc..75ab6b4e1c39 100644 --- a/templates/repo/commit_status.tmpl +++ b/templates/repo/commit_status.tmpl @@ -1,15 +1,15 @@ {{if eq .State "pending"}} - + {{end}} {{if eq .State "success"}} - + {{end}} {{if eq .State "error"}} - + {{end}} {{if eq .State "failure"}} - + {{end}} {{if eq .State "warning"}} - + {{end}} diff --git a/templates/repo/commit_statuses.tmpl b/templates/repo/commit_statuses.tmpl new file mode 100644 index 000000000000..d2e9f0bd16d9 --- /dev/null +++ b/templates/repo/commit_statuses.tmpl @@ -0,0 +1,14 @@ +{{template "repo/commit_status" .Status}} +