Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

protected_branch.tmpl 12KB

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