@@ -728,16 +728,23 @@ func GetSquashMergeCommitMessages(ctx context.Context, pr *models.PullRequest) s
728
728
729
729
// GetIssuesLastCommitStatus returns a map
730
730
func GetIssuesLastCommitStatus (ctx context.Context , issues models.IssueList ) (map [int64 ]* models.CommitStatus , error ) {
731
+ _ , lastStatus , err := GetIssuesAllCommitStatus (ctx , issues )
732
+ return lastStatus , err
733
+ }
734
+
735
+ // GetIssuesAllCommitStatus returns a map
736
+ func GetIssuesAllCommitStatus (ctx context.Context , issues models.IssueList ) (map [int64 ][]* models.CommitStatus , map [int64 ]* models.CommitStatus , error ) {
731
737
if err := issues .LoadPullRequests (); err != nil {
732
- return nil , err
738
+ return nil , nil , err
733
739
}
734
740
if _ , err := issues .LoadRepositories (); err != nil {
735
- return nil , err
741
+ return nil , nil , err
736
742
}
737
743
738
744
var (
739
745
gitRepos = make (map [int64 ]* git.Repository )
740
- res = make (map [int64 ]* models.CommitStatus )
746
+ res = make (map [int64 ][]* models.CommitStatus )
747
+ lastRes = make (map [int64 ]* models.CommitStatus )
741
748
err error
742
749
)
743
750
defer func () {
@@ -760,28 +767,33 @@ func GetIssuesLastCommitStatus(ctx context.Context, issues models.IssueList) (ma
760
767
gitRepos [issue .RepoID ] = gitRepo
761
768
}
762
769
763
- status , err := getLastCommitStatus (gitRepo , issue .PullRequest )
770
+ statuses , lastStatus , err := getAllCommitStatus (gitRepo , issue .PullRequest )
764
771
if err != nil {
765
- log .Error ("getLastCommitStatus : cant get last commit of pull [%d]: %v" , issue .PullRequest .ID , err )
772
+ log .Error ("getAllCommitStatus : cant get commit statuses of pull [%d]: %v" , issue .PullRequest .ID , err )
766
773
continue
767
774
}
768
- res [issue .PullRequest .ID ] = status
775
+ res [issue .PullRequest .ID ] = statuses
776
+ lastRes [issue .PullRequest .ID ] = lastStatus
769
777
}
770
- return res , nil
778
+ return res , lastRes , nil
771
779
}
772
780
773
781
// getLastCommitStatus get pr's last commit status. PR's last commit status is the head commit id's last commit status
774
782
func getLastCommitStatus (gitRepo * git.Repository , pr * models.PullRequest ) (status * models.CommitStatus , err error ) {
775
- sha , err := gitRepo .GetRefCommitID (pr .GetGitRefName ())
776
- if err != nil {
777
- return nil , err
778
- }
783
+ _ , lastStatus , err := getAllCommitStatus (gitRepo , pr )
784
+ return lastStatus , err
785
+ }
779
786
780
- statusList , _ , err := models .GetLatestCommitStatus (pr .BaseRepo .ID , sha , db.ListOptions {})
781
- if err != nil {
782
- return nil , err
787
+ // getAllCommitStatus get pr's commit statuses.
788
+ func getAllCommitStatus (gitRepo * git.Repository , pr * models.PullRequest ) (statuses []* models.CommitStatus , lastStatus * models.CommitStatus , err error ) {
789
+ sha , shaErr := gitRepo .GetRefCommitID (pr .GetGitRefName ())
790
+ if shaErr != nil {
791
+ return nil , nil , shaErr
783
792
}
784
- return models .CalcCommitStatus (statusList ), nil
793
+
794
+ statuses , _ , err = models .GetLatestCommitStatus (pr .BaseRepo .ID , sha , db.ListOptions {})
795
+ lastStatus = models .CalcCommitStatus (statuses )
796
+ return statuses , lastStatus , err
785
797
}
786
798
787
799
// IsHeadEqualWithBranch returns if the commits of branchName are available in pull request head
0 commit comments