mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-24 17:14:30 +02:00 
			
		
		
		
	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
					
				| @ -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,19 +1,21 @@ | ||||
| {{if $.LatestCommitStatus}} | ||||
|     <div class="ui top attached header"> | ||||
|          {{if eq .LatestCommitStatus.State "pending"}} | ||||
|             {{$.i18n.Tr "repo.pulls.status_checking"}} | ||||
|         {{else if eq .LatestCommitStatus.State "success"}} | ||||
|             {{$.i18n.Tr "repo.pulls.status_checks_success"}} | ||||
|         {{else if eq .LatestCommitStatus.State "warning"}} | ||||
|             {{$.i18n.Tr "repo.pulls.status_checks_warning"}} | ||||
|         {{else if eq .LatestCommitStatus.State "failure"}} | ||||
|             {{$.i18n.Tr "repo.pulls.status_checks_failure"}} | ||||
|         {{else if eq .LatestCommitStatus.State "error"}} | ||||
|             {{$.i18n.Tr "repo.pulls.status_checks_error"}} | ||||
|         {{else}} | ||||
|             {{$.i18n.Tr "repo.pulls.status_checking"}} | ||||
|         {{end}} | ||||
|     </div> | ||||
|     {{if not $.Issue.PullRequest.HasMerged}} | ||||
|         <div class="ui top attached header"> | ||||
|             {{if eq .LatestCommitStatus.State "pending"}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checking"}} | ||||
|             {{else if eq .LatestCommitStatus.State "success"}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checks_success"}} | ||||
|             {{else if eq .LatestCommitStatus.State "warning"}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checks_warning"}} | ||||
|             {{else if eq .LatestCommitStatus.State "failure"}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checks_failure"}} | ||||
|             {{else if eq .LatestCommitStatus.State "error"}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checks_error"}} | ||||
|             {{else}} | ||||
|                 {{$.i18n.Tr "repo.pulls.status_checking"}} | ||||
|             {{end}} | ||||
|     	    </div> | ||||
|     {{end}} | ||||
| 
 | ||||
|     {{range $.LatestCommitStatuses}} | ||||
|         <div class="ui attached segment"> | ||||
| @ -21,7 +23,7 @@ | ||||
|             <span class="ui">{{.Context}} <span class="text grey">{{.Description}}</span></span> | ||||
|             <div class="ui right"> | ||||
|                 {{if $.is_context_required}} | ||||
|                     {{if (call $.is_context_required .Context)}}<div class="ui label">{{$.i18n.Tr "repo.pulls.status_checks_requested"}}</div>{{end}}  | ||||
|                     {{if (call $.is_context_required .Context)}}<div class="ui label">{{$.i18n.Tr "repo.pulls.status_checks_requested"}}</div>{{end}} | ||||
|                 {{end}} | ||||
|                 <span class="ui">{{if .TargetURL}}<a href="{{.TargetURL}}">{{$.i18n.Tr "repo.pulls.status_checks_details"}}</a>{{end}}</span> | ||||
|             </div> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user