{{if gt (len .PullReviewers) 0}} <div class="comment box"> <div class="content"> <div class="ui segment"> <h4>{{$.i18n.Tr "repo.issues.review.reviewers"}}</h4> {{range .PullReviewers}} {{ $createdStr:= TimeSinceUnix .UpdatedUnix $.Lang }} <div class="ui divider"></div> <div class="review-item"> <span class="type-icon text {{if eq .Type 1}}green {{else if eq .Type 2}}grey {{else if eq .Type 3}}red {{else}}grey{{end}}"> <span class="octicon octicon-{{.Type.Icon}}"></span> </span> {{if .Stale}} <span class="type-icon text grey"> <i class="octicon icon fa-hourglass-end"></i> </span> {{end}} <a class="ui avatar image" href="{{.Reviewer.HomeLink}}"> <img src="{{.Reviewer.RelAvatarLink}}"> </a> <span class="text grey"><a href="{{.Reviewer.HomeLink}}">{{.Reviewer.Name}}</a> {{if eq .Type 1}} {{$.i18n.Tr "repo.issues.review.approve" $createdStr | Safe}} {{else if eq .Type 2}} {{$.i18n.Tr "repo.issues.review.comment" $createdStr | Safe}} {{else if eq .Type 3}} {{$.i18n.Tr "repo.issues.review.reject" $createdStr | Safe}} {{else}} {{$.i18n.Tr "repo.issues.review.comment" $createdStr | Safe}} {{end}} </span> </div> {{end}} </div> </div> </div> {{end}} <div class="comment merge box"> <a class="avatar text {{if .Issue.PullRequest.HasMerged}}purple {{else if .Issue.IsClosed}}grey {{else if .IsPullWorkInProgress}}grey {{else if .IsFilesConflicted}}grey {{else if .IsPullRequestBroken}}red {{else if .IsBlockedByApprovals}}red {{else if .IsBlockedByRejection}}red {{else if and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}}red {{else if and .RequireSigned (not .WillSign)}}}red {{else if .Issue.PullRequest.IsChecking}}yellow {{else if .Issue.PullRequest.CanAutoMerge}}green {{else}}red{{end}}"><span class="mega-octicon octicon-git-merge"></span></a> <div class="content"> {{template "repo/pulls/status" .}} <div class="ui {{if not $.LatestCommitStatus}}top attached header{{else}}attached merge-section segment{{end}}"> {{if .Issue.PullRequest.HasMerged}} <div class="item text purple"> {{if .Issue.PullRequest.MergedCommitID}} {{$link := printf "%s/commit/%s" $.Repository.HTMLURL .Issue.PullRequest.MergedCommitID}} {{$.i18n.Tr "repo.pulls.merged_as" $link (ShortSha .Issue.PullRequest.MergedCommitID) | Safe}} {{else}} {{$.i18n.Tr "repo.pulls.has_merged"}} {{end}} </div> {{if .IsPullBranchDeletable}} <div class="ui divider"></div> <div> <a class="delete-button ui red button" href="" data-url="{{.DeleteBranchLink}}">{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</a> </div> {{end}} {{else if .Issue.IsClosed}} <div class="item text grey"> {{if .IsPullRequestBroken}} {{$.i18n.Tr "repo.pulls.cant_reopen_deleted_branch"}} {{else}} {{$.i18n.Tr "repo.pulls.reopen_to_merge"}} {{end}} </div> {{if and .IsPullBranchDeletable ( not .IsPullRequestBroken )}} <div class="ui divider"></div> <div> <a class="delete-button ui red button" href="" data-url="{{.DeleteBranchLink}}">{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</a> </div> {{end}} {{else if .IsPullFilesConflicted}} <div class="item text grey"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.files_conflicted"}} {{range .ConflictedFiles}} <div>{{.}}</div> {{end}} </div> {{else if .IsPullRequestBroken}} <div class="item text red"> <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i> {{$.i18n.Tr "repo.pulls.data_broken"}} </div> {{else if .IsPullWorkInProgress}} <div class="item text grey"> <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i> {{$.i18n.Tr "repo.pulls.cannot_merge_work_in_progress" .WorkInProgressPrefix | Str2html}} </div> {{else if .Issue.PullRequest.IsChecking}} <div class="item text yellow"> <i class="icon icon-octicon"><span class="octicon octicon-sync"></span></i> {{$.i18n.Tr "repo.pulls.is_checking"}} </div> {{else if .Issue.PullRequest.CanAutoMerge}} {{if .IsBlockedByApprovals}} <div class="item text red"> <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i> {{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}} </div> {{else if .IsBlockedByRejection}} <div class="item text red"> <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i> {{$.i18n.Tr "repo.pulls.blocked_by_rejection"}} </div> {{else if and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}} <div class="item text red"> <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i> {{$.i18n.Tr "repo.pulls.required_status_check_failed"}} </div> {{else if and .RequireSigned (not .WillSign)}} <div class="item text red"> <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i> {{$.i18n.Tr "repo.pulls.require_signed_wont_sign"}} </div> <div class="item text yellow"> <i class="icon unlock"></i> {{$.i18n.Tr (printf "repo.signing.wont_sign.%s" .WontSignReason) }} </div> {{end}} {{$notAllOverridableChecksOk := or .IsBlockedByApprovals .IsBlockedByRejection (and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess))}} {{if and (or $.IsRepoAdmin (not $notAllOverridableChecksOk)) (or (not .RequireSigned) .WillSign)}} {{if $notAllOverridableChecksOk}} <div class="item text yellow"> <i class="icon icon-octicon"><span class="octicon octicon-primitive-dot"></span></i> {{$.i18n.Tr "repo.pulls.required_status_check_administrator"}} </div> {{else}} <div class="item text green"> <i class="icon icon-octicon"><span class="octicon octicon-check"></span></i> {{$.i18n.Tr "repo.pulls.can_auto_merge_desc"}} </div> {{end}} {{if .WillSign}} <div class="item text green"> <i class="icon lock green"></i> {{$.i18n.Tr "repo.signing.will_sign" .SigningKey}} </div> {{else if .IsSigned}} <div class="item text"> <i class="icon unlock"></i> {{$.i18n.Tr (printf "repo.signing.wont_sign.%s" .WontSignReason) }} </div> {{end}} {{if and .Divergence (gt .Divergence.Behind 0)}} <div class="ui very compact branch-update grid"> <div class="row"> <div class="item text gray eleven wide left floated column"> <i class="icon icon-octicon"><span class="octicon octicon-alert"></span></i> {{$.i18n.Tr "repo.pulls.outdated_with_base_branch"}} </div> {{if .UpdateAllowed}} <div class="item text five wide right floated column"> <form action="{{.Link}}/update" method="post"> {{.CsrfTokenHtml}} <button class="ui button" data-do="update"> <span class="item text">{{$.i18n.Tr "repo.pulls.update_branch"}}</span> </button> </form> </div> {{end}} </div> </div> {{end}} {{if .AllowMerge}} {{$prUnit := .Repository.MustGetUnit $.UnitTypePullRequests}} {{$approvers := .Issue.PullRequest.GetApprovers}} {{if or $prUnit.PullRequestsConfig.AllowMerge $prUnit.PullRequestsConfig.AllowRebase $prUnit.PullRequestsConfig.AllowRebaseMerge $prUnit.PullRequestsConfig.AllowSquash}} <div class="ui divider"></div> {{if $prUnit.PullRequestsConfig.AllowMerge}} <div class="ui form merge-fields" style="display: none"> <form action="{{.Link}}/merge" method="post"> {{.CsrfTokenHtml}} <div class="field"> <input type="text" name="merge_title_field" value="{{.Issue.PullRequest.GetDefaultMergeMessage}}"> </div> <div class="field"> <textarea name="merge_message_field" rows="5" placeholder="{{$.i18n.Tr "repo.editor.commit_message_desc"}}">Reviewed-on: {{$.Issue.HTMLURL}} {{$approvers}}</textarea> </div> <button class="ui green button" type="submit" name="do" value="merge"> {{$.i18n.Tr "repo.pulls.merge_pull_request"}} </button> <button class="ui button merge-cancel"> {{$.i18n.Tr "cancel"}} </button> </form> </div> {{end}} {{if $prUnit.PullRequestsConfig.AllowRebase}} <div class="ui form rebase-fields" style="display: none"> <form action="{{.Link}}/merge" method="post"> {{.CsrfTokenHtml}} <button class="ui green button" type="submit" name="do" value="rebase"> {{$.i18n.Tr "repo.pulls.rebase_merge_pull_request"}} </button> <button class="ui button merge-cancel"> {{$.i18n.Tr "cancel"}} </button> </form> </div> {{end}} {{if $prUnit.PullRequestsConfig.AllowRebaseMerge}} <div class="ui form rebase-merge-fields" style="display: none"> <form action="{{.Link}}/merge" method="post"> {{.CsrfTokenHtml}} <div class="field"> <input type="text" name="merge_title_field" value="{{.Issue.PullRequest.GetDefaultMergeMessage}}"> </div> <div class="field"> <textarea name="merge_message_field" rows="5" placeholder="{{$.i18n.Tr "repo.editor.commit_message_desc"}}">Reviewed-on: {{$.Issue.HTMLURL}} {{$approvers}}</textarea> </div> <button class="ui green button" type="submit" name="do" value="rebase-merge"> {{$.i18n.Tr "repo.pulls.rebase_merge_commit_pull_request"}} </button> <button class="ui button merge-cancel"> {{$.i18n.Tr "cancel"}} </button> </form> </div> {{end}} {{if $prUnit.PullRequestsConfig.AllowSquash}} {{$commitMessages := .Issue.PullRequest.GetCommitMessages}} <div class="ui form squash-fields" style="display: none"> <form action="{{.Link}}/merge" method="post"> {{.CsrfTokenHtml}} <div class="field"> <input type="text" name="merge_title_field" value="{{.Issue.PullRequest.GetDefaultSquashMessage}}"> </div> <div class="field"> <textarea name="merge_message_field" rows="5" placeholder="{{$.i18n.Tr "repo.editor.commit_message_desc"}}">{{$commitMessages}}Reviewed-on: {{$.Issue.HTMLURL}} {{$approvers}}</textarea> </div> <button class="ui green button" type="submit" name="do" value="squash"> {{$.i18n.Tr "repo.pulls.squash_merge_pull_request"}} </button> <button class="ui button merge-cancel"> {{$.i18n.Tr "cancel"}} </button> </form> </div> {{end}} <div class="ui {{if $notAllOverridableChecksOk}}red{{else}}green{{end}} buttons merge-button"> <button class="ui button" data-do="{{.MergeStyle}}"> <span class="octicon octicon-git-merge"></span> <span class="button-text"> {{if eq .MergeStyle "merge"}} {{$.i18n.Tr "repo.pulls.merge_pull_request"}} {{end}} {{if eq .MergeStyle "rebase"}} {{$.i18n.Tr "repo.pulls.rebase_merge_pull_request"}} {{end}} {{if eq .MergeStyle "rebase-merge"}} {{$.i18n.Tr "repo.pulls.rebase_merge_commit_pull_request"}} {{end}} {{if eq .MergeStyle "squash"}} {{$.i18n.Tr "repo.pulls.squash_merge_pull_request"}} {{end}} </span> </button> <div class="ui dropdown icon button"> <i class="dropdown icon"></i> <div class="menu"> {{if $prUnit.PullRequestsConfig.AllowMerge}} <div class="item{{if eq .MergeStyle "merge"}} active selected{{end}}" data-do="merge">{{$.i18n.Tr "repo.pulls.merge_pull_request"}}</div> {{end}} {{if $prUnit.PullRequestsConfig.AllowRebase}} <div class="item{{if eq .MergeStyle "rebase"}} active selected{{end}}" data-do="rebase">{{$.i18n.Tr "repo.pulls.rebase_merge_pull_request"}}</div> {{end}} {{if $prUnit.PullRequestsConfig.AllowRebaseMerge}} <div class="item{{if eq .MergeStyle "rebase-merge"}} active selected{{end}}" data-do="rebase-merge">{{$.i18n.Tr "repo.pulls.rebase_merge_commit_pull_request"}}</div> {{end}} {{if $prUnit.PullRequestsConfig.AllowSquash}} <div class="item{{if eq .MergeStyle "squash"}} active selected{{end}}" data-do="squash">{{$.i18n.Tr "repo.pulls.squash_merge_pull_request"}}</div> {{end}} </div> </div> </div> {{else}} <div class="item text red"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.no_merge_desc"}} </div> <div class="item text grey"> <span class="octicon octicon-info"></span> {{$.i18n.Tr "repo.pulls.no_merge_helper"}} </div> {{end}} {{else}} <div class="item text grey"> <span class="octicon octicon-info"></span> {{$.i18n.Tr "repo.pulls.no_merge_access"}} </div> {{end}} {{end}} {{else}} {{/* Merge conflict without specific file. Suggest manual merge, only if all reviews and status checks OK. */}} {{if .IsBlockedByApprovals}} <div class="item text red"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}} </div> {{else if .IsBlockedByRejection}} <div class="item text red"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.blocked_by_rejection"}} </div> {{else if and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}} <div class="item text red"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.required_status_check_failed"}} </div> {{else if and .RequireSigned (not .WillSign)}} <div class="item text red"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.require_signed_wont_sign"}} </div> {{else}} <div class="item text red"> <span class="octicon octicon-x"></span> {{$.i18n.Tr "repo.pulls.cannot_auto_merge_desc"}} </div> <div class="item text grey"> <span class="octicon octicon-info"></span> {{$.i18n.Tr "repo.pulls.cannot_auto_merge_helper"}} </div> {{end}} {{end}} </div> </div> </div>