Skip to content
Snippets Groups Projects
Unverified Commit bfb61a95 authored by Kushal Pandya's avatar Kushal Pandya
Browse files

Merge branch 'ph/targetBranchRulesUI' into 'master'

Added settings view for target branch rules

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129237



Merged-by: default avatarKushal Pandya <kushal@gitlab.com>
Approved-by: default avatarKushal Pandya <kushal@gitlab.com>
Co-authored-by: Phil Hughes's avatarPhil Hughes <me@iamphill.com>
parents 2daf94b7 db62a6bd
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -17,3 +17,4 @@
 
= render_if_exists 'projects/settings/merge_requests/merge_request_approvals_settings', expanded: true
= render_if_exists 'projects/settings/merge_requests/suggested_reviewers_settings', expanded: true
= render_if_exists 'projects/settings/merge_requests/target_branch_rules_settings'
import '~/pages/projects/settings/merge_requests';
import Vue from 'vue';
import RefSelector from '~/ref/components/ref_selector.vue';
import mountApprovals from 'ee/approvals/mount_project_settings';
import { initMergeOptionSettings } from 'ee/pages/projects/edit/merge_options';
import { initMergeRequestMergeChecksApp } from 'ee/merge_checks';
import mountStatusChecks from 'ee/status_checks/mount';
 
function initRefSwitcher() {
const refSwitcherEl = document.getElementById('js-target-branch');
if (!refSwitcherEl) return false;
const { projectId } = refSwitcherEl.dataset;
return new Vue({
el: refSwitcherEl,
render(createElement) {
return createElement(RefSelector, {
props: {
projectId,
value: '',
useSymbolicRefNames: true,
queryParams: { sort: 'updated_desc' },
enabledRefTypes: ['REF_TYPE_BRANCHES'],
},
on: {
input(selectedRef) {
document.getElementById('target_branch_rule_target_branch').value = selectedRef.replace(
/^refs\/(tags|heads)\//,
'',
);
},
},
});
},
});
}
mountApprovals(document.getElementById('js-mr-approvals-settings'));
mountStatusChecks(document.getElementById('js-status-checks-settings'));
 
initMergeOptionSettings();
initMergeRequestMergeChecksApp();
requestIdleCallback(() => {
initRefSwitcher();
});
- return unless can?(current_user, :read_target_branch_rules, @project)
%section.settings.merge-requests-feature.no-animate#js-target-branch-rules.expanded
.settings-header
%h4= _('Target branch rules')
.settings-content
= render Pajamas::CardComponent.new(card_options: { class: 'gl-new-card js-toggle-container' }, header_options: { class: 'gl-new-card-header gl-flex-direction-column' }, body_options: { class: 'gl-new-card-body gl-px-0' }) do |c|
- c.with_header do
.gl-new-card-title-wrapper.gl-justify-content-space-between
%h3.gl-new-card-title
= _("Target branch rules")
.gl-new-card-count
= sprite_icon('branch', css_class: 'gl-mr-2')
%span= @project.target_branch_rules.size
- if can?(current_user, :create_target_branch_rule, @project)
.gl-new-card-actions
= render Pajamas::ButtonComponent.new(size: :small, button_options: { class: 'js-toggle-button js-toggle-content' }) do
= _('Add target branch rule')
.gl-new-card-description.gl-mt-2.gl-sm-mt-0
= _('Create rules for target branches in merge requests.')
- c.with_body do
- if can?(current_user, :create_target_branch_rule, @project)
.gl-new-card-add-form.gl-m-3.gl-display-none.js-toggle-content
= gitlab_ui_form_for [@project] do |f|
%h4.gl-mt-0= _("Target branch rule")
.form-group.row
= f.label :name, _('Rule name'), class: 'col-sm-12'
.col-sm-6
= f.text_field :name, class: 'form-control gl-form-input', placeholder: _('eg. dev/*')
.form-group.row
= f.label :target_branch, _("Targe branch"), class: 'col-sm-12'
.col-sm-6
#js-target-branch{ data: { project_id: @project.id } }
= f.submit _('Save'), pajamas_button: true
= render Pajamas::ButtonComponent.new(button_options: { type: 'reset', class: 'gl-ml-2 js-toggle-button' }) do
= _('Cancel')
%div
- if @project.target_branch_rules.empty?
%p.gl-new-card-empty.gl-px-5.gl-py-4.js-toggle-content
= _("There are currently no target branch rules")
- else
%table.table.b-table.gl-table.b-table-stacked-md
%colgroup
%col{ width: "30%" }
%col{ width: "40%" }
%col
%thead
%tr
%th
= _("Rule name")
%th
= _('Target branch')
%th
%tbody
- @project.target_branch_rules.each do |rule|
%tr
%td.ref-name{ class: "gl-vertical-align-middle!" }= rule.name
%td.ref-name{ class: "gl-vertical-align-middle!" }= rule.target_branch
%td{ class: "gl-vertical-align-middle!" }
Loading
Loading
@@ -2968,6 +2968,9 @@ msgstr ""
msgid "Add tag"
msgstr ""
 
msgid "Add target branch rule"
msgstr ""
msgid "Add text to the sign-in page. Markdown enabled."
msgstr ""
 
Loading
Loading
@@ -13799,6 +13802,9 @@ msgstr ""
msgid "Create requirement"
msgstr ""
 
msgid "Create rules for target branches in merge requests."
msgstr ""
msgid "Create service account"
msgstr ""
 
Loading
Loading
@@ -40289,6 +40295,9 @@ msgstr ""
msgid "Ruby"
msgstr ""
 
msgid "Rule name"
msgstr ""
msgid "Rule name is already taken."
msgstr ""
 
Loading
Loading
@@ -46665,6 +46674,9 @@ msgstr ""
msgid "TanukiBot|What is a fork?"
msgstr ""
 
msgid "Targe branch"
msgstr ""
msgid "Target"
msgstr ""
 
Loading
Loading
@@ -46677,6 +46689,12 @@ msgstr ""
msgid "Target branch"
msgstr ""
 
msgid "Target branch rule"
msgstr ""
msgid "Target branch rules"
msgstr ""
msgid "Target branch: %{target_branch}"
msgstr ""
 
Loading
Loading
@@ -47681,6 +47699,9 @@ msgstr ""
msgid "There are currently no mirrored repositories."
msgstr ""
 
msgid "There are currently no target branch rules"
msgstr ""
msgid "There are merge conflicts"
msgstr ""
 
Loading
Loading
@@ -55884,6 +55905,9 @@ msgstr ""
msgid "eg party_tanuki"
msgstr ""
 
msgid "eg. dev/*"
msgstr ""
msgid "element is not a hierarchy"
msgstr ""
 
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment