0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-05-22 19:34:59 +02:00

Rename CommitStatusSummary to CombinedStatus

This commit is contained in:
Lunny Xiao 2025-05-25 00:21:52 -07:00
parent 0915b18157
commit e3554b3945
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
21 changed files with 107 additions and 103 deletions

View File

@ -17,21 +17,25 @@ import (
"xorm.io/builder" "xorm.io/builder"
) )
// CommitStatusSummary holds the latest combined Status of a single Commit // CombinedStatus holds the latest combined Status of a single Commit
type CommitStatusSummary struct { type CombinedStatus struct {
ID int64 `xorm:"pk autoincr"` ID int64 `xorm:"pk autoincr"`
RepoID int64 `xorm:"INDEX UNIQUE(repo_id_sha)"` RepoID int64 `xorm:"INDEX UNIQUE(repo_id_sha)"`
Repo *repo_model.Repository `xorm:"-"` Repo *repo_model.Repository `xorm:"-"`
SHA string `xorm:"VARCHAR(64) NOT NULL INDEX UNIQUE(repo_id_sha)"` SHA string `xorm:"VARCHAR(64) NOT NULL INDEX UNIQUE(repo_id_sha)"`
State commitstatus.CombinedStatus `xorm:"VARCHAR(7) NOT NULL"` State commitstatus.CombinedStatusState `xorm:"VARCHAR(7) NOT NULL"`
TargetURL string `xorm:"TEXT"` TargetURL string `xorm:"TEXT"`
}
func (CombinedStatus) TableName() string {
return "commit_status_summary" // legacy name for compatibility
} }
func init() { func init() {
db.RegisterModel(new(CommitStatusSummary)) db.RegisterModel(new(CombinedStatus))
} }
func (status *CommitStatusSummary) loadRepository(ctx context.Context) error { func (status *CombinedStatus) loadRepository(ctx context.Context) error {
if status.RepoID == 0 || status.Repo != nil { if status.RepoID == 0 || status.Repo != nil {
return nil return nil
} }
@ -46,12 +50,12 @@ func (status *CommitStatusSummary) loadRepository(ctx context.Context) error {
} }
// LocaleString returns the locale string name of the Status // LocaleString returns the locale string name of the Status
func (status *CommitStatusSummary) LocaleString(lang translation.Locale) string { func (status *CombinedStatus) LocaleString(lang translation.Locale) string {
return lang.TrString("repo.commitstatus." + status.State.String()) return lang.TrString("repo.commitstatus." + status.State.String())
} }
// HideActionsURL set `TargetURL` to an empty string if the status comes from Gitea Actions // HideActionsURL set `TargetURL` to an empty string if the status comes from Gitea Actions
func (status *CommitStatusSummary) HideActionsURL(ctx context.Context) { func (status *CombinedStatus) HideActionsURL(ctx context.Context) {
if status.RepoID == 0 { if status.RepoID == 0 {
return return
} }
@ -72,13 +76,13 @@ type RepoSHA struct {
SHA string SHA string
} }
func GetLatestCombinedStatusForRepoAndSHAs(ctx context.Context, repoSHAs []RepoSHA) ([]*CommitStatusSummary, error) { func GetLatestCombinedStatusForRepoAndSHAs(ctx context.Context, repoSHAs []RepoSHA) ([]*CombinedStatus, error) {
cond := builder.NewCond() cond := builder.NewCond()
for _, rs := range repoSHAs { for _, rs := range repoSHAs {
cond = cond.Or(builder.Eq{"repo_id": rs.RepoID, "sha": rs.SHA}) cond = cond.Or(builder.Eq{"repo_id": rs.RepoID, "sha": rs.SHA})
} }
var summaries []*CommitStatusSummary var summaries []*CombinedStatus
if err := db.GetEngine(ctx).Where(cond).Find(&summaries); err != nil { if err := db.GetEngine(ctx).Where(cond).Find(&summaries); err != nil {
return nil, err return nil, err
} }
@ -90,7 +94,7 @@ func UpdateCommitStatusSummary(ctx context.Context, repoID int64, sha string) er
if err != nil { if err != nil {
return err return err
} }
summary := CalcCommitStatusSummary(commitStatuses) summary := CalcCombinedStatus(commitStatuses)
// mysql will return 0 when update a record which state hasn't been changed which behaviour is different from other database, // mysql will return 0 when update a record which state hasn't been changed which behaviour is different from other database,
// so we need to use insert in on duplicate // so we need to use insert in on duplicate
@ -111,7 +115,7 @@ func UpdateCommitStatusSummary(ctx context.Context, repoID int64, sha string) er
return nil return nil
} }
func CommitStatusSummeriesHideActionsURL(ctx context.Context, statuses []*CommitStatusSummary) { func CombinedStatusesHideActionsURL(ctx context.Context, statuses []*CombinedStatus) {
idToRepos := make(map[int64]*repo_model.Repository) idToRepos := make(map[int64]*repo_model.Repository)
for _, status := range statuses { for _, status := range statuses {
if status == nil { if status == nil {

View File

@ -226,8 +226,8 @@ func (status *CommitStatus) HideActionsURL(ctx context.Context) {
} }
} }
// CalcCommitStatus returns a combined status, the commit statuses should order by id desc // CalcCombinedStatusState returns a combined status state, the commit statuses should order by id desc
func CalcCommitStatus(statuses []*CommitStatus) commitstatus.CombinedStatus { func CalcCombinedStatusState(statuses []*CommitStatus) commitstatus.CombinedStatusState {
states := make(commitstatus.CommitStatusStates, 0, len(statuses)) states := make(commitstatus.CommitStatusStates, 0, len(statuses))
for _, status := range statuses { for _, status := range statuses {
states = append(states, status.State) states = append(states, status.State)
@ -235,8 +235,8 @@ func CalcCommitStatus(statuses []*CommitStatus) commitstatus.CombinedStatus {
return states.Merge() return states.Merge()
} }
// CalcCommitStatusSummary returns commit status summary, the commit statuses should order by id desc // CalcCombinedStatus returns combined status struct, the commit statuses should order by id desc
func CalcCommitStatusSummary(statuses []*CommitStatus) *CommitStatusSummary { func CalcCombinedStatus(statuses []*CommitStatus) *CombinedStatus {
if len(statuses) == 0 { if len(statuses) == 0 {
return nil return nil
} }
@ -249,7 +249,7 @@ func CalcCommitStatusSummary(statuses []*CommitStatus) *CommitStatusSummary {
targetURL = status.TargetURL targetURL = status.TargetURL
} }
} }
return &CommitStatusSummary{ return &CombinedStatus{
RepoID: statuses[0].RepoID, RepoID: statuses[0].RepoID,
SHA: statuses[0].SHA, SHA: statuses[0].SHA,
State: states.Merge(), State: states.Merge(),
@ -499,7 +499,7 @@ func NewCommitStatus(ctx context.Context, opts NewCommitStatusOptions) error {
// SignCommitWithStatuses represents a commit with validation of signature and status state. // SignCommitWithStatuses represents a commit with validation of signature and status state.
type SignCommitWithStatuses struct { type SignCommitWithStatuses struct {
Status *CommitStatusSummary Status *CombinedStatus
Statuses []*CommitStatus Statuses []*CommitStatus
*asymkey_model.SignCommit *asymkey_model.SignCommit
} }

View File

@ -70,7 +70,7 @@ func TestGetCommitStatuses(t *testing.T) {
func Test_CalcCommitStatus(t *testing.T) { func Test_CalcCommitStatus(t *testing.T) {
kases := []struct { kases := []struct {
statuses []*git_model.CommitStatus statuses []*git_model.CommitStatus
expected commitstatus.CombinedStatus expected commitstatus.CombinedStatusState
}{ }{
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -78,7 +78,7 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusPending, State: commitstatus.CommitStatusPending,
}, },
}, },
expected: commitstatus.CombinedStatusPending, expected: commitstatus.CombinedStatusStatePending,
}, },
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -89,7 +89,7 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusPending, State: commitstatus.CommitStatusPending,
}, },
}, },
expected: commitstatus.CombinedStatusPending, expected: commitstatus.CombinedStatusStatePending,
}, },
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -103,7 +103,7 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusSuccess, State: commitstatus.CommitStatusSuccess,
}, },
}, },
expected: commitstatus.CombinedStatusPending, expected: commitstatus.CombinedStatusStatePending,
}, },
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -117,7 +117,7 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusSuccess, State: commitstatus.CommitStatusSuccess,
}, },
}, },
expected: commitstatus.CombinedStatusFailure, expected: commitstatus.CombinedStatusStateFailure,
}, },
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -131,7 +131,7 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusSuccess, State: commitstatus.CommitStatusSuccess,
}, },
}, },
expected: commitstatus.CombinedStatusPending, expected: commitstatus.CombinedStatusStatePending,
}, },
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -145,7 +145,7 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusSuccess, State: commitstatus.CommitStatusSuccess,
}, },
}, },
expected: commitstatus.CombinedStatusSuccess, expected: commitstatus.CombinedStatusStateSuccess,
}, },
{ {
statuses: []*git_model.CommitStatus{ statuses: []*git_model.CommitStatus{
@ -159,12 +159,12 @@ func Test_CalcCommitStatus(t *testing.T) {
State: commitstatus.CommitStatusWarning, State: commitstatus.CommitStatusWarning,
}, },
}, },
expected: commitstatus.CombinedStatusFailure, expected: commitstatus.CombinedStatusStateFailure,
}, },
} }
for _, kase := range kases { for _, kase := range kases {
assert.Equal(t, kase.expected, git_model.CalcCommitStatus(kase.statuses)) assert.Equal(t, kase.expected, git_model.CalcCombinedStatusState(kase.statuses))
} }
} }

View File

@ -3,33 +3,33 @@
package commitstatus package commitstatus
// CombinedStatus represents the combined status of a commit. // CombinedStatusState represents the combined status of a commit.
type CombinedStatus string type CombinedStatusState string
const ( const (
// CombinedStatusPending is for when the CombinedStatus is Pending // CombinedStatusStatePending is for when the CombinedStatus is Pending
CombinedStatusPending CombinedStatus = "pending" CombinedStatusStatePending CombinedStatusState = "pending"
// CombinedStatusSuccess is for when the CombinedStatus is Success // CombinedStatusStateSuccess is for when the CombinedStatus is Success
CombinedStatusSuccess CombinedStatus = "success" CombinedStatusStateSuccess CombinedStatusState = "success"
// CombinedStatusFailure is for when the CombinedStatus is Failure // CombinedStatusStateFailure is for when the CombinedStatus is Failure
CombinedStatusFailure CombinedStatus = "failure" CombinedStatusStateFailure CombinedStatusState = "failure"
) )
func (cs CombinedStatus) String() string { func (cs CombinedStatusState) String() string {
return string(cs) return string(cs)
} }
// IsPending represents if commit status state is pending // IsPending represents if commit status state is pending
func (cs CombinedStatus) IsPending() bool { func (cs CombinedStatusState) IsPending() bool {
return cs == CombinedStatusPending return cs == CombinedStatusStatePending
} }
// IsSuccess represents if commit status state is success // IsSuccess represents if commit status state is success
func (cs CombinedStatus) IsSuccess() bool { func (cs CombinedStatusState) IsSuccess() bool {
return cs == CombinedStatusSuccess return cs == CombinedStatusStateSuccess
} }
// IsFailure represents if commit status state is failure // IsFailure represents if commit status state is failure
func (cs CombinedStatus) IsFailure() bool { func (cs CombinedStatusState) IsFailure() bool {
return cs == CombinedStatusFailure return cs == CombinedStatusStateFailure
} }

