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:
parent
0915b18157
commit
e3554b3945
@ -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 {
|
||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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")
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user