{{if or .PullReviewers .OriginalReviews }} <div class="comment box"> <div class="content"> <div class="ui segment"> <h4>{{$.i18n.Tr "repo.issues.review.reviewers"}}</h4> {{range .PullReviewers}} {{ $createdStr:= TimeSinceUnix .Review.UpdatedUnix $.Lang }} <div class="ui divider"></div> <div class="review-item"> <div class="review-item-left"> {{if .User}} <a href="{{.User.HomeLink}}"> {{avatar .User}} </a> {{end}} <span> {{if .User}} <a href="{{.User.HomeLink}}">{{.User.GetDisplayName}}</a> {{else if .Team}} <span class="ui text">{{$.Issue.Repo.OwnerName}}/{{.Team.Name}}</span> {{end}} {{if eq .Review.Type 1}} {{$.i18n.Tr "repo.issues.review.approve" $createdStr | Safe}} {{else if eq .Review.Type 2}} {{$.i18n.Tr "repo.issues.review.comment" $createdStr | Safe}} {{else if eq .Review.Type 3}} {{$.i18n.Tr "repo.issues.review.reject" $createdStr | Safe}} {{else if eq .Review.Type 4}} {{$.i18n.Tr "repo.issues.review.wait" $createdStr | Safe}} {{else}} {{$.i18n.Tr "repo.issues.review.comment" $createdStr | Safe}} {{end}} </span> </div> <div class="review-item-right"> {{if .Review.Stale}} <span class="ui poping up type-icon text grey" data-content="{{$.i18n.Tr "repo.issues.is_stale"}}"> {{svg "octicon-hourglass" 16 "icon"}} </span> {{end}} {{if (and $.Permission.IsAdmin (or (eq .Review.Type 1) (eq .Review.Type 3)) (not $.Issue.IsClosed))}} <a href="#" class="ui muted poping up icon dismiss-review-btn" data-review-id="dismiss-review-{{.Review.ID}}" data-content="{{$.i18n.Tr "repo.issues.dismiss_review"}}"> {{svg "octicon-x" 16}} </a> <div class="ui small modal" id="dismiss-review-modal"> <div class="header"> {{$.i18n.Tr "repo.issues.dismiss_review"}} </div> <div class="content"> <div class="ui warning message text left"> {{$.i18n.Tr "repo.issues.dismiss_review_warning"}} </div> <form class="ui form dismiss-review-form" id="dismiss-review-{{.Review.ID}}" action="{{$.RepoLink}}/issues/dismiss_review" method="post"> {{$.CsrfTokenHtml}} <input type="hidden" name="review_id" value="{{.Review.ID}}"> <div class="field"> <label for="message">{{$.i18n.Tr "action.review_dismissed_reason"}}</label> <input id="message" name="message"> </div> <div class="text right actions"> <div class="ui cancel button">{{$.i18n.Tr "settings.cancel"}}</div> <button class="ui red button" type="submit">{{$.i18n.Tr "ok"}}</button> </div> </form> </div> </div> {{end}} <span class="type-icon text {{if eq .Review.Type 1}}green {{- else if eq .Review.Type 2}}grey {{- else if eq .Review.Type 3}}red {{- else if eq .Review.Type 4}}yellow {{else}}grey{{end}}"> {{if .CanChange }} <a href="#" class="ui poping up icon re-request-review {{if .Checked}}checked{{end}}" data-issue-id="{{$.Issue.ID}}" data-content="{{if .Checked}} {{$.i18n.Tr "repo.issues.remove_request_review"}} {{else}} {{$.i18n.Tr "repo.issues.re_request_review"}} {{end}}" data-id="{{.ItemID}}" data-update-url="{{$.RepoLink}}/issues/request_review"> {{if .Checked}} {{svg "octicon-trash"}} {{else}} {{svg "octicon-sync"}} {{end}} </a> {{end}} {{svg (printf "octicon-%s" .Review.Type.Icon)}} </span> </div> </div> {{end}} {{range .OriginalReviews}} {{ $createdStr:= TimeSinceUnix .UpdatedUnix $.Lang }} <div class="ui divider"></div> <div class="review-item"> <div class="review-item-left"> <a href="{{$.Repository.OriginalURL}}" class="ui poping up" data-content="{{$.i18n.Tr "repo.migrated_from_fake" $.Repository.GetOriginalURLHostname | Safe }}"> <span class="text black "> {{svg (MigrationIcon $.Repository.GetOriginalURLHostname)}} {{ .OriginalAuthor }} </span> </a> </div> <div class="review-item-right"> <span class="type-icon text {{if eq .Type 1}}green {{- else if eq .Type 2}}grey {{- else if eq .Type 3}}red {{- else if eq .Type 4}}yellow {{else}}grey{{end}}"> {{svg (printf "octicon-%s" .Type.Icon)}} </span> </div> </div> {{end}} </div> </div> </div> {{end}} <div class="timeline-item comment merge box"> <a class="timeline-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 .IsBlockedByOfficialReviewRequests}}red {{- else if .IsBlockedByOutdatedBranch}}red {{- else if .IsBlockedByChangedProtectedFiles}}red {{- else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsFailure .RequiredStatusCheckState.IsError)}}red {{- else if and .EnableStatusCheck (or (not $.LatestCommitStatus) .RequiredStatusCheckState.IsPending .RequiredStatusCheckState.IsWarning)}}yellow {{- else if and .AllowMerge .RequireSigned (not .WillSign)}}red {{- else if .Issue.PullRequest.IsChecking}}yellow {{- else if .Issue.PullRequest.IsEmpty}}grey {{- else if .Issue.PullRequest.CanAutoMerge}}green {{- else}}red{{end}}">{{svg "octicon-git-merge" 32}}</a> <div class="content"> {{template "repo/pulls/status" .}} {{$canAutoMerge := false}} <div class="ui attached merge-section segment {{if not $.LatestCommitStatus}}no-header{{end}}"> {{if .Issue.PullRequest.HasMerged}} <div class="item text"> {{if .Issue.PullRequest.MergedCommitID}} {{$link := printf "%s/commit/%s" $.Repository.HTMLURL .Issue.PullRequest.MergedCommitID}} {{if eq $.Issue.PullRequest.Status 3}} {{$.i18n.Tr "repo.pulls.manually_merged_as" $link (ShortSha .Issue.PullRequest.MergedCommitID) | Safe}} {{else}} {{$.i18n.Tr "repo.pulls.merged_as" $link (ShortSha .Issue.PullRequest.MergedCommitID) | Safe}} {{end}} {{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"> {{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"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.files_conflicted"}} {{range .ConflictedFiles}} <div>{{.}}</div> {{end}} </div> {{else if .IsPullRequestBroken}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.data_broken"}} </div> {{else if .IsPullWorkInProgress}} <div class="item toggle-wip df ac sb" data-title="{{.Issue.Title}}" data-wip-prefix="{{(.WorkInProgressPrefix|Escape)}}" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/title"> <div> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.cannot_merge_work_in_progress" }} </div> <div> {{if or .HasIssuesOrPullsWritePermission .IsIssuePoster}} <button class="ui compact button"> {{$.i18n.Tr "repo.pulls.remove_prefix" (.WorkInProgressPrefix|Escape) | Safe}} </button> {{end}} </div> </div> {{else if .Issue.PullRequest.IsChecking}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-sync"}}</i> {{$.i18n.Tr "repo.pulls.is_checking"}} </div> {{else if .Issue.PullRequest.IsEmpty}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-alert" 16}}</i> {{$.i18n.Tr "repo.pulls.is_empty"}} </div> {{else if .Issue.PullRequest.CanAutoMerge}} {{if .IsBlockedByApprovals}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}} </div> {{else if .IsBlockedByRejection}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.blocked_by_rejection"}} </div> {{else if .IsBlockedByOfficialReviewRequests}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.blocked_by_official_review_requests"}} </div> {{else if .IsBlockedByOutdatedBranch}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.blocked_by_outdated_branch"}} </div> {{else if .IsBlockedByChangedProtectedFiles}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> {{$.i18n.Tr (TrN $.i18n.Lang $.ChangedProtectedFilesNum "repo.pulls.blocked_by_changed_protected_files_1" "repo.pulls.blocked_by_changed_protected_files_n") | Safe }} <div class="ui ordered list"> {{range .ChangedProtectedFiles}} <div data-value="-" class="item">{{.}}</div> {{end}} </div> </div> {{else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsError .RequiredStatusCheckState.IsFailure)}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.required_status_check_failed"}} </div> {{else if and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.required_status_check_missing"}} </div> {{else if and .AllowMerge .RequireSigned (not .WillSign)}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.require_signed_wont_sign"}} </div> <div class="item"> <i class="icon unlock"></i> {{$.i18n.Tr (printf "repo.signing.wont_sign.%s" .WontSignReason) }} </div> {{end}} {{$notAllOverridableChecksOk := or .IsBlockedByApprovals .IsBlockedByRejection .IsBlockedByOfficialReviewRequests .IsBlockedByOutdatedBranch .IsBlockedByChangedProtectedFiles (and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess))}} {{if and (or $.IsRepoAdmin (not $notAllOverridableChecksOk)) (or (not .AllowMerge) (not .RequireSigned) .WillSign)}} {{if $notAllOverridableChecksOk}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-dot-fill"}}</i> {{$.i18n.Tr "repo.pulls.required_status_check_administrator"}} </div> {{else}} <div class="item"> <i class="icon icon-octicon">{{svg "octicon-check"}}</i> {{$.i18n.Tr "repo.pulls.can_auto_merge_desc"}} </div> {{end}} {{if .WillSign}} <div class="item"> <i class="icon lock green"></i> {{$.i18n.Tr "repo.signing.will_sign" .SigningKey}} </div> {{else if .IsSigned}} <div class="item"> <i class="icon unlock"></i> {{$.i18n.Tr (printf "repo.signing.wont_sign.%s" .WontSignReason) }} </div> {{end}} {{end}} {{$canAutoMerge = true}} {{if (gt .Issue.PullRequest.CommitsBehind 0)}} <div class="ui divider"></div> <div class="item item-section"> <div class="item-section-left"> <i class="icon icon-octicon">{{svg "octicon-alert"}}</i> {{$.i18n.Tr "repo.pulls.outdated_with_base_branch"}} </div> <div class="item-section-right"> {{if and .UpdateAllowed .UpdateByRebaseAllowed }} <div class="dib"> <div class="ui buttons update-button"> <button class="ui button" data-do="{{.Link}}/update" data-redirect="{{.Link}}"> <span class="button-text"> {{$.i18n.Tr "repo.pulls.update_branch"}} </span> </button> <div class="ui dropdown icon button no-text"> {{svg "octicon-triangle-down" 14 "dropdown icon"}} <div class="menu"> <div class="item active selected" data-do="{{.Link}}/update">{{$.i18n.Tr "repo.pulls.update_branch"}}</div> <div class="item" data-do="{{.Link}}/update?style=rebase">{{$.i18n.Tr "repo.pulls.update_branch_rebase"}}</div> </div> </div> </div> </div> {{end}} {{if and .UpdateAllowed (not .UpdateByRebaseAllowed)}} <form action="{{.Link}}/update" method="post" class="ui update-branch-form"> {{.CsrfTokenHtml}} <button class="ui compact button" data-do="update"> <span class="ui text">{{$.i18n.Tr "repo.pulls.update_branch"}}</span> </button> </form> {{end}} </div> </div> {{end}} {{if and (or $.IsRepoAdmin (not $notAllOverridableChecksOk)) (or (not .AllowMerge) (not .RequireSigned) .WillSign)}} {{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> {{if .IsPullBranchDeletable}} <div class="ui checkbox ml-2"> <input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}> <label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label> </div> {{end}} </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> {{if .IsPullBranchDeletable}} <div class="ui checkbox ml-2"> <input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}> <label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label> </div> {{end}} </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> {{if .IsPullBranchDeletable}} <div class="ui checkbox ml-2"> <input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}> <label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label> </div> {{end}} </form> </div> {{end}} {{if $prUnit.PullRequestsConfig.AllowSquash}} <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"}}">{{.GetCommitMessages}}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> {{if .IsPullBranchDeletable}} <div class="ui checkbox ml-2"> <input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}> <label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label> </div> {{end}} </form> </div> {{end}} {{if and $prUnit.PullRequestsConfig.AllowManualMerge $.IsRepoAdmin}} <div class="ui form manually-merged-fields" style="display: none"> <form action="{{.Link}}/merge" method="post"> {{.CsrfTokenHtml}} <div class="field"> <input type="text" name="merge_commit_id" placeholder="{{$.i18n.Tr "repo.pulls.merge_commit_id"}}"> </div> <button class="ui red button" type="submit" name="do" value="manually-merged"> {{$.i18n.Tr "repo.pulls.merge_manually"}} </button> <button class="ui button merge-cancel"> {{$.i18n.Tr "cancel"}} </button> {{if .IsPullBranchDeletable}} <div class="ui checkbox ml-2"> <input name="delete_branch_after_merge" type="checkbox" {{if $prUnit.PullRequestsConfig.DefaultDeleteBranchAfterMerge}}checked{{end}}> <label>{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</label> </div> {{end}} </form> </div> {{end}} <div class="dib"> <div class="ui {{if $notAllOverridableChecksOk}}red{{else}}green{{end}} buttons merge-button"> <button class="ui button" data-do="{{.MergeStyle}}"> {{svg "octicon-git-merge"}} <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}} {{if eq .MergeStyle "manually-merged"}} {{$.i18n.Tr "repo.pulls.merge_manually"}} {{end}} </span> </button> {{if gt $prUnit.PullRequestsConfig.AllowedMergeStyleCount 1}} <div class="ui dropdown icon button no-text"> {{svg "octicon-triangle-down" 14 "dropdown icon"}} <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}} {{if and $prUnit.PullRequestsConfig.AllowManualMerge $.IsRepoAdmin}} <div class="item{{if eq .MergeStyle "manually-merged"}} active selected{{end}}" data-do="manually-merged">{{$.i18n.Tr "repo.pulls.merge_manually"}}</div> {{end}} </div> </div> {{end}} </div> </div> <div class="instruct-toggle ml-3"> {{$.i18n.Tr "repo.pulls.merge_instruction_hint" | Safe}} </div> <div class="instruct-content" style="display:none"> <div class="ui divider"></div> <div><h3 class="di">{{$.i18n.Tr "step1"}} </h3>{{$.i18n.Tr "repo.pulls.merge_instruction_step1_desc"}}</div> <div class="ui secondary segment"> {{if eq .Issue.PullRequest.Flow 0}} <div>git checkout -b {{if ne .Issue.PullRequest.HeadRepo.ID .Issue.PullRequest.BaseRepo.ID}}{{.Issue.PullRequest.HeadRepo.OwnerName}}-{{end}}{{.Issue.PullRequest.HeadBranch}} {{.Issue.PullRequest.BaseBranch}}</div> <div>git pull {{if ne .Issue.PullRequest.HeadRepo.ID .Issue.PullRequest.BaseRepo.ID}}{{.Issue.PullRequest.HeadRepo.HTMLURL}}{{else}}origin{{end}} {{.Issue.PullRequest.HeadBranch}}</div> {{else}} <div>git fetch origin {{.Issue.PullRequest.GetGitRefName}}:{{.Issue.PullRequest.HeadBranch}}</div> {{end}} </div> <div><h3 class="di">{{$.i18n.Tr "step2"}} </h3>{{$.i18n.Tr "repo.pulls.merge_instruction_step2_desc"}}</div> <div class="ui secondary segment"> <div>git checkout {{.Issue.PullRequest.BaseBranch}}</div> <div>git merge --no-ff {{if ne .Issue.PullRequest.HeadRepo.ID .Issue.PullRequest.BaseRepo.ID}}{{.Issue.PullRequest.HeadRepo.OwnerName}}-{{end}}{{.Issue.PullRequest.HeadBranch}}</div> <div>git push origin {{.Issue.PullRequest.BaseBranch}}</div> </div> </div> {{else}} <div class="ui divider"></div> <div class="item text red"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.no_merge_desc"}} </div> <div class="item"> {{svg "octicon-info"}} {{$.i18n.Tr "repo.pulls.no_merge_helper"}} </div> {{end}} {{else}} <div class="ui divider"></div> <div class="item"> {{svg "octicon-info"}} {{$.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"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}} </div> {{else if .IsBlockedByRejection}} <div class="item text red"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.blocked_by_rejection"}} </div> {{else if .IsBlockedByOfficialReviewRequests}} <div class="item text red"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.blocked_by_official_review_requests"}} </div> {{else if .IsBlockedByOutdatedBranch}} <div class="item text red"> <i class="icon icon-octicon">{{svg "octicon-x"}}</i> {{$.i18n.Tr "repo.pulls.blocked_by_outdated_branch"}} </div> {{else if .IsBlockedByChangedProtectedFiles}} <div class="item text red"> <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> {{$.i18n.Tr (TrN $.i18n.Lang $.ChangedProtectedFilesNum "repo.pulls.blocked_by_changed_protected_files_1" "repo.pulls.blocked_by_changed_protected_files_n") | Safe }} <div class="ui ordered list"> {{range .ChangedProtectedFiles}} <div data-value="-" class="item">{{.}}</div> {{end}} </div> </div> {{else if and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}} <div class="item text red"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.required_status_check_failed"}} </div> {{else if and .RequireSigned (not .WillSign)}} <div class="item text red"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.require_signed_wont_sign"}} </div> {{else}} <div class="item text red"> {{svg "octicon-x"}} {{$.i18n.Tr "repo.pulls.cannot_auto_merge_desc"}} </div> <div class="item"> {{svg "octicon-info"}} {{$.i18n.Tr "repo.pulls.cannot_auto_merge_helper"}} </div> {{end}} {{end}} {{if and (gt .Issue.PullRequest.CommitsBehind 0) (not .Issue.IsClosed) (not .Issue.PullRequest.IsChecking) (not .IsPullFilesConflicted) (not .IsPullRequestBroken) (not $canAutoMerge)}} <div class="item df ac sb"> <div> <i class="icon icon-octicon">{{svg "octicon-alert"}}</i> {{$.i18n.Tr "repo.pulls.outdated_with_base_branch"}} </div> <div> {{if and .UpdateAllowed .UpdateByRebaseAllowed }} <div class="dib"> <div class="ui buttons update-button"> <button class="ui button" data-do="{{.Link}}/update" data-redirect="{{.Link}}"> <span class="button-text"> {{$.i18n.Tr "repo.pulls.update_branch"}} </span> </button> <div class="ui dropdown icon button no-text"> {{svg "octicon-triangle-down" 14 "dropdown icon"}} <div class="menu"> <div class="item active selected" data-do="{{.Link}}/update">{{$.i18n.Tr "repo.pulls.update_branch"}}</div> <div class="item" data-do="{{.Link}}/update?style=rebase">{{$.i18n.Tr "repo.pulls.update_branch_rebase"}}</div> </div> </div> </div> </div> {{end}} {{if and .UpdateAllowed (not .UpdateByRebaseAllowed)}} <form action="{{.Link}}/update" method="post"> {{.CsrfTokenHtml}} <button class="ui compact button" data-do="update"> <span class="ui text">{{$.i18n.Tr "repo.pulls.update_branch"}}</span> </button> </form> {{end}} </div> </div> {{end}} {{if $.StillCanManualMerge}} <div class="ui divider"></div> <div class="ui form manually-merged-fields" style="display: none"> <form action="{{.Link}}/merge" method="post"> {{.CsrfTokenHtml}} <div class="field"> <input type="text" name="merge_commit_id" placeholder="{{$.i18n.Tr "repo.pulls.merge_commit_id"}}"> </div> <button class="ui red button" type="submit" name="do" value="manually-merged"> {{$.i18n.Tr "repo.pulls.merge_manually"}} </button> <button class="ui button merge-cancel"> {{$.i18n.Tr "cancel"}} </button> </form> </div> <div class="ui red buttons merge-button"> <button class="ui button" data-do="manually-merged"> {{$.i18n.Tr "repo.pulls.merge_manually"}} </button> </div> {{end}} </div> </div> </div>