View File

@ -57,19 +57,19 @@ type CommitStatusStates []CommitStatusState //nolint
// > pending if there are no statuses or a context is pending // > pending if there are no statuses or a context is pending
// > success if the latest status for all contexts is success // > success if the latest status for all contexts is success
func (css CommitStatusStates) Merge() CombinedStatus { func (css CommitStatusStates) Merge() CombinedStatusState {
successCnt := 0 successCnt := 0
for _, state := range css { for _, state := range css {
switch { switch {
case state.IsError() || state.IsFailure(): case state.IsError() || state.IsFailure():
return CombinedStatusFailure return CombinedStatusStateFailure
case state.IsPending(): case state.IsPending():
case state.IsSuccess() || state.IsWarning(): case state.IsSuccess() || state.IsWarning():
successCnt++ successCnt++
} }
} }
if successCnt > 0 && successCnt == len(css) { if successCnt > 0 && successCnt == len(css) {
return CombinedStatusSuccess return CombinedStatusStateSuccess
} }
return CombinedStatusPending return CombinedStatusStatePending
} }

View File

@ -26,13 +26,13 @@ type CommitStatus struct {
// CombinedStatus holds the combined state of several statuses for a single commit // CombinedStatus holds the combined state of several statuses for a single commit
type CombinedStatus struct { type CombinedStatus struct {
State commitstatus.CombinedStatus `json:"state"` State commitstatus.CombinedStatusState `json:"state"`
SHA string `json:"sha"` SHA string `json:"sha"`
TotalCount int `json:"total_count"` TotalCount int `json:"total_count"`
Statuses []*CommitStatus `json:"statuses"` Statuses []*CommitStatus `json:"statuses"`
Repository *Repository `json:"repository"` Repository *Repository `json:"repository"`
CommitURL string `json:"commit_url"` CommitURL string `json:"commit_url"`
URL string `json:"url"` URL string `json:"url"`
} }
// CreateStatusOption holds the information needed to create a new CommitStatus for a Commit // CreateStatusOption holds the information needed to create a new CommitStatus for a Commit

View File

@ -75,9 +75,9 @@ func Branches(ctx *context.Context) {
} }
} }
commitStatus := make(map[string]*git_model.CommitStatusSummary, len(commitStatuses)) commitStatus := make(map[string]*git_model.CombinedStatus, len(commitStatuses))
for commitID, cs := range commitStatuses { for commitID, cs := range commitStatuses {
commitStatus[commitID] = git_model.CalcCommitStatusSummary(cs) commitStatus[commitID] = git_model.CalcCombinedStatus(cs)
} }
ctx.Data["Keyword"] = kw ctx.Data["Keyword"] = kw

