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>
This commit is contained in:
		
							parent
							
								
									48bd02e753
								
							
						
					
					
						commit
						efa9a8a6e3
					
				
					 3 changed files with 41 additions and 28 deletions
				
			
		|  | @ -325,6 +325,20 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) *git.C | |||
| 	} | ||||
| 	ctx.Data["NumCommits"] = compareInfo.Commits.Len() | ||||
| 	ctx.Data["NumFiles"] = compareInfo.NumFiles | ||||
| 
 | ||||
| 	if compareInfo.Commits.Len() != 0 { | ||||
| 		sha := compareInfo.Commits.Front().Value.(*git.Commit).ID.String() | ||||
| 		commitStatuses, err := models.GetLatestCommitStatus(ctx.Repo.Repository.ID, sha, models.ListOptions{}) | ||||
| 		if err != nil { | ||||
| 			ctx.ServerError("GetLatestCommitStatus", err) | ||||
| 			return nil | ||||
| 		} | ||||
| 		if len(commitStatuses) != 0 { | ||||
| 			ctx.Data["LatestCommitStatuses"] = commitStatuses | ||||
| 			ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(commitStatuses) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return compareInfo | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
| 	} | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| {{if $.LatestCommitStatus}} | ||||
|     {{if not $.Issue.PullRequest.HasMerged}} | ||||
|         <div class="ui top attached header"> | ||||
|             {{if eq .LatestCommitStatus.State "pending"}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checking"}} | ||||
|  | @ -14,6 +15,7 @@ | |||
|                 {{$.i18n.Tr "repo.pulls.status_checking"}} | ||||
|             {{end}} | ||||
|     	    </div> | ||||
|     {{end}} | ||||
| 
 | ||||
|     {{range $.LatestCommitStatuses}} | ||||
|         <div class="ui attached segment"> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue