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.

protected_branch.tmpl 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. {{template "repo/settings/layout_head" (dict "ctxData" . "pageClass" "repository settings branches")}}
  2. <div class="repo-setting-content">
  3. <form class="ui form" action="{{.Link}}" method="post">
  4. <h4 class="ui top attached header">
  5. {{ctx.Locale.Tr "repo.settings.branch_protection" (.Rule.RuleName|Escape) | Str2html}}
  6. </h4>
  7. <div class="ui attached segment branch-protection">
  8. <h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.protect_patterns"}}</h5>
  9. <div class="field">
  10. <label>{{ctx.Locale.Tr "repo.settings.protect_branch_name_pattern"}}</label>
  11. <input name="rule_name" type="text" value="{{.Rule.RuleName}}">
  12. <input name="rule_id" type="hidden" value="{{.Rule.ID}}">
  13. <p class="help gt-ml-0">{{ctx.Locale.Tr "repo.settings.protect_branch_name_pattern_desc" | Safe}}</p>
  14. </div>
  15. <div class="field">
  16. <label>{{ctx.Locale.Tr "repo.settings.protect_protected_file_patterns"}}</label>
  17. <input name="protected_file_patterns" type="text" value="{{.Rule.ProtectedFilePatterns}}">
  18. <p class="help gt-ml-0">{{ctx.Locale.Tr "repo.settings.protect_protected_file_patterns_desc" | Safe}}</p>
  19. </div>
  20. <div class="field">
  21. <label>{{ctx.Locale.Tr "repo.settings.protect_unprotected_file_patterns"}}</label>
  22. <input name="unprotected_file_patterns" type="text" value="{{.Rule.UnprotectedFilePatterns}}">
  23. <p class="help gt-ml-0">{{ctx.Locale.Tr "repo.settings.protect_unprotected_file_patterns_desc" | Safe}}</p>
  24. </div>
  25. {{.CsrfTokenHtml}}
  26. <h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.event_push"}}</h5>
  27. <div class="field">
  28. <div class="ui radio checkbox">
  29. <input name="enable_push" type="radio" value="none" class="toggle-target-disabled" data-target="#whitelist_box" {{if not .Rule.CanPush}}checked{{end}}>
  30. <label>{{ctx.Locale.Tr "repo.settings.protect_disable_push"}}</label>
  31. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_disable_push_desc"}}</p>
  32. </div>
  33. </div>
  34. <div class="field">
  35. <div class="ui radio checkbox">
  36. <input name="enable_push" type="radio" value="all" class="toggle-target-disabled" data-target="#whitelist_box" {{if and (.Rule.CanPush) (not .Rule.EnableWhitelist)}}checked{{end}}>
  37. <label>{{ctx.Locale.Tr "repo.settings.protect_enable_push"}}</label>
  38. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_enable_push_desc"}}</p>
  39. </div>
  40. </div>
  41. <div class="grouped fields">
  42. <div class="field">
  43. <div class="ui radio checkbox">
  44. <input name="enable_push" type="radio" value="whitelist" class="toggle-target-enabled" data-target="#whitelist_box" {{if and (.Rule.CanPush) (.Rule.EnableWhitelist)}}checked{{end}}>
  45. <label>{{ctx.Locale.Tr "repo.settings.protect_whitelist_committers"}}</label>
  46. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_whitelist_committers_desc"}}</p>
  47. </div>
  48. </div>
  49. <div id="whitelist_box" class="grouped fields {{if not .Rule.EnableWhitelist}}disabled{{end}}">
  50. <div class="checkbox-sub-item field">
  51. <label>{{ctx.Locale.Tr "repo.settings.protect_whitelist_users"}}</label>
  52. <div class="ui multiple search selection dropdown">
  53. <input type="hidden" name="whitelist_users" value="{{.whitelist_users}}">
  54. <div class="default text">{{ctx.Locale.Tr "repo.settings.protect_whitelist_search_users"}}</div>
  55. <div class="menu">
  56. {{range .Users}}
  57. <div class="item" data-value="{{.ID}}">
  58. {{ctx.AvatarUtils.Avatar . 28 "mini"}}{{template "repo/search_name" .}}
  59. </div>
  60. {{end}}
  61. </div>
  62. </div>
  63. </div>
  64. {{if .Owner.IsOrganization}}
  65. <div class="checkbox-sub-item field">
  66. <label>{{ctx.Locale.Tr "repo.settings.protect_whitelist_teams"}}</label>
  67. <div class="ui multiple search selection dropdown">
  68. <input type="hidden" name="whitelist_teams" value="{{.whitelist_teams}}">
  69. <div class="default text">{{ctx.Locale.Tr "repo.settings.protect_whitelist_search_teams"}}</div>
  70. <div class="menu">
  71. {{range .Teams}}
  72. <div class="item" data-value="{{.ID}}">
  73. {{svg "octicon-people"}}
  74. {{.Name}}
  75. </div>
  76. {{end}}
  77. </div>
  78. </div>
  79. </div>
  80. {{end}}
  81. <div class="checkbox-sub-item field">
  82. <div class="ui checkbox">
  83. <input type="checkbox" name="whitelist_deploy_keys" {{if .Rule.WhitelistDeployKeys}}checked{{end}}>
  84. <label>{{ctx.Locale.Tr "repo.settings.protect_whitelist_deploy_keys"}}</label>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. <div class="field">
  90. <div class="ui checkbox">
  91. <input name="require_signed_commits" type="checkbox" {{if .Rule.RequireSignedCommits}}checked{{end}}>
  92. <label>{{ctx.Locale.Tr "repo.settings.require_signed_commits"}}</label>
  93. <p class="help">{{ctx.Locale.Tr "repo.settings.require_signed_commits_desc"}}</p>
  94. </div>
  95. </div>
  96. <h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.event_pull_request_approvals"}}</h5>
  97. <div class="field">
  98. <label>{{ctx.Locale.Tr "repo.settings.protect_required_approvals"}}</label>
  99. <input name="required_approvals" type="number" value="{{.Rule.RequiredApprovals}}">
  100. <p class="help gt-ml-0">{{ctx.Locale.Tr "repo.settings.protect_required_approvals_desc"}}</p>
  101. </div>
  102. <div class="grouped fields">
  103. <div class="field">
  104. <div class="ui checkbox">
  105. <input name="enable_approvals_whitelist" type="checkbox" class="toggle-target-enabled" data-target="#approvals_whitelist_box" {{if .Rule.EnableApprovalsWhitelist}}checked{{end}}>
  106. <label>{{ctx.Locale.Tr "repo.settings.protect_approvals_whitelist_enabled"}}</label>
  107. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_approvals_whitelist_enabled_desc"}}</p>
  108. </div>
  109. </div>
  110. <div id="approvals_whitelist_box" class="grouped fields {{if not .Rule.EnableApprovalsWhitelist}}disabled{{end}}">
  111. <div class="checkbox-sub-item field">
  112. <label>{{ctx.Locale.Tr "repo.settings.protect_approvals_whitelist_users"}}</label>
  113. <div class="ui multiple search selection dropdown">
  114. <input type="hidden" name="approvals_whitelist_users" value="{{.approvals_whitelist_users}}">
  115. <div class="default text">{{ctx.Locale.Tr "repo.settings.protect_whitelist_search_users"}}</div>
  116. <div class="menu">
  117. {{range .Users}}
  118. <div class="item" data-value="{{.ID}}">
  119. {{ctx.AvatarUtils.Avatar . 28 "mini"}}{{template "repo/search_name" .}}
  120. </div>
  121. {{end}}
  122. </div>
  123. </div>
  124. </div>
  125. {{if .Owner.IsOrganization}}
  126. <div class="checkbox-sub-item field">
  127. <label>{{ctx.Locale.Tr "repo.settings.protect_approvals_whitelist_teams"}}</label>
  128. <div class="ui multiple search selection dropdown">
  129. <input type="hidden" name="approvals_whitelist_teams" value="{{.approvals_whitelist_teams}}">
  130. <div class="default text">{{ctx.Locale.Tr "repo.settings.protect_whitelist_search_teams"}}</div>
  131. <div class="menu">
  132. {{range .Teams}}
  133. <div class="item" data-value="{{.ID}}">
  134. {{svg "octicon-people"}}
  135. {{.Name}}
  136. </div>
  137. {{end}}
  138. </div>
  139. </div>
  140. </div>
  141. {{end}}
  142. </div>
  143. </div>
  144. <div class="field">
  145. <div class="ui checkbox">
  146. <input name="dismiss_stale_approvals" type="checkbox" {{if .Rule.DismissStaleApprovals}}checked{{end}}>
  147. <label>{{ctx.Locale.Tr "repo.settings.dismiss_stale_approvals"}}</label>
  148. <p class="help">{{ctx.Locale.Tr "repo.settings.dismiss_stale_approvals_desc"}}</p>
  149. </div>
  150. </div>
  151. <div class="grouped fields">
  152. <div class="field">
  153. <div class="ui checkbox">
  154. <input name="enable_status_check" type="checkbox" class="toggle-target-enabled" data-target="#statuscheck_contexts_box" {{if .Rule.EnableStatusCheck}}checked{{end}}>
  155. <label>{{ctx.Locale.Tr "repo.settings.protect_check_status_contexts"}}</label>
  156. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_check_status_contexts_desc"}}</p>
  157. </div>
  158. </div>
  159. <div id="statuscheck_contexts_box" class="checkbox-sub-item field {{if not .Rule.EnableStatusCheck}}disabled{{end}}">
  160. <label>{{ctx.Locale.Tr "repo.settings.protect_status_check_patterns"}}</label>
  161. <textarea id="status_check_contexts" name="status_check_contexts" rows="3">{{.status_check_contexts}}</textarea>
  162. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_status_check_patterns_desc"}}</p>
  163. <table class="ui celled table">
  164. <thead>
  165. <tr>
  166. <th>{{ctx.Locale.Tr "repo.settings.protect_check_status_contexts_list"}}</th>
  167. </tr>
  168. </thead>
  169. <tbody>
  170. {{range $.recent_status_checks}}
  171. <tr>
  172. <td>
  173. <span>{{.}}</span>
  174. <span class="status-check-matched-mark gt-hidden" data-status-check="{{.}}">{{ctx.Locale.Tr "repo.settings.protect_status_check_matched"}}</span>
  175. </td>
  176. </tr>
  177. {{else}}
  178. <tr><td>-</td></tr>
  179. {{end}}
  180. </tbody>
  181. </table>
  182. </div>
  183. </div>
  184. <h5 class="ui dividing header">{{ctx.Locale.Tr "repo.settings.event_pull_request_merge"}}</h5>
  185. <div class="grouped fields">
  186. <div class="field">
  187. <div class="ui radio checkbox">
  188. <input name="enable_merge_whitelist" type="radio" value="false" class="toggle-target-disabled" data-target="#merge_whitelist_box" {{if not .Rule.EnableMergeWhitelist}}checked{{end}}>
  189. <label>{{ctx.Locale.Tr "repo.settings.protect_enable_merge"}}</label>
  190. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_enable_merge_desc"}}</p>
  191. </div>
  192. </div>
  193. <div class="field">
  194. <div class="ui radio checkbox">
  195. <input name="enable_merge_whitelist" type="radio" value="true" class="toggle-target-enabled" data-target="#merge_whitelist_box" {{if .Rule.EnableMergeWhitelist}}checked{{end}}>
  196. <label>{{ctx.Locale.Tr "repo.settings.protect_merge_whitelist_committers"}}</label>
  197. <p class="help">{{ctx.Locale.Tr "repo.settings.protect_merge_whitelist_committers_desc"}}</p>
  198. </div>
  199. </div>
  200. <div id="merge_whitelist_box" class="grouped fields {{if not .Rule.EnableMergeWhitelist}}disabled{{end}}">
  201. <div class="checkbox-sub-item field">
  202. <label>{{ctx.Locale.Tr "repo.settings.protect_merge_whitelist_users"}}</label>
  203. <div class="ui multiple search selection dropdown">
  204. <input type="hidden" name="merge_whitelist_users" value="{{.merge_whitelist_users}}">
  205. <div class="default text">{{ctx.Locale.Tr "repo.settings.protect_whitelist_search_users"}}</div>
  206. <div class="menu">
  207. {{range .Users}}
  208. <div class="item" data-value="{{.ID}}">
  209. {{ctx.AvatarUtils.Avatar . 28 "mini"}}{{template "repo/search_name" .}}
  210. </div>
  211. {{end}}
  212. </div>
  213. </div>
  214. </div>
  215. {{if .Owner.IsOrganization}}
  216. <div class="checkbox-sub-item field">
  217. <label>{{ctx.Locale.Tr "repo.settings.protect_merge_whitelist_teams"}}</label>
  218. <div class="ui multiple search selection dropdown">
  219. <input type="hidden" name="merge_whitelist_teams" value="{{.merge_whitelist_teams}}">
  220. <div class="default text">{{ctx.Locale.Tr "repo.settings.protect_whitelist_search_teams"}}</div>
  221. <div class="menu">
  222. {{range .Teams}}
  223. <div class="item" data-value="{{.ID}}">
  224. {{svg "octicon-people"}}
  225. {{.Name}}
  226. </div>
  227. {{end}}
  228. </div>
  229. </div>
  230. </div>
  231. {{end}}
  232. </div>
  233. </div>
  234. <div class="field">
  235. <div class="ui checkbox">
  236. <input name="block_on_rejected_reviews" type="checkbox" {{if .Rule.BlockOnRejectedReviews}}checked{{end}}>
  237. <label>{{ctx.Locale.Tr "repo.settings.block_rejected_reviews"}}</label>
  238. <p class="help">{{ctx.Locale.Tr "repo.settings.block_rejected_reviews_desc"}}</p>
  239. </div>
  240. </div>
  241. <div class="field">
  242. <div class="ui checkbox">
  243. <input name="block_on_official_review_requests" type="checkbox" {{if .Rule.BlockOnOfficialReviewRequests}}checked{{end}}>
  244. <label>{{ctx.Locale.Tr "repo.settings.block_on_official_review_requests"}}</label>
  245. <p class="help">{{ctx.Locale.Tr "repo.settings.block_on_official_review_requests_desc"}}</p>
  246. </div>
  247. </div>
  248. <div class="field">
  249. <div class="ui checkbox">
  250. <input name="block_on_outdated_branch" type="checkbox" {{if .Rule.BlockOnOutdatedBranch}}checked{{end}}>
  251. <label>{{ctx.Locale.Tr "repo.settings.block_outdated_branch"}}</label>
  252. <p class="help">{{ctx.Locale.Tr "repo.settings.block_outdated_branch_desc"}}</p>
  253. </div>
  254. </div>
  255. <div class="divider"></div>
  256. <div class="field">
  257. <button class="ui primary button">{{ctx.Locale.Tr "repo.settings.protected_branch.save_rule"}}</button>
  258. </div>
  259. </div>
  260. </form>
  261. </div>
  262. {{template "repo/settings/layout_footer" .}}