View File

@ -385,7 +385,7 @@ func Diff(ctx *context.Context) {
git_model.CommitStatusesHideActionsURL(ctx, statuses) git_model.CommitStatusesHideActionsURL(ctx, statuses)
} }
ctx.Data["CommitStatus"] = git_model.CalcCommitStatusSummary(statuses) ctx.Data["CommitStatus"] = git_model.CalcCombinedStatus(statuses)
ctx.Data["CommitStatuses"] = statuses ctx.Data["CommitStatuses"] = statuses
verification := asymkey_service.ParseCommitWithSignature(ctx, commit) verification := asymkey_service.ParseCommitWithSignature(ctx, commit)

View File

@ -302,7 +302,7 @@ func prepareMergedViewPullInfo(ctx *context.Context, issue *issues_model.Issue)
if len(commitStatuses) != 0 { if len(commitStatuses) != 0 {
ctx.Data["LatestCommitStatuses"] = commitStatuses ctx.Data["LatestCommitStatuses"] = commitStatuses
ctx.Data["LatestCommitStatus"] = git_model.CalcCommitStatusSummary(commitStatuses) ctx.Data["LatestCommitStatus"] = git_model.CalcCombinedStatus(commitStatuses)
} }
} }
@ -369,7 +369,7 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
if len(commitStatuses) > 0 { if len(commitStatuses) > 0 {
ctx.Data["LatestCommitStatuses"] = commitStatuses ctx.Data["LatestCommitStatuses"] = commitStatuses
ctx.Data["LatestCommitStatus"] = git_model.CalcCommitStatusSummary(commitStatuses) ctx.Data["LatestCommitStatus"] = git_model.CalcCombinedStatus(commitStatuses)
} }
compareInfo, err := baseGitRepo.GetCompareInfo(pull.BaseRepo.RepoPath(), compareInfo, err := baseGitRepo.GetCompareInfo(pull.BaseRepo.RepoPath(),
@ -465,7 +465,7 @@ func prepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
if len(commitStatuses) > 0 { if len(commitStatuses) > 0 {
ctx.Data["LatestCommitStatuses"] = commitStatuses ctx.Data["LatestCommitStatuses"] = commitStatuses
ctx.Data["LatestCommitStatus"] = git_model.CalcCommitStatusSummary(commitStatuses) ctx.Data["LatestCommitStatus"] = git_model.CalcCombinedStatus(commitStatuses)
} }
if pb != nil && pb.EnableStatusCheck { if pb != nil && pb.EnableStatusCheck {

View File

@ -72,7 +72,7 @@ func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *repo_model
type ReleaseInfo struct { type ReleaseInfo struct {
Release *repo_model.Release Release *repo_model.Release
CommitStatus commitstatus.CombinedStatus CommitStatus commitstatus.CombinedStatusState
CommitStatuses []*git_model.CommitStatus CommitStatuses []*git_model.CommitStatus
} }
@ -136,7 +136,7 @@ func getReleaseInfos(ctx *context.Context, opts *repo_model.FindReleasesOptions)
return nil, err return nil, err
} }
info.CommitStatus = git_model.CalcCommitStatus(statuses) info.CommitStatus = git_model.CalcCombinedStatusState(statuses)
info.CommitStatuses = statuses info.CommitStatuses = statuses
} }

