2020-10-14 15:11:11 +03:00
{{ if or .PullReviewers .OriginalReviews }}
2018-11-22 16:17:36 +03:00
<div class="comment box">
<div class="content">
<div class="ui segment">
<h4> {{ $ .i18n .Tr "repo.issues.review.reviewers" }} </h4>
2019-12-04 04:08:56 +03:00
{{ range .PullReviewers }}
2022-02-08 06:02:30 +03:00
{{ $ createdStr : = TimeSinceUnix .Review .UpdatedUnix $ .i18n .Lang }}
2018-11-22 16:17:36 +03:00
<div class="ui divider"></div>
<div class="review-item">
2020-06-15 10:37:00 +03:00
<div class="review-item-left">
2020-10-12 22:55:13 +03:00
{{ if .User }}
2020-12-03 21:46:11 +03:00
<a href=" {{ .User .HomeLink }} ">
{{ avatar .User }}
2020-10-12 22:55:13 +03:00
</a>
{{ end }}
2021-05-27 23:02:04 +03:00
<span>
2020-10-12 22:55:13 +03:00
{{ if .User }}
2020-11-04 12:11:19 +03:00
<a href=" {{ .User .HomeLink }} "> {{ .User .GetDisplayName }} </a>
2020-10-12 22:55:13 +03:00
{{ else if .Team }}
<span class="ui text"> {{ $ .Issue .Repo .OwnerName }} / {{ .Team .Name }} </span>
{{ end }}
{{ if eq .Review .Type 1 }}
2020-06-15 10:37:00 +03:00
{{ $ .i18n .Tr "repo.issues.review.approve" $ createdStr | Safe }}
2020-10-12 22:55:13 +03:00
{{ else if eq .Review .Type 2 }}
2020-06-15 10:37:00 +03:00
{{ $ .i18n .Tr "repo.issues.review.comment" $ createdStr | Safe }}
2020-10-12 22:55:13 +03:00
{{ else if eq .Review .Type 3 }}
2020-06-15 10:37:00 +03:00
{{ $ .i18n .Tr "repo.issues.review.reject" $ createdStr | Safe }}
2020-10-12 22:55:13 +03:00
{{ else if eq .Review .Type 4 }}
2020-06-15 10:37:00 +03:00
{{ $ .i18n .Tr "repo.issues.review.wait" $ createdStr | Safe }}
{{ else }}
{{ $ .i18n .Tr "repo.issues.review.comment" $ createdStr | Safe }}
2020-04-06 19:33:34 +03:00
{{ end }}
2020-06-15 10:37:00 +03:00
</span>
</div>
<div class="review-item-right">
2020-10-12 22:55:13 +03:00
{{ if .Review .Stale }}
2021-11-18 06:26:50 +03:00
<span class="ui tooltip type-icon text grey" data-content=" {{ $ .i18n .Tr "repo.issues.is_stale" }} ">
2021-05-23 00:29:46 +03:00
{{ svg "octicon-hourglass" 1 6 "icon" }}
2021-02-11 20:32:25 +03:00
</span>
{{ end }}
{{ if ( and $ .Permission .IsAdmin ( or ( eq .Review .Type 1 ) ( eq .Review .Type 3 ) ) ( not $ .Issue .IsClosed ) ) }}
2021-11-18 06:26:50 +03:00
<a href="#" class="ui muted tooltip icon dismiss-review-btn" data-review-id="dismiss-review- {{ .Review .ID }} " data-content=" {{ $ .i18n .Tr "repo.issues.dismiss_review" }} ">
2021-02-11 20:32:25 +03:00
{{ svg "octicon-x" 1 6 }}
</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>
2020-04-06 19:33:34 +03:00
{{ end }}
2020-10-12 22:55:13 +03:00
<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
2020-06-15 10:37:00 +03:00
{{ else }} grey {{ end }} ">
2020-04-06 19:33:34 +03:00
2020-10-12 22:55:13 +03:00
{{ if .CanChange }}
2021-11-18 06:26:50 +03:00
<a href="#" class="ui tooltip 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">
2021-03-22 07:04:19 +03:00
{{ if .Checked }} {{ svg "octicon-trash" }} {{ else }} {{ svg "octicon-sync" }} {{ end }}
2020-06-15 10:37:00 +03:00
</a>
{{ end }}
2020-10-12 22:55:13 +03:00
{{ svg ( printf "octicon-%s" .Review .Type .Icon ) }}
2020-06-15 10:37:00 +03:00
</span>
</div>
2018-11-22 16:17:36 +03:00
</div>
{{ end }}
2020-10-14 15:11:11 +03:00
{{ range .OriginalReviews }}
2022-02-08 06:02:30 +03:00
{{ $ createdStr : = TimeSinceUnix .UpdatedUnix $ .i18n .Lang }}
2020-10-14 15:11:11 +03:00
<div class="ui divider"></div>
<div class="review-item">
<div class="review-item-left">
2021-11-18 06:26:50 +03:00
<a href=" {{ $ .Repository .OriginalURL }} " class="ui tooltip" data-content=" {{ $ .i18n .Tr "repo.migrated_from_fake" ( $ .Repository .GetOriginalURLHostname | Escape ) | Safe }} ">
2021-09-18 19:22:51 +03:00
<span class="text black ">
{{ svg ( MigrationIcon $ .Repository .GetOriginalURLHostname ) }}
{{ .OriginalAuthor }}
</span>
</a>
2020-10-14 15:11:11 +03:00
</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 }}
2018-11-22 16:17:36 +03:00
</div>
</div>
</div>
{{ end }}
2020-04-11 01:01:41 +03:00
<div class="timeline-item comment merge box">
<a class="timeline-avatar text {{ if .Issue .PullRequest .HasMerged }} purple
2020-04-03 08:12:42 +03:00
{{ - 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
2020-11-28 22:30:46 +03:00
{{ - else if .IsBlockedByOfficialReviewRequests }} red
2020-04-17 04:00:36 +03:00
{{ - else if .IsBlockedByOutdatedBranch }} red
2020-10-13 21:50:57 +03:00
{{ - else if .IsBlockedByChangedProtectedFiles }} red
2020-04-03 08:12:42 +03:00
{{ - else if and .EnableStatusCheck ( or .RequiredStatusCheckState .IsFailure .RequiredStatusCheckState .IsError ) }} red
2020-04-15 23:35:18 +03:00
{{ - else if and .EnableStatusCheck ( or ( not $ .LatestCommitStatus ) .RequiredStatusCheckState .IsPending .RequiredStatusCheckState .IsWarning ) }} yellow
2020-08-24 00:59:41 +03:00
{{ - else if and .AllowMerge .RequireSigned ( not .WillSign ) }} red
2020-04-03 08:12:42 +03:00
{{ - else if .Issue .PullRequest .IsChecking }} yellow
2021-03-04 06:41:23 +03:00
{{ - else if .Issue .PullRequest .IsEmpty }} grey
2020-04-03 08:12:42 +03:00
{{ - else if .Issue .PullRequest .CanAutoMerge }} green
{{ - else }} red {{ end }} "> {{ svg "octicon-git-merge" 3 2 }} </a>
2017-03-17 08:57:43 +03:00
<div class="content">
2019-06-30 10:57:59 +03:00
{{ template "repo/pulls/status" . }}
2020-06-13 21:49:59 +03:00
{{ $ canAutoMerge : = false }}
2020-05-25 22:08:06 +03:00
<div class="ui attached merge-section segment {{ if not $ .LatestCommitStatus }} no-header {{ end }} ">
2017-03-17 08:57:43 +03:00
{{ if .Issue .PullRequest .HasMerged }}
2020-11-15 23:58:16 +03:00
<div class="item text">
2019-09-03 09:29:36 +03:00
{{ if .Issue .PullRequest .MergedCommitID }}
2021-11-16 21:18:25 +03:00
{{ $ link : = printf "%s/commit/%s" $ .Repository .HTMLURL ( .Issue .PullRequest .MergedCommitID | PathEscape ) }}
2021-03-04 06:41:23 +03:00
{{ if eq $ .Issue .PullRequest .Status 3 }}
2021-11-16 21:18:25 +03:00
{{ $ .i18n .Tr "repo.pulls.manually_merged_as" ( $ link | Escape ) ( ShortSha .Issue .PullRequest .MergedCommitID ) | Safe }}
2021-03-04 06:41:23 +03:00
{{ else }}
2021-11-16 21:18:25 +03:00
{{ $ .i18n .Tr "repo.pulls.merged_as" ( $ link | Escape ) ( ShortSha .Issue .PullRequest .MergedCommitID ) | Safe }}
2021-03-04 06:41:23 +03:00
{{ end }}
2019-09-03 09:29:36 +03:00
{{ else }}
{{ $ .i18n .Tr "repo.pulls.has_merged" }}
{{ end }}
2017-03-17 08:57:43 +03:00
</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 }}
2020-11-15 23:58:16 +03:00
<div class="item text">
2019-04-20 23:50:34 +03:00
{{ if .IsPullRequestBroken }}
{{ $ .i18n .Tr "repo.pulls.cant_reopen_deleted_branch" }}
{{ else }}
{{ $ .i18n .Tr "repo.pulls.reopen_to_merge" }}
{{ end }}
2017-03-17 08:57:43 +03:00
</div>
2020-01-07 20:06:14 +03:00
{{ if and .IsPullBranchDeletable ( not .IsPullRequestBroken ) }}
2019-04-20 23:50:34 +03:00
<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 }}
2019-02-05 14:54:49 +03:00
{{ else if .IsPullFilesConflicted }}
2020-11-15 23:58:16 +03:00
<div class="item text">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-x" }}
2019-02-05 14:54:49 +03:00
{{ $ .i18n .Tr "repo.pulls.files_conflicted" }}
{{ range .ConflictedFiles }}
<div> {{ . }} </div>
{{ end }}
</div>
2018-08-01 06:00:35 +03:00
{{ else if .IsPullRequestBroken }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2017-03-17 08:57:43 +03:00
{{ $ .i18n .Tr "repo.pulls.data_broken" }}
</div>
2018-08-13 22:04:39 +03:00
{{ else if .IsPullWorkInProgress }}
2021-11-16 21:18:25 +03:00
<div class="item toggle-wip df ac sb" data-title=" {{ .Issue .Title }} " data-wip-prefix=" {{ ( .WorkInProgressPrefix | Escape ) }} " data-update-url=" {{ .Issue .Link }} /title">
2021-05-27 23:02:04 +03:00
<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>
2018-08-13 22:04:39 +03:00
</div>
2017-03-17 08:57:43 +03:00
{{ else if .Issue .PullRequest .IsChecking }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-sync" }} </i>
2017-03-17 08:57:43 +03:00
{{ $ .i18n .Tr "repo.pulls.is_checking" }}
</div>
2021-03-04 06:41:23 +03:00
{{ else if .Issue .PullRequest .IsEmpty }}
2021-05-27 23:02:04 +03:00
<div class="item">
2021-03-04 06:41:23 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-alert" 1 6 }} </i>
{{ $ .i18n .Tr "repo.pulls.is_empty" }}
</div>
2017-03-17 08:57:43 +03:00
{{ else if .Issue .PullRequest .CanAutoMerge }}
2020-01-11 10:29:34 +03:00
{{ if .IsBlockedByApprovals }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue .PullRequest .ProtectedBranch .RequiredApprovals }}
</div>
{{ else if .IsBlockedByRejection }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.blocked_by_rejection" }}
</div>
2020-11-28 22:30:46 +03:00
{{ 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>
2020-04-17 04:00:36 +03:00
{{ else if .IsBlockedByOutdatedBranch }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-04-17 04:00:36 +03:00
{{ $ .i18n .Tr "repo.pulls.blocked_by_outdated_branch" }}
</div>
2020-10-13 21:50:57 +03:00
{{ else if .IsBlockedByChangedProtectedFiles }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-10-13 21:50:57 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" 1 6 }} </i>
2022-01-02 06:33:57 +03:00
{{ $ .i18n .TrN $ .ChangedProtectedFilesNum "repo.pulls.blocked_by_changed_protected_files_1" "repo.pulls.blocked_by_changed_protected_files_n" | Safe }}
2020-10-13 21:50:57 +03:00
<div class="ui ordered list">
{{ range .ChangedProtectedFiles }}
<div data-value="-" class="item"> {{ . }} </div>
{{ end }}
</div>
</div>
2020-01-22 06:46:04 +03:00
{{ else if and .EnableStatusCheck ( or .RequiredStatusCheckState .IsError .RequiredStatusCheckState .IsFailure ) }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.required_status_check_failed" }}
</div>
2020-04-15 23:35:18 +03:00
{{ else if and .EnableStatusCheck ( not .RequiredStatusCheckState .IsSuccess ) }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-04-15 23:35:18 +03:00
{{ $ .i18n .Tr "repo.pulls.required_status_check_missing" }}
</div>
2020-08-24 00:59:41 +03:00
{{ else if and .AllowMerge .RequireSigned ( not .WillSign ) }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-01-15 11:32:57 +03:00
{{ $ .i18n .Tr "repo.pulls.require_signed_wont_sign" }}
</div>
2020-11-15 23:58:16 +03:00
<div class="item">
2020-01-18 14:30:35 +03:00
<i class="icon unlock"></i>
2020-01-15 11:32:57 +03:00
{{ $ .i18n .Tr ( printf "repo.signing.wont_sign.%s" .WontSignReason ) }}
</div>
2019-09-18 08:39:45 +03:00
{{ end }}
2022-06-11 17:44:20 +03:00
2020-11-28 22:30:46 +03:00
{{ $ notAllOverridableChecksOk : = or .IsBlockedByApprovals .IsBlockedByRejection .IsBlockedByOfficialReviewRequests .IsBlockedByOutdatedBranch .IsBlockedByChangedProtectedFiles ( and .EnableStatusCheck ( not .RequiredStatusCheckState .IsSuccess ) ) }}
2022-06-11 17:44:20 +03:00
{{ / * admin can merge with out checks , writer can merge when checkes succeed * / }}
{{ $ canMergeNow : = and ( or $ .IsRepoAdmin ( not $ notAllOverridableChecksOk ) ) ( or ( not .AllowMerge ) ( not .RequireSigned ) .WillSign ) }}
{{ / * admin and writer both can make an auto merge schedule * / }}
{{ if $ canMergeNow }}
2020-01-17 00:01:22 +03:00
{{ if $ notAllOverridableChecksOk }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-dot-fill" }} </i>
2019-09-18 08:39:45 +03:00
{{ $ .i18n .Tr "repo.pulls.required_status_check_administrator" }}
2018-12-27 13:27:08 +03:00
</div>
2019-09-18 08:39:45 +03:00
{{ else }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-check" }} </i>
2019-09-18 08:39:45 +03:00
{{ $ .i18n .Tr "repo.pulls.can_auto_merge_desc" }}
2018-01-05 21:56:50 +03:00
</div>
2019-09-18 08:39:45 +03:00
{{ end }}
2020-01-15 11:32:57 +03:00
{{ if .WillSign }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-01-15 11:32:57 +03:00
<i class="icon lock green"></i>
{{ $ .i18n .Tr "repo.signing.will_sign" .SigningKey }}
</div>
2020-01-16 01:55:25 +03:00
{{ else if .IsSigned }}
2020-11-15 23:58:16 +03:00
<div class="item">
2020-01-18 14:30:35 +03:00
<i class="icon unlock"></i>
2020-01-15 11:32:57 +03:00
{{ $ .i18n .Tr ( printf "repo.signing.wont_sign.%s" .WontSignReason ) }}
</div>
{{ end }}
2020-06-13 21:49:59 +03:00
{{ end }}
2020-06-18 04:20:07 +03:00
2020-06-13 21:49:59 +03:00
{{ if ( gt .Issue .PullRequest .CommitsBehind 0 ) }}
<div class="ui divider"></div>
2020-11-15 23:58:16 +03:00
<div class="item item-section">
2020-06-13 21:49:59 +03:00
<div class="item-section-left">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-alert" }} </i>
2020-06-13 21:49:59 +03:00
{{ $ .i18n .Tr "repo.pulls.outdated_with_base_branch" }}
</div>
<div class="item-section-right">
2021-08-31 17:03:45 +03:00
{{ 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" 1 4 "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 ) }}
2020-06-13 21:49:59 +03:00
<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 }}
2022-06-11 17:44:20 +03:00
{{ if .AllowMerge }} {{ / * user is allowed to merge * / }}
{{ $ prUnit : = .Repository .MustGetUnit $ .UnitTypePullRequests }}
{{ $ approvers : = .Issue .PullRequest .GetApprovers }}
{{ if or $ prUnit .PullRequestsConfig .AllowMerge $ prUnit .PullRequestsConfig .AllowRebase $ prUnit .PullRequestsConfig .AllowRebaseMerge $ prUnit .PullRequestsConfig .AllowSquash }}
{{ $ hasPendingPullRequestMergeTip : = "" }}
{{ if .HasPendingPullRequestMerge }}
{{ $ createdPRMergeStr : = TimeSinceUnix .PendingPullRequestMerge .CreatedUnix $ .i18n .Lang }}
{{ $ hasPendingPullRequestMergeTip = $ .i18n .Tr "repo.pulls.auto_merge_has_pending_schedule" .PendingPullRequestMerge .Doer .Name $ createdPRMergeStr }}
{{ end }}
<div class="ui divider"></div>
<script>
<!-- /* eslint-disable */ -->
(() => {
const defaultMergeTitle = {{ .DefaultMergeMessage }} ;
const defaultSquashMergeTitle = {{ .DefaultSquashMergeMessage }} ;
const defaultMergeMessage = 'Reviewed-on: ' + {{ $ .Issue .HTMLURL }} + '\n' + {{ $ approvers }} ;
const mergeForm = {
'baseLink': {{ .Link }} ,
'textCancel': {{ $ .i18n .Tr "cancel" }} ,
'textDeleteBranch': {{ $ .i18n .Tr "repo.branch.delete" .HeadTarget }} ,
'textAutoMergeButtonWhenSucceed': {{ $ .i18n .Tr "repo.pulls.auto_merge_button_when_succeed" }} ,
'textAutoMergeWhenSucceed': {{ $ .i18n .Tr "repo.pulls.auto_merge_when_succeed" }} ,
'textAutoMergeCancelSchedule': {{ $ .i18n .Tr "repo.pulls.auto_merge_cancel_schedule" }} ,
2022-05-12 16:39:02 +03:00
2022-06-11 17:44:20 +03:00
'canMergeNow': {{ $ canMergeNow }} ,
'allOverridableChecksOk': {{ not $ notAllOverridableChecksOk }} ,
'pullHeadCommitID': {{ .PullHeadCommitID }} ,
'isPullBranchDeletable': {{ .IsPullBranchDeletable }} ,
'defaultDeleteBranchAfterMerge': {{ $ prUnit .PullRequestsConfig .DefaultDeleteBranchAfterMerge }} ,
'mergeMessageFieldPlaceHolder': {{ $ .i18n .Tr "repo.editor.commit_message_desc" }} ,
2022-05-12 16:39:02 +03:00
2022-06-11 17:44:20 +03:00
'hasPendingPullRequestMerge': {{ .HasPendingPullRequestMerge }} ,
'hasPendingPullRequestMergeTip': {{ $ hasPendingPullRequestMergeTip }} ,
};
2022-05-12 16:39:02 +03:00
2022-06-11 17:44:20 +03:00
const generalHideAutoMerge = mergeForm.canMergeNow && mergeForm.allOverridableChecksOk; // if this PR can be merged now, then hide the auto merge
mergeForm['mergeStyles'] = [
{
'name': 'merge',
'allowed': {{ $ prUnit .PullRequestsConfig .AllowMerge }} ,
'textDoMerge': {{ $ .i18n .Tr "repo.pulls.merge_pull_request" }} ,
'mergeTitleFieldText': defaultMergeTitle,
'mergeMessageFieldText': defaultMergeMessage,
'hideAutoMerge': generalHideAutoMerge,
},
{
'name': 'rebase',
'allowed': {{ $ prUnit .PullRequestsConfig .AllowRebase }} ,
'textDoMerge': {{ $ .i18n .Tr "repo.pulls.rebase_merge_pull_request" }} ,
'hideMergeMessageTexts': true,
'hideAutoMerge': generalHideAutoMerge,
},
{
'name': 'rebase-merge',
'allowed': {{ $ prUnit .PullRequestsConfig .AllowRebaseMerge }} ,
'textDoMerge': {{ $ .i18n .Tr "repo.pulls.rebase_merge_commit_pull_request" }} ,
'mergeTitleFieldText': defaultMergeTitle,
'mergeMessageFieldText': defaultMergeMessage,
'hideAutoMerge': generalHideAutoMerge,
},
{
'name': 'squash',
'allowed': {{ $ prUnit .PullRequestsConfig .AllowSquash }} ,
'textDoMerge': {{ $ .i18n .Tr "repo.pulls.squash_merge_pull_request" }} ,
'mergeTitleFieldText': defaultSquashMergeTitle,
'mergeMessageFieldText': defaultMergeMessage,
'hideAutoMerge': generalHideAutoMerge,
},
{
'name': 'manually-merged',
'allowed': {{ and $ prUnit .PullRequestsConfig .AllowManualMerge $ .IsRepoAdmin }} ,
'textDoMerge': {{ $ .i18n .Tr "repo.pulls.merge_manually" }} ,
'hideMergeMessageTexts': true,
'hideAutoMerge': true,
}
];
window.config.pageData.pullRequestMergeForm = mergeForm;
})();
</script>
2022-05-12 16:39:02 +03:00
2022-06-11 17:44:20 +03:00
<div id="pull-request-merge-form"></div>
2022-05-12 16:39:02 +03:00
2022-06-11 17:44:20 +03:00
{{ if .ShowMergeInstructions }}
{{ template "repo/issue/view_content/pull_merge_instruction" ( dict "i18n" .i18n "Issue" .Issue ) }}
2019-09-18 08:39:45 +03:00
{{ end }}
2020-01-11 10:29:34 +03:00
{{ else }}
2022-06-11 17:44:20 +03:00
{{ / * no merge style was set in repo setting : not or ( $ prUnit .PullRequestsConfig .AllowMerge . . . ) * / }}
2020-06-13 21:49:59 +03:00
<div class="ui divider"></div>
2022-06-11 17:44:20 +03:00
<div class="item text red">
{{ svg "octicon-x" }}
{{ $ .i18n .Tr "repo.pulls.no_merge_desc" }}
</div>
2021-05-27 23:02:04 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-info" }}
2022-06-11 17:44:20 +03:00
{{ $ .i18n .Tr "repo.pulls.no_merge_helper" }}
2020-01-11 10:29:34 +03:00
</div>
2022-06-11 17:44:20 +03:00
{{ end }} {{ / * end if the repo was set to use any merge style * / }}
{{ else }}
{{ / * user is not allowed to merge * / }}
<div class="ui divider"></div>
<div class="item">
{{ svg "octicon-info" }}
{{ $ .i18n .Tr "repo.pulls.no_merge_access" }}
</div>
{{ end }} {{ / * end if user is allowed to merge or not * / }}
2017-03-17 08:57:43 +03:00
{{ else }}
2020-01-11 10:29:34 +03:00
{{ / * Merge conflict with out specific file . Suggest manual merge , only if all reviews and status checks OK . * / }}
{{ if .IsBlockedByApprovals }}
<div class="item text red">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-x" }}
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue .PullRequest .ProtectedBranch .RequiredApprovals }}
</div>
{{ else if .IsBlockedByRejection }}
<div class="item text red">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-x" }}
2020-11-28 22:30:46 +03:00
{{ $ .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" }}
2020-01-11 10:29:34 +03:00
</div>
2020-04-17 04:00:36 +03:00
{{ else if .IsBlockedByOutdatedBranch }}
<div class="item text red">
2020-09-11 23:19:00 +03:00
<i class="icon icon-octicon"> {{ svg "octicon-x" }} </i>
2020-04-17 04:00:36 +03:00
{{ $ .i18n .Tr "repo.pulls.blocked_by_outdated_branch" }}
</div>
2020-10-13 21:50:57 +03:00
{{ else if .IsBlockedByChangedProtectedFiles }}
<div class="item text red">
<i class="icon icon-octicon"> {{ svg "octicon-x" 1 6 }} </i>
2022-01-02 06:33:57 +03:00
{{ $ .i18n .TrN $ .ChangedProtectedFilesNum "repo.pulls.blocked_by_changed_protected_files_1" "repo.pulls.blocked_by_changed_protected_files_n" | Safe }}
2020-10-13 21:50:57 +03:00
<div class="ui ordered list">
{{ range .ChangedProtectedFiles }}
<div data-value="-" class="item"> {{ . }} </div>
{{ end }}
</div>
</div>
2020-04-15 23:35:18 +03:00
{{ else if and .EnableStatusCheck ( not .RequiredStatusCheckState .IsSuccess ) }}
2020-01-11 10:29:34 +03:00
<div class="item text red">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-x" }}
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.required_status_check_failed" }}
</div>
2020-01-15 11:32:57 +03:00
{{ else if and .RequireSigned ( not .WillSign ) }}
<div class="item text red">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-x" }}
2020-01-15 11:32:57 +03:00
{{ $ .i18n .Tr "repo.pulls.require_signed_wont_sign" }}
</div>
2020-01-11 10:29:34 +03:00
{{ else }}
<div class="item text red">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-x" }}
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.cannot_auto_merge_desc" }}
</div>
2021-05-27 23:02:04 +03:00
<div class="item">
2020-09-11 23:19:00 +03:00
{{ svg "octicon-info" }}
2020-01-11 10:29:34 +03:00
{{ $ .i18n .Tr "repo.pulls.cannot_auto_merge_helper" }}
</div>
{{ end }}
2017-03-17 08:57:43 +03:00
{{ end }}
2020-06-13 21:49:59 +03:00
{{ if and ( gt .Issue .PullRequest .CommitsBehind 0 ) ( not .Issue .IsClosed ) ( not .Issue .PullRequest .IsChecking ) ( not .IsPullFilesConflicted ) ( not .IsPullRequestBroken ) ( not $ canAutoMerge ) }}
2021-05-27 23:02:04 +03:00
<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>
2021-08-31 17:03:45 +03:00
{{ 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" 1 4 "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 ) }}
2021-05-27 23:02:04 +03:00
<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>
2020-06-13 21:49:59 +03:00
</div>
{{ end }}
2021-03-04 06:41:23 +03:00
{{ 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 }}
2017-03-17 08:57:43 +03:00
</div>
</div>
</div>