diff options
author | Cirno the Strongest <1447794+CirnoT@users.noreply.github.com> | 2020-12-18 13:37:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-18 13:37:55 +0100 |
commit | efa9a8a6e308489cf5b5e0174007d78390c5f0e6 (patch) | |
tree | 945e91e4bbe71b65f96012b6011d842a855c8f54 /services | |
parent | 48bd02e753bf4bfe2d743ffed8ec05182f284ad0 (diff) | |
download | gitea-efa9a8a6e308489cf5b5e0174007d78390c5f0e6.tar.gz gitea-efa9a8a6e308489cf5b5e0174007d78390c5f0e6.zip |
Show status check for merged PRs (#13975)
* Show status check for merged PRs
* Handle PRs with no commits
* Styling
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'services')
-rw-r--r-- | services/pull/pull.go | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/services/pull/pull.go b/services/pull/pull.go index f3fb762303..23a4bf9776 100644 --- a/services/pull/pull.go +++ b/services/pull/pull.go @@ -9,6 +9,7 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" "strings" "time" @@ -641,31 +642,27 @@ func GetCommitMessages(pr *models.PullRequest) string { // GetLastCommitStatus returns the last commit status for this pull request. func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, err error) { - if err = pr.LoadHeadRepo(); err != nil { + if err = pr.LoadBaseRepo(); err != nil { return nil, err } - if pr.HeadRepo == nil { - return nil, models.ErrPullRequestHeadRepoMissing{ID: pr.ID, HeadRepoID: pr.HeadRepoID} - } - - headGitRepo, err := git.OpenRepository(pr.HeadRepo.RepoPath()) + gitRepo, err := git.OpenRepository(pr.BaseRepo.RepoPath()) if err != nil { return nil, err } - defer headGitRepo.Close() + defer gitRepo.Close() - lastCommitID, err := headGitRepo.GetBranchCommitID(pr.HeadBranch) + compareInfo, err := gitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(), pr.MergeBase, pr.GetGitRefName()) if err != nil { return nil, err } - err = pr.LoadBaseRepo() - if err != nil { - return nil, err + if compareInfo.Commits.Len() == 0 { + return nil, errors.New("pull request has no commits") } - statusList, err := models.GetLatestCommitStatus(pr.BaseRepo.ID, lastCommitID, models.ListOptions{}) + sha := compareInfo.Commits.Front().Value.(*git.Commit).ID.String() + statusList, err := models.GetLatestCommitStatus(pr.BaseRepo.ID, sha, models.ListOptions{}) if err != nil { return nil, err } |