View File

@ -553,14 +553,14 @@ func SearchRepo(ctx *context.Context) {
ctx.SetTotalCountHeader(count) ctx.SetTotalCountHeader(count)
latestCommitStatuses, err := commitstatus_service.FindReposLastestCombinedStatuses(ctx, repos) latestCombinedStatuses, err := commitstatus_service.FindReposLastestCombinedStatuses(ctx, repos)
if err != nil { if err != nil {
log.Error("FindReposLastestCommitStatuses: %v", err) log.Error("FindReposLastestCommitStatuses: %v", err)
ctx.JSON(http.StatusInternalServerError, nil) ctx.JSON(http.StatusInternalServerError, nil)
return return
} }
if !ctx.Repo.CanRead(unit.TypeActions) { if !ctx.Repo.CanRead(unit.TypeActions) {
git_model.CommitStatusSummeriesHideActionsURL(ctx, latestCommitStatuses) git_model.CombinedStatusesHideActionsURL(ctx, latestCombinedStatuses)
} }
results := make([]*repo_service.WebSearchRepository, len(repos)) results := make([]*repo_service.WebSearchRepository, len(repos))
@ -580,9 +580,9 @@ func SearchRepo(ctx *context.Context) {
}, },
} }
if latestCommitStatuses[i] != nil { if latestCombinedStatuses[i] != nil {
results[i].LatestCommitStatus = latestCommitStatuses[i] results[i].LatestCombinedStatus = latestCombinedStatuses[i]
results[i].LocaleLatestCommitStatus = latestCommitStatuses[i].LocaleString(ctx.Locale) results[i].LocaleLatestCombinedStatus = latestCombinedStatuses[i].LocaleString(ctx.Locale)
} }
} }

View File

@ -139,7 +139,7 @@ func loadLatestCommitData(ctx *context.Context, latestCommit *git.Commit) bool {
git_model.CommitStatusesHideActionsURL(ctx, statuses) git_model.CommitStatusesHideActionsURL(ctx, statuses)
} }
ctx.Data["LatestCommitStatus"] = git_model.CalcCommitStatusSummary(statuses) ctx.Data["LatestCommitStatus"] = git_model.CalcCombinedStatus(statuses)
ctx.Data["LatestCommitStatuses"] = statuses ctx.Data["LatestCommitStatuses"] = statuses
} }

View File

