diff options
9 files changed, 136 insertions, 101 deletions
diff --git a/app/views/projects/_merge_request_merge_checks_settings.html.haml b/app/views/projects/_merge_request_merge_checks_settings.html.haml new file mode 100644 index 00000000000..1ab467a3710 --- /dev/null +++ b/app/views/projects/_merge_request_merge_checks_settings.html.haml @@ -0,0 +1,19 @@ +- form = local_assigns.fetch(:form) + +.form-group + %b= s_('ProjectSettings|Merge checks') + %p.text-secondary= s_('ProjectSettings|These checks must pass before merge requests can be merged') + .form-check.mb-2.builds-feature{ class: ("hidden" if @project && @project.project_feature.send(:builds_access_level) == 0) } + = form.check_box :only_allow_merge_if_pipeline_succeeds, class: 'form-check-input' + = form.label :only_allow_merge_if_pipeline_succeeds, class: 'form-check-label' do + = s_('ProjectSettings|Pipelines must succeed') + .descr.text-secondary + = s_('ProjectSettings|Pipelines need to be configured to enable this feature.') + = link_to icon('question-circle'), + help_page_path('ci/merge_request_pipelines/index.md', + anchor: 'pipelines-for-merge-requests'), + target: '_blank' + .form-check.mb-2 + = form.check_box :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-input' + = form.label :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-label' do + = s_('ProjectSettings|All discussions must be resolved') diff --git a/app/views/projects/_merge_request_merge_method_settings.html.haml b/app/views/projects/_merge_request_merge_method_settings.html.haml index 9082bfc409d..47c311f42d0 100644 --- a/app/views/projects/_merge_request_merge_method_settings.html.haml +++ b/app/views/projects/_merge_request_merge_method_settings.html.haml @@ -1,30 +1,33 @@ - form = local_assigns.fetch(:form) .form-group - = label_tag :merge_method_merge, class: 'label-bold' do - = _('Merge method') - .form-check + %b= s_('ProjectSettings|Merge method') + %p.text-secondary= s_('ProjectSettings|This will dictate the commit history when you merge a merge request') + .form-check.mb-2 = form.radio_button :merge_method, :merge, class: "js-merge-method-radio form-check-input" = label_tag :project_merge_method_merge, class: 'form-check-label' do - .mb-3 - = _('Merge commit') - .text-secondary - = _('A merge commit is created for every merge, and merging is allowed as long as there are no conflicts.') + = s_('ProjectSettings|Merge commit') + .descr.text-secondary + = s_('ProjectSettings|Every merge creates a merge commit') -.form-check - = form.radio_button :merge_method, :rebase_merge, class: "js-merge-method-radio form-check-input" - = label_tag :project_merge_method_rebase_merge, class: 'form-check-label' do - .mb-3 - = _('Merge commit with semi-linear history') - .text-secondary - = _('A merge commit is created for every merge, but merging is only allowed if fast-forward merge is possible. This way you could make sure that if this merge request would build, after merging to target branch it would also build.') - .text-secondary - = _('When fast-forward merge is not possible, the user is given the option to rebase.') + .form-check.mb-2 + = form.radio_button :merge_method, :rebase_merge, class: "js-merge-method-radio form-check-input" + = label_tag :project_merge_method_rebase_merge, class: 'form-check-label' do + = s_('ProjectSettings|Merge commit with semi-linear history') + .descr.text-secondary + = s_('ProjectSettings|Every merge creates a merge commit') + %br + = s_('ProjectSettings|Fast-forward merges only') + %br + = s_('ProjectSettings|When conflicts arise the user is given the option to rebase') -.form-check - = form.radio_button :merge_method, :ff, class: "js-merge-method-radio qa-radio-button-merge-ff form-check-input" - = label_tag :project_merge_method_ff, class: 'form-check-label' do - .mb-3 - = _('Fast-forward merge') - .text-secondary - = _('No merge commits are created and all merges are fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. When fast-forward merge is not possible, the user is given the option to rebase.') + .form-check.mb-2 + = form.radio_button :merge_method, :ff, class: "js-merge-method-radio qa-radio-button-merge-ff form-check-input" + = label_tag :project_merge_method_ff, class: 'form-check-label' do + = s_('ProjectSettings|Fast-forward merge') + .descr.text-secondary + = s_('ProjectSettings|No merge commits are created') + %br + = s_('ProjectSettings|Fast-forward merges only') + %br + = s_('ProjectSettings|When conflicts arise the user is given the option to rebase') diff --git a/app/views/projects/_merge_request_merge_options_settings.html.haml b/app/views/projects/_merge_request_merge_options_settings.html.haml new file mode 100644 index 00000000000..5ab475822de --- /dev/null +++ b/app/views/projects/_merge_request_merge_options_settings.html.haml @@ -0,0 +1,14 @@ +- form = local_assigns.fetch(:form) + +.form-group + %b= s_('ProjectSettings|Merge options') + %p.text-secondary= s_('ProjectSettings|Additional merge request capabilities that influence how and when merges will be performed') + = render_if_exists 'projects/merge_pipelines_settings', form: form + .form-check.mb-2 + = form.check_box :resolve_outdated_diff_discussions, class: 'form-check-input' + = form.label :resolve_outdated_diff_discussions, class: 'form-check-label' do + = s_('ProjectSettings|Automatically resolve merge request diff discussions when they become outdated') + .form-check.mb-2 + = form.check_box :printing_merge_request_link_enabled, class: 'form-check-input' + = form.label :printing_merge_request_link_enabled, class: 'form-check-label' do + = s_('ProjectSettings|Show link to create/view merge request when pushing from the command line') diff --git a/app/views/projects/_merge_request_merge_settings.html.haml b/app/views/projects/_merge_request_merge_settings.html.haml deleted file mode 100644 index 3a9f7ca42db..00000000000 --- a/app/views/projects/_merge_request_merge_settings.html.haml +++ /dev/null @@ -1,24 +0,0 @@ -- form = local_assigns.fetch(:form) - -.form-group - .form-check.builds-feature{ class: ("hidden" if @project && @project.project_feature.send(:builds_access_level) == 0) } - = form.check_box :only_allow_merge_if_pipeline_succeeds, class: 'form-check-input' - = form.label :only_allow_merge_if_pipeline_succeeds, class: 'form-check-label' do - .mb-3 - = _('Only allow merge requests to be merged if the pipeline succeeds') - .text-secondary - = _('Pipelines need to be configured to enable this feature.') - = link_to icon('question-circle'), help_page_path('user/project/merge_requests/merge_when_pipeline_succeeds', anchor: 'only-allow-merge-requests-to-be-merged-if-the-pipeline-succeeds'), target: '_blank' - = render_if_exists 'projects/merge_pipelines_settings', form: form - .form-check - = form.check_box :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-input' - = form.label :only_allow_merge_if_all_discussions_are_resolved, class: 'form-check-label' do - %p= _('Only allow merge requests to be merged if all discussions are resolved') - .form-check - = form.check_box :resolve_outdated_diff_discussions, class: 'form-check-input' - = form.label :resolve_outdated_diff_discussions, class: 'form-check-label' do - %p= _('Automatically resolve merge request diff discussions when they become outdated') - .form-check - = form.check_box :printing_merge_request_link_enabled, class: 'form-check-input' - = form.label :printing_merge_request_link_enabled, class: 'form-check-label' do - %p= _('Show link to create/view merge request when pushing from the command line') diff --git a/app/views/projects/_merge_request_settings.html.haml b/app/views/projects/_merge_request_settings.html.haml index c80e831dd33..f2ba38387a3 100644 --- a/app/views/projects/_merge_request_settings.html.haml +++ b/app/views/projects/_merge_request_settings.html.haml @@ -2,4 +2,6 @@ = render 'projects/merge_request_merge_method_settings', project: @project, form: form -= render 'projects/merge_request_merge_settings', form: form += render 'projects/merge_request_merge_options_settings', project: @project, form: form + += render 'projects/merge_request_merge_checks_settings', project: @project, form: form diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 1a3e4a5d608..c04530dc62c 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -27,7 +27,7 @@ .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Merge requests') %button.btn.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') - %p= _('Choose your merge method, set up a default merge request description template.') + %p= _('Choose your merge method, options, checks, and set up a default merge request description template.') .settings-content = render_if_exists 'shared/promotions/promote_mr_features' diff --git a/changelogs/unreleased/ce-10725-restructure-project-merge-request-settings-page.yml b/changelogs/unreleased/ce-10725-restructure-project-merge-request-settings-page.yml new file mode 100644 index 00000000000..7aa9204fe4e --- /dev/null +++ b/changelogs/unreleased/ce-10725-restructure-project-merge-request-settings-page.yml @@ -0,0 +1,5 @@ +--- +title: Reorganize project merge request settings +merge_request: 26834 +author: +type: changed diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 6b1d9e268c5..54c40e48084 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -375,12 +375,6 @@ msgstr "" msgid "A member of GitLab's abuse team will review your report as soon as possible." msgstr "" -msgid "A merge commit is created for every merge, and merging is allowed as long as there are no conflicts." -msgstr "" - -msgid "A merge commit is created for every merge, but merging is only allowed if fast-forward merge is possible. This way you could make sure that if this merge request would build, after merging to target branch it would also build." -msgstr "" - msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -1173,9 +1167,6 @@ msgstr "" msgid "Automatically marked as default internal user" msgstr "" -msgid "Automatically resolve merge request diff discussions when they become outdated" -msgstr "" - msgid "Automatically resolved" msgstr "" @@ -1722,7 +1713,7 @@ msgstr "" msgid "Choose visibility level, enable/disable project features (issues, repository, wiki, snippets) and set permissions." msgstr "" -msgid "Choose your merge method, set up a default merge request description template." +msgid "Choose your merge method, options, checks, and set up a default merge request description template." msgstr "" msgid "CiStatusLabel|canceled" @@ -4003,9 +3994,6 @@ msgstr "" msgid "Failure" msgstr "" -msgid "Fast-forward merge" -msgstr "" - msgid "Fast-forward merge without a merge commit" msgstr "" @@ -5508,15 +5496,9 @@ msgstr "" msgid "Merge Requests" msgstr "" -msgid "Merge commit" -msgstr "" - msgid "Merge commit message" msgstr "" -msgid "Merge commit with semi-linear history" -msgstr "" - msgid "Merge events" msgstr "" @@ -5526,9 +5508,6 @@ msgstr "" msgid "Merge in progress" msgstr "" -msgid "Merge method" -msgstr "" - msgid "Merge request" msgstr "" @@ -5993,9 +5972,6 @@ msgstr "" msgid "No license. All rights reserved" msgstr "" -msgid "No merge commits are created and all merges are fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. When fast-forward merge is not possible, the user is given the option to rebase." -msgstr "" - msgid "No merge requests found" msgstr "" @@ -6190,12 +6166,6 @@ msgstr "" msgid "Only admins" msgstr "" -msgid "Only allow merge requests to be merged if all discussions are resolved" -msgstr "" - -msgid "Only allow merge requests to be merged if the pipeline succeeds" -msgstr "" - msgid "Only mirror protected branches" msgstr "" @@ -6460,9 +6430,6 @@ msgstr "" msgid "Pipelines for last year" msgstr "" -msgid "Pipelines need to be configured to enable this feature." -msgstr "" - msgid "Pipelines settings for '%{project_name}' were successfully updated." msgstr "" @@ -7096,15 +7063,69 @@ msgstr "" msgid "ProjectPage|Project ID: %{project_id}" msgstr "" +msgid "ProjectSettings|Additional merge request capabilities that influence how and when merges will be performed" +msgstr "" + +msgid "ProjectSettings|All discussions must be resolved" +msgstr "" + +msgid "ProjectSettings|Automatically resolve merge request diff discussions when they become outdated" +msgstr "" + msgid "ProjectSettings|Badges" msgstr "" msgid "ProjectSettings|Customize your project badges." msgstr "" +msgid "ProjectSettings|Every merge creates a merge commit" +msgstr "" + +msgid "ProjectSettings|Fast-forward merge" +msgstr "" + +msgid "ProjectSettings|Fast-forward merges only" +msgstr "" + msgid "ProjectSettings|Learn more about badges." msgstr "" +msgid "ProjectSettings|Merge checks" +msgstr "" + +msgid "ProjectSettings|Merge commit" +msgstr "" + +msgid "ProjectSettings|Merge commit with semi-linear history" +msgstr "" + +msgid "ProjectSettings|Merge method" +msgstr "" + +msgid "ProjectSettings|Merge options" +msgstr "" + +msgid "ProjectSettings|No merge commits are created" +msgstr "" + +msgid "ProjectSettings|Pipelines must succeed" +msgstr "" + +msgid "ProjectSettings|Pipelines need to be configured to enable this feature." +msgstr "" + +msgid "ProjectSettings|Show link to create/view merge request when pushing from the command line" +msgstr "" + +msgid "ProjectSettings|These checks must pass before merge requests can be merged" +msgstr "" + +msgid "ProjectSettings|This will dictate the commit history when you merge a merge request" +msgstr "" + +msgid "ProjectSettings|When conflicts arise the user is given the option to rebase" +msgstr "" + msgid "Projects" msgstr "" @@ -8147,9 +8168,6 @@ msgstr "" msgid "Show latest version" msgstr "" -msgid "Show link to create/view merge request when pushing from the command line" -msgstr "" - msgid "Show parent pages" msgstr "" @@ -10168,9 +10186,6 @@ msgstr "" msgid "When enabled, users cannot use GitLab until the terms have been accepted." msgstr "" -msgid "When fast-forward merge is not possible, the user is given the option to rebase." -msgstr "" - msgid "When leaving the URL blank, classification labels can still be specified without disabling cross project features or performing external authorization checks." msgstr "" diff --git a/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb b/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb index b1c2bab08c0..28d52f25f56 100644 --- a/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb +++ b/spec/features/projects/settings/user_manages_merge_requests_settings_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' describe 'Projects > Settings > User manages merge request settings' do @@ -30,16 +31,16 @@ describe 'Projects > Settings > User manages merge request settings' do context 'when Merge Request and Pipelines are initially enabled', :js do context 'when Pipelines are initially enabled' do it 'shows the Merge Requests settings' do - expect(page).to have_content('Only allow merge requests to be merged if the pipeline succeeds') - expect(page).to have_content('Only allow merge requests to be merged if all discussions are resolved') + expect(page).to have_content 'Pipelines must succeed' + expect(page).to have_content 'All discussions must be resolved' within('.sharing-permissions-form') do find('.project-feature-controls[data-for="project[project_feature_attributes][merge_requests_access_level]"] .project-feature-toggle').click find('input[value="Save changes"]').send_keys(:return) end - expect(page).not_to have_content('Only allow merge requests to be merged if the pipeline succeeds') - expect(page).not_to have_content('Only allow merge requests to be merged if all discussions are resolved') + expect(page).not_to have_content 'Pipelines must succeed' + expect(page).not_to have_content 'All discussions must be resolved' end end @@ -50,16 +51,16 @@ describe 'Projects > Settings > User manages merge request settings' do end it 'shows the Merge Requests settings that do not depend on Builds feature' do - expect(page).not_to have_content('Only allow merge requests to be merged if the pipeline succeeds') - expect(page).to have_content('Only allow merge requests to be merged if all discussions are resolved') + expect(page).not_to have_content 'Pipelines must succeed' + expect(page).to have_content 'All discussions must be resolved' within('.sharing-permissions-form') do find('.project-feature-controls[data-for="project[project_feature_attributes][builds_access_level]"] .project-feature-toggle').click find('input[value="Save changes"]').send_keys(:return) end - expect(page).to have_content('Only allow merge requests to be merged if the pipeline succeeds') - expect(page).to have_content('Only allow merge requests to be merged if all discussions are resolved') + expect(page).to have_content 'Pipelines must succeed' + expect(page).to have_content 'All discussions must be resolved' end end end @@ -71,16 +72,16 @@ describe 'Projects > Settings > User manages merge request settings' do end it 'does not show the Merge Requests settings' do - expect(page).not_to have_content('Only allow merge requests to be merged if the pipeline succeeds') - expect(page).not_to have_content('Only allow merge requests to be merged if all discussions are resolved') + expect(page).not_to have_content 'Pipelines must succeed' + expect(page).not_to have_content 'All discussions must be resolved' within('.sharing-permissions-form') do find('.project-feature-controls[data-for="project[project_feature_attributes][merge_requests_access_level]"] .project-feature-toggle').click find('input[value="Save changes"]').send_keys(:return) end - expect(page).to have_content('Only allow merge requests to be merged if the pipeline succeeds') - expect(page).to have_content('Only allow merge requests to be merged if all discussions are resolved') + expect(page).to have_content 'Pipelines must succeed' + expect(page).to have_content 'All discussions must be resolved' end end |