You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pull.tmpl 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. {{if gt (len .PullReviewers) 0}}
  2. <div class="comment box">
  3. <div class="content">
  4. <div class="ui segment">
  5. <h4>{{$.i18n.Tr "repo.issues.review.reviewers"}}</h4>
  6. {{range .PullReviewers}}
  7. {{ $createdStr:= TimeSinceUnix .UpdatedUnix $.Lang }}
  8. <div class="ui divider"></div>
  9. <div class="review-item">
  10. <span class="type-icon text {{if eq .Type 1}}green
  11. {{else if eq .Type 2}}grey
  12. {{else if eq .Type 3}}red
  13. {{else}}grey{{end}}">
  14. <span class="octicon octicon-{{.Type.Icon}}"></span>
  15. </span>
  16. <a class="ui avatar image" href="{{.Reviewer.HomeLink}}">
  17. <img src="{{.Reviewer.RelAvatarLink}}">
  18. </a>
  19. <span class="text grey"><a href="{{.Reviewer.HomeLink}}">{{.Reviewer.Name}}</a>
  20. {{if eq .Type 1}}
  21. {{$.i18n.Tr "repo.issues.review.approve" $createdStr | Safe}}
  22. {{else if eq .Type 2}}
  23. {{$.i18n.Tr "repo.issues.review.comment" $createdStr | Safe}}
  24. {{else if eq .Type 3}}
  25. {{$.i18n.Tr "repo.issues.review.reject" $createdStr | Safe}}
  26. {{else}}
  27. {{$.i18n.Tr "repo.issues.review.comment" $createdStr | Safe}}
  28. {{end}}
  29. </span>
  30. </div>
  31. {{end}}
  32. </div>
  33. </div>
  34. </div>
  35. {{end}}
  36. <div class="comment merge box">
  37. <a class="avatar text
  38. {{if .Issue.PullRequest.HasMerged}}purple
  39. {{else if .Issue.IsClosed}}grey
  40. {{else if .IsPullWorkInProgress}}grey
  41. {{else if .IsFilesConflicted}}grey
  42. {{else if .IsPullRequestBroken}}red
  43. {{else if .IsBlockedByApprovals}}red
  44. {{else if .IsBlockedByRejection}}red
  45. {{else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsFailure .RequiredStatusCheckState.IsError)}}red
  46. {{else if and .EnableStatusCheck (or (not $.LatestCommitStatus) .RequiredStatusCheckState.IsPending .RequiredStatusCheckState.IsWarning)}}yellow
  47. {{else if .Issue.PullRequest.IsChecking}}yellow
  48. {{else if .Issue.PullRequest.CanAutoMerge}}green
  49. {{else}}red{{end}}"><span class="mega-octicon octicon-git-merge"></span></a>
  50. <div class="content">
  51. {{template "repo/pulls/status" .}}
  52. <div class="ui {{if not $.LatestCommitStatus}}top attached header{{else}}attached merge-section segment{{end}}">
  53. {{if .Issue.PullRequest.HasMerged}}
  54. <div class="item text purple">
  55. {{if .Issue.PullRequest.MergedCommitID}}
  56. {{$link := printf "%s/commit/%s" $.Repository.HTMLURL .Issue.PullRequest.MergedCommitID}}
  57. {{$.i18n.Tr "repo.pulls.merged_as" $link (ShortSha .Issue.PullRequest.MergedCommitID) | Safe}}
  58. {{else}}
  59. {{$.i18n.Tr "repo.pulls.has_merged"}}
  60. {{end}}
  61. </div>
  62. {{if .IsPullBranchDeletable}}
  63. <div class="ui divider"></div>
  64. <div>
  65. <a class="delete-button ui red button" href="" data-url="{{.DeleteBranchLink}}">{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</a>
  66. </div>
  67. {{end}}
  68. {{else if .Issue.IsClosed}}
  69. <div class="item text grey">
  70. {{if .IsPullRequestBroken}}
  71. {{$.i18n.Tr "repo.pulls.cant_reopen_deleted_branch"}}
  72. {{else}}
  73. {{$.i18n.Tr "repo.pulls.reopen_to_merge"}}
  74. {{end}}
  75. </div>
  76. {{if and .IsPullBranchDeletable ( not .IsPullRequestBroken )}}
  77. <div class="ui divider"></div>
  78. <div>
  79. <a class="delete-button ui red button" href="" data-url="{{.DeleteBranchLink}}">{{$.i18n.Tr "repo.branch.delete" .HeadTarget}}</a>
  80. </div>
  81. {{end}}
  82. {{else if .IsPullFilesConflicted}}
  83. <div class="item text grey">
  84. <span class="octicon octicon-x"></span>
  85. {{$.i18n.Tr "repo.pulls.files_conflicted"}}
  86. {{range .ConflictedFiles}}
  87. <div>{{.}}</div>
  88. {{end}}
  89. </div>
  90. {{else if .IsPullRequestBroken}}
  91. <div class="item text red">
  92. <span class="octicon octicon-x"></span>
  93. {{$.i18n.Tr "repo.pulls.data_broken"}}
  94. </div>
  95. {{else if .IsPullWorkInProgress}}
  96. <div class="item text grey">
  97. <span class="octicon octicon-x"></span>
  98. {{$.i18n.Tr "repo.pulls.cannot_merge_work_in_progress" .WorkInProgressPrefix | Str2html}}
  99. </div>
  100. {{else if .IsBlockedByApprovals}}
  101. <div class="item text red">
  102. <span class="octicon octicon-x"></span>
  103. {{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}}
  104. </div>
  105. {{else if .IsBlockedByRejection}}
  106. <div class="item text red">
  107. <span class="octicon octicon-x"></span>
  108. {{$.i18n.Tr "repo.pulls.blocked_by_rejection"}}
  109. </div>
  110. {{else if .Issue.PullRequest.IsChecking}}
  111. <div class="item text yellow">
  112. <span class="octicon octicon-sync"></span>
  113. {{$.i18n.Tr "repo.pulls.is_checking"}}
  114. </div>
  115. {{else if and (not .Issue.PullRequest.CanAutoMerge) .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}}
  116. <div class="item text red">
  117. <span class="octicon octicon-x"></span>
  118. {{$.i18n.Tr "repo.pulls.required_status_check_failed"}}
  119. </div>
  120. {{else if .Issue.PullRequest.CanAutoMerge}}
  121. {{if and .EnableStatusCheck (or .RequiredStatusCheckState.IsError .RequiredStatusCheckState.IsFailure)}}
  122. <div class="item text red">
  123. <span class="octicon octicon-x"></span>
  124. {{$.i18n.Tr "repo.pulls.required_status_check_failed"}}
  125. </div>
  126. {{else if and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}}
  127. <div class="item text red">
  128. <span class="octicon octicon-x"></span>
  129. {{$.i18n.Tr "repo.pulls.required_status_check_missing"}}
  130. </div>
  131. {{end}}
  132. {{if or $.IsRepoAdmin (not .EnableStatusCheck) .RequiredStatusCheckState.IsSuccess}}
  133. {{if and $.IsRepoAdmin .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}}
  134. <div class="item text yellow">
  135. <span class="octicon octicon-primitive-dot"></span>
  136. {{$.i18n.Tr "repo.pulls.required_status_check_administrator"}}
  137. </div>
  138. {{else}}
  139. <div class="item text green">
  140. <span class="octicon octicon-check"></span>
  141. {{$.i18n.Tr "repo.pulls.can_auto_merge_desc"}}
  142. </div>
  143. {{end}}
  144. {{if .AllowMerge}}
  145. {{$prUnit := .Repository.MustGetUnit $.UnitTypePullRequests}}
  146. {{$approvers := .Issue.PullRequest.GetApprovers}}
  147. {{if or $prUnit.PullRequestsConfig.AllowMerge $prUnit.PullRequestsConfig.AllowRebase $prUnit.PullRequestsConfig.AllowRebaseMerge $prUnit.PullRequestsConfig.AllowSquash}}
  148. <div class="ui divider"></div>
  149. {{if $prUnit.PullRequestsConfig.AllowMerge}}
  150. <div class="ui form merge-fields" style="display: none">
  151. <form action="{{.Link}}/merge" method="post">
  152. {{.CsrfTokenHtml}}
  153. <div class="field">
  154. <input type="text" name="merge_title_field" value="{{.Issue.PullRequest.GetDefaultMergeMessage}}">
  155. </div>
  156. <div class="field">
  157. <textarea name="merge_message_field" rows="5" placeholder="{{$.i18n.Tr "repo.editor.commit_message_desc"}}">{{$approvers}}</textarea>
  158. </div>
  159. <button class="ui green button" type="submit" name="do" value="merge">
  160. {{$.i18n.Tr "repo.pulls.merge_pull_request"}}
  161. </button>
  162. <button class="ui button merge-cancel">
  163. {{$.i18n.Tr "cancel"}}
  164. </button>
  165. </form>
  166. </div>
  167. {{end}}
  168. {{if $prUnit.PullRequestsConfig.AllowRebase}}
  169. <div class="ui form rebase-fields" style="display: none">
  170. <form action="{{.Link}}/merge" method="post">
  171. {{.CsrfTokenHtml}}
  172. <button class="ui green button" type="submit" name="do" value="rebase">
  173. {{$.i18n.Tr "repo.pulls.rebase_merge_pull_request"}}
  174. </button>
  175. <button class="ui button merge-cancel">
  176. {{$.i18n.Tr "cancel"}}
  177. </button>
  178. </form>
  179. </div>
  180. {{end}}
  181. {{if $prUnit.PullRequestsConfig.AllowRebaseMerge}}
  182. <div class="ui form rebase-merge-fields" style="display: none">
  183. <form action="{{.Link}}/merge" method="post">
  184. {{.CsrfTokenHtml}}
  185. <div class="field">
  186. <input type="text" name="merge_title_field" value="{{.Issue.PullRequest.GetDefaultMergeMessage}}">
  187. </div>
  188. <div class="field">
  189. <textarea name="merge_message_field" rows="5" placeholder="{{$.i18n.Tr "repo.editor.commit_message_desc"}}">{{$approvers}}</textarea>
  190. </div>
  191. <button class="ui green button" type="submit" name="do" value="rebase-merge">
  192. {{$.i18n.Tr "repo.pulls.rebase_merge_commit_pull_request"}}
  193. </button>
  194. <button class="ui button merge-cancel">
  195. {{$.i18n.Tr "cancel"}}
  196. </button>
  197. </form>
  198. </div>
  199. {{end}}
  200. {{if $prUnit.PullRequestsConfig.AllowSquash}}
  201. {{$commitMessages := .Issue.PullRequest.GetCommitMessages}}
  202. <div class="ui form squash-fields" style="display: none">
  203. <form action="{{.Link}}/merge" method="post">
  204. {{.CsrfTokenHtml}}
  205. <div class="field">
  206. <input type="text" name="merge_title_field" value="{{.Issue.PullRequest.GetDefaultSquashMessage}}">
  207. </div>
  208. <div class="field">
  209. <textarea name="merge_message_field" rows="5" placeholder="{{$.i18n.Tr "repo.editor.commit_message_desc"}}">{{$commitMessages}}{{$approvers}}</textarea>
  210. </div>
  211. <button class="ui green button" type="submit" name="do" value="squash">
  212. {{$.i18n.Tr "repo.pulls.squash_merge_pull_request"}}
  213. </button>
  214. <button class="ui button merge-cancel">
  215. {{$.i18n.Tr "cancel"}}
  216. </button>
  217. </form>
  218. </div>
  219. {{end}}
  220. <div class="ui green buttons merge-button">
  221. <button class="ui button" data-do="{{.MergeStyle}}">
  222. <span class="octicon octicon-git-merge"></span>
  223. <span class="button-text">
  224. {{if eq .MergeStyle "merge"}}
  225. {{$.i18n.Tr "repo.pulls.merge_pull_request"}}
  226. {{end}}
  227. {{if eq .MergeStyle "rebase"}}
  228. {{$.i18n.Tr "repo.pulls.rebase_merge_pull_request"}}
  229. {{end}}
  230. {{if eq .MergeStyle "rebase-merge"}}
  231. {{$.i18n.Tr "repo.pulls.rebase_merge_commit_pull_request"}}
  232. {{end}}
  233. {{if eq .MergeStyle "squash"}}
  234. {{$.i18n.Tr "repo.pulls.squash_merge_pull_request"}}
  235. {{end}}
  236. </span>
  237. </button>
  238. <div class="ui dropdown icon button">
  239. <i class="dropdown icon"></i>
  240. <div class="menu">
  241. {{if $prUnit.PullRequestsConfig.AllowMerge}}
  242. <div class="item{{if eq .MergeStyle "merge"}} active selected{{end}}" data-do="merge">{{$.i18n.Tr "repo.pulls.merge_pull_request"}}</div>
  243. {{end}}
  244. {{if $prUnit.PullRequestsConfig.AllowRebase}}
  245. <div class="item{{if eq .MergeStyle "rebase"}} active selected{{end}}" data-do="rebase">{{$.i18n.Tr "repo.pulls.rebase_merge_pull_request"}}</div>
  246. {{end}}
  247. {{if $prUnit.PullRequestsConfig.AllowRebaseMerge}}
  248. <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>
  249. {{end}}
  250. {{if $prUnit.PullRequestsConfig.AllowSquash}}
  251. <div class="item{{if eq .MergeStyle "squash"}} active selected{{end}}" data-do="squash">{{$.i18n.Tr "repo.pulls.squash_merge_pull_request"}}</div>
  252. {{end}}
  253. </div>
  254. </div>
  255. </div>
  256. {{else}}
  257. <div class="item text red">
  258. <span class="octicon octicon-x"></span>
  259. {{$.i18n.Tr "repo.pulls.no_merge_desc"}}
  260. </div>
  261. <div class="item text grey">
  262. <span class="octicon octicon-info"></span>
  263. {{$.i18n.Tr "repo.pulls.no_merge_helper"}}
  264. </div>
  265. {{end}}
  266. {{end}}
  267. {{end}}
  268. {{else}}
  269. <div class="item text red">
  270. <span class="octicon octicon-x"></span>
  271. {{$.i18n.Tr "repo.pulls.cannot_auto_merge_desc"}}
  272. </div>
  273. <div class="item text grey">
  274. <span class="octicon octicon-info"></span>
  275. {{$.i18n.Tr "repo.pulls.cannot_auto_merge_helper"}}
  276. </div>
  277. {{end}}
  278. </div>
  279. </div>
  280. </div>