@ -38,12 +38,12 @@ func ToCombinedStatus(ctx context.Context, statuses []*git_model.CommitStatus, r
return nil return nil
} }
summary := git_model.CalcCommitStatusSummary(statuses) combinedStatus := git_model.CalcCombinedStatus(statuses)
return &api.CombinedStatus{ return &api.CombinedStatus{
State: summary.State, State: combinedStatus.State,
SHA: summary.SHA, SHA: combinedStatus.SHA,
TotalCount: len(statuses), TotalCount: len(statuses),
Repository: repo, Repository: repo,
URL: summary.TargetURL, URL: combinedStatus.TargetURL,
} }
} }

View File

@ -90,7 +90,7 @@ func ParseCommitsWithStatus(ctx context.Context, oldCommits []*asymkey_model.Sig
} }
commit.Statuses = statuses commit.Statuses = statuses
commit.Status = git_model.CalcCommitStatusSummary(statuses) commit.Status = git_model.CalcCombinedStatus(statuses)
newCommits = append(newCommits, commit) newCommits = append(newCommits, commit)
} }
return newCommits, nil return newCommits, nil

View File

@ -19,7 +19,7 @@ import (
) )
// MergeRequiredContextsCommitStatus returns a commit status state for given required contexts // MergeRequiredContextsCommitStatus returns a commit status state for given required contexts
func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, requiredContexts []string) commitstatus.CombinedStatus { func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, requiredContexts []string) commitstatus.CombinedStatusState {
if len(requiredContexts) > 0 { if len(requiredContexts) > 0 {
requiredContextsGlob := make(map[string]glob.Glob, len(requiredContexts)) requiredContextsGlob := make(map[string]glob.Glob, len(requiredContexts))
for _, ctx := range requiredContexts { for _, ctx := range requiredContexts {
@ -40,18 +40,18 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus,
} }
} }
if len(requiredCommitStatuses) > 0 { if len(requiredCommitStatuses) > 0 {
return git_model.CalcCommitStatus(requiredCommitStatuses) return git_model.CalcCombinedStatusState(requiredCommitStatuses)
} }
} }
return git_model.CalcCommitStatus(commitStatuses) return git_model.CalcCombinedStatusState(commitStatuses)
} }
// IsCommitStatusContextSuccess returns true if all required status check contexts succeed. // IsCommitStatusContextSuccess returns true if all required status check contexts succeed.
func IsCommitStatusContextSuccess(commitStatuses []*git_model.CommitStatus, requiredContexts []string) bool { func IsCommitStatusContextSuccess(commitStatuses []*git_model.CommitStatus, requiredContexts []string) bool {
// If no specific context is required, require that last commit status is a success // If no specific context is required, require that last commit status is a success
if len(requiredContexts) == 0 { if len(requiredContexts) == 0 {
return git_model.CalcCommitStatus(commitStatuses) == commitstatus.CombinedStatusSuccess return git_model.CalcCombinedStatusState(commitStatuses) == commitstatus.CombinedStatusStateSuccess
} }
for _, ctx := range requiredContexts { for _, ctx := range requiredContexts {
@ -91,7 +91,7 @@ func IsPullCommitStatusPass(ctx context.Context, pr *issues_model.PullRequest) (
} }
// GetPullRequestCommitStatusState returns pull request merged commit status state // GetPullRequestCommitStatusState returns pull request merged commit status state
func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullRequest) (commitstatus.CombinedStatus, error) { func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullRequest) (commitstatus.CombinedStatusState, error) {
// Ensure HeadRepo is loaded // Ensure HeadRepo is loaded
if err := pr.LoadHeadRepo(ctx); err != nil { if err := pr.LoadHeadRepo(ctx); err != nil {
return "", errors.Wrap(err, "LoadHeadRepo") return "", errors.Wrap(err, "LoadHeadRepo")

View File

@ -49,12 +49,12 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) {
{"Build*", "Build *", "Build 2t*", "Build 1*"}, {"Build*", "Build *", "Build 2t*", "Build 1*"},
} }
testCasesExpected := []commitstatus.CombinedStatus{ testCasesExpected := []commitstatus.CombinedStatusState{
commitstatus.CombinedStatusSuccess, commitstatus.CombinedStatusStateSuccess,
commitstatus.CombinedStatusPending, commitstatus.CombinedStatusStatePending,
commitstatus.CombinedStatusFailure, commitstatus.CombinedStatusStateFailure,
commitstatus.CombinedStatusPending, commitstatus.CombinedStatusStatePending,
commitstatus.CombinedStatusSuccess, commitstatus.CombinedStatusStateSuccess,
} }
for i, commitStatuses := range testCases { for i, commitStatuses := range testCases {

View File

@ -946,13 +946,13 @@ func GetSquashMergeCommitMessages(ctx context.Context, pr *issues_model.PullRequ
} }
// GetIssuesLastCommitStatus returns a map of issue ID to the most recent commit's latest status // GetIssuesLastCommitStatus returns a map of issue ID to the most recent commit's latest status
func GetIssuesLastCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64]*git_model.CommitStatusSummary, error) { func GetIssuesLastCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64]*git_model.CombinedStatus, error) {
_, lastStatus, err := GetIssuesAllCommitStatus(ctx, issues) _, lastStatus, err := GetIssuesAllCommitStatus(ctx, issues)
return lastStatus, err return lastStatus, err
} }
// GetIssuesAllCommitStatus returns a map of issue ID to a list of all statuses for the most recent commit as well as a map of issue ID to only the commit's latest status // GetIssuesAllCommitStatus returns a map of issue ID to a list of all statuses for the most recent commit as well as a map of issue ID to only the commit's latest status
func GetIssuesAllCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64][]*git_model.CommitStatus, map[int64]*git_model.CommitStatusSummary, error) { func GetIssuesAllCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64][]*git_model.CommitStatus, map[int64]*git_model.CombinedStatus, error) {
if err := issues.LoadPullRequests(ctx); err != nil { if err := issues.LoadPullRequests(ctx); err != nil {
return nil, nil, err return nil, nil, err
} }
@ -963,7 +963,7 @@ func GetIssuesAllCommitStatus(ctx context.Context, issues issues_model.IssueList
var ( var (
gitRepos = make(map[int64]*git.Repository) gitRepos = make(map[int64]*git.Repository)
res = make(map[int64][]*git_model.CommitStatus) res = make(map[int64][]*git_model.CommitStatus)
lastRes = make(map[int64]*git_model.CommitStatusSummary) lastRes = make(map[int64]*git_model.CombinedStatus)
err error err error
) )
defer func() { defer func() {
@ -992,7 +992,7 @@ func GetIssuesAllCommitStatus(ctx context.Context, issues issues_model.IssueList
continue continue
} }
res[issue.PullRequest.ID] = statuses res[issue.PullRequest.ID] = statuses
lastRes[issue.PullRequest.ID] = git_model.CalcCommitStatusSummary(statuses) lastRes[issue.PullRequest.ID] = git_model.CalcCombinedStatus(statuses)
} }
return res, lastRes, nil return res, lastRes, nil
} }

