mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 07:57:27 -05: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:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						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>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user