View File

@ -47,7 +47,7 @@ func getCombinedStatusCache(repoID int64, branchName string) *combinedStatusCach
return nil return nil
} }
func updateCombinedStatusCache(repoID int64, branchName string, state commitstatus.CombinedStatus, targetURL string) error { func updateCombinedStatusCache(repoID int64, branchName string, state commitstatus.CombinedStatusState, targetURL string) error {
c := cache.GetCache() c := cache.GetCache()
bs, err := json.Marshal(combinedStatusCacheValue{ bs, err := json.Marshal(combinedStatusCacheValue{
State: string(state), State: string(state),
@ -121,13 +121,13 @@ func CreateCommitStatus(ctx context.Context, repo *repo_model.Repository, creato
} }
// FindReposLastestCombinedStatuses loading repository default branch latest combinded commit status with cache // FindReposLastestCombinedStatuses loading repository default branch latest combinded commit status with cache
func FindReposLastestCombinedStatuses(ctx context.Context, repos []*repo_model.Repository) ([]*git_model.CommitStatusSummary, error) { func FindReposLastestCombinedStatuses(ctx context.Context, repos []*repo_model.Repository) ([]*git_model.CombinedStatus, error) {
results := make([]*git_model.CommitStatusSummary, len(repos)) results := make([]*git_model.CombinedStatus, len(repos))
allCached := true allCached := true
for i, repo := range repos { for i, repo := range repos {
if cv := getCombinedStatusCache(repo.ID, repo.DefaultBranch); cv != nil { if cv := getCombinedStatusCache(repo.ID, repo.DefaultBranch); cv != nil {
results[i] = &git_model.CommitStatusSummary{ results[i] = &git_model.CombinedStatus{
State: commitstatus.CombinedStatus(cv.State), State: commitstatus.CombinedStatusState(cv.State),
TargetURL: cv.TargetURL, TargetURL: cv.TargetURL,
} }
} else { } else {
@ -189,7 +189,7 @@ func FindReposLastestCombinedStatuses(ctx context.Context, repos []*repo_model.R
for i, repo := range repos { for i, repo := range repos {
if results[i] == nil { if results[i] == nil {
results[i] = git_model.CalcCommitStatusSummary(repoToItsLatestCommitStatuses[repo.ID]) results[i] = git_model.CalcCombinedStatus(repoToItsLatestCommitStatuses[repo.ID])
if results[i] != nil { if results[i] != nil {
if err := updateCombinedStatusCache(repo.ID, repo.DefaultBranch, results[i].State, results[i].TargetURL); err != nil { if err := updateCombinedStatusCache(repo.ID, repo.DefaultBranch, results[i].State, results[i].TargetURL); err != nil {
log.Error("updateCommitStatusCache[%d:%s] failed: %v", repo.ID, repo.DefaultBranch, err) log.Error("updateCommitStatusCache[%d:%s] failed: %v", repo.ID, repo.DefaultBranch, err)

View File

@ -125,7 +125,7 @@ func (graph *Graph) LoadAndProcessCommits(ctx context.Context, repository *repo_
if err != nil { if err != nil {
log.Error("GetLatestCommitStatus: %v", err) log.Error("GetLatestCommitStatus: %v", err)
} else { } else {
c.Status = git_model.CalcCommitStatusSummary(statuses) c.Status = git_model.CalcCombinedStatus(statuses)
} }
} }
return nil return nil
@ -249,7 +249,7 @@ type Commit struct {
Commit *git.Commit Commit *git.Commit
User *user_model.User User *user_model.User
Verification *asymkey_model.CommitVerification Verification *asymkey_model.CommitVerification
Status *git_model.CommitStatusSummary Status *git_model.CombinedStatus
Flow int64 Flow int64
Row int Row int
Column int Column int

View File

@ -34,9 +34,9 @@ import (
// WebSearchRepository represents a repository returned by web search // WebSearchRepository represents a repository returned by web search
type WebSearchRepository struct { type WebSearchRepository struct {
Repository *structs.Repository `json:"repository"` Repository *structs.Repository `json:"repository"`
LatestCommitStatus *git.CommitStatusSummary `json:"latest_commit_status"` LatestCombinedStatus *git.CombinedStatus `json:"latest_commit_status"`
LocaleLatestCommitStatus string `json:"locale_latest_commit_status"` LocaleLatestCombinedStatus string `json:"locale_latest_commit_status"`
} }
// WebSearchResults results of a successful web search // WebSearchResults results of a successful web search

View File

@ -99,7 +99,7 @@ func TestPullCreate_CommitStatus(t *testing.T) {
} }
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: "user1", Name: "repo1"}) repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: "user1", Name: "repo1"})
css := unittest.AssertExistsAndLoadBean(t, &git_model.CommitStatusSummary{RepoID: repo1.ID, SHA: commitID}) css := unittest.AssertExistsAndLoadBean(t, &git_model.CombinedStatus{RepoID: repo1.ID, SHA: commitID})
assert.Equal(t, commitstatus.CommitStatusWarning, css.State) assert.Equal(t, commitstatus.CommitStatusWarning, css.State)
}) })
} }