diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-20 14:18:08 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-20 14:18:08 +0300 |
commit | 5afcbe03ead9ada87621888a31a62652b10a7e4f (patch) | |
tree | 9918b67a0d0f0bafa6542e839a8be37adf73102d /app/views/projects/settings | |
parent | c97c0201564848c1f53226fe19d71fdcc472f7d0 (diff) |
Add latest changes from gitlab-org/gitlab@16-4-stable-eev16.4.0-rc42
Diffstat (limited to 'app/views/projects/settings')
17 files changed, 191 insertions, 17 deletions
diff --git a/app/views/projects/settings/access_tokens/index.html.haml b/app/views/projects/settings/access_tokens/index.html.haml index b81c3bc9704..ea3ad370fb5 100644 --- a/app/views/projects/settings/access_tokens/index.html.haml +++ b/app/views/projects/settings/access_tokens/index.html.haml @@ -18,9 +18,8 @@ = _('Project access token creation is disabled in this group.') - root_group = @project.group.root_ancestor - if current_user.can?(:admin_group, root_group) - - group_settings_link = edit_group_path(root_group) - - link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: group_settings_link } - = _('You can enable project access token creation in %{link_start}group settings%{link_end}.').html_safe % { link_start: link_start, link_end: '</a>'.html_safe } + - link = link_to('', edit_group_path(root_group), target: '_blank', rel: 'noopener noreferrer') + = safe_format(_('You can enable project access token creation in %{link_start}group settings%{link_end}.'), tag_pair(link, :link_start, :link_end)) = html_escape(_('You can still use and manage existing tokens. %{link_start}Learn more.%{link_end}')) % { link_start: help_link_start, link_end: '</a>'.html_safe } #js-new-access-token-app{ data: { access_token_type: type } } diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml index 6de39058455..17953e3bc14 100644 --- a/app/views/projects/settings/ci_cd/show.html.haml +++ b/app/views/projects/settings/ci_cd/show.html.haml @@ -25,9 +25,9 @@ %p.gl-text-secondary - auto_devops_url = help_page_path('topics/autodevops/index') - quickstart_url = help_page_path('topics/autodevops/cloud_deployments/auto_devops_with_gke') - - auto_devops_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: auto_devops_url } - - quickstart_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: quickstart_url } - = s_('AutoDevOps|%{auto_devops_start}Automate building, testing, and deploying%{auto_devops_end} your applications based on your continuous integration and delivery configuration. %{quickstart_start}How do I get started?%{quickstart_end}').html_safe % { auto_devops_start: auto_devops_start, auto_devops_end: '</a>'.html_safe, quickstart_start: quickstart_start, quickstart_end: '</a>'.html_safe } + - auto_devops_link = link_to('', auto_devops_url, target: '_blank', rel: 'noopener noreferrer') + - quickstart_link = link_to('', quickstart_url, target: '_blank', rel: 'noopener noreferrer') + = safe_format(s_('AutoDevOps|%{auto_devops_start}Automate building, testing, and deploying%{auto_devops_end} your applications based on your continuous integration and delivery configuration. %{quickstart_start}How do I get started?%{quickstart_end}'), tag_pair(auto_devops_link, :auto_devops_start, :auto_devops_end), tag_pair(quickstart_link, :quickstart_start, :quickstart_end)) .settings-content = render 'autodevops_form', auto_devops_enabled: @project.auto_devops_enabled? @@ -44,10 +44,7 @@ = _("Runners are processes that pick up and execute CI/CD jobs for GitLab.") = link_to s_('What is GitLab Runner?'), 'https://docs.gitlab.com/runner/', target: '_blank', rel: 'noopener noreferrer' .settings-content - - if Feature.enabled?(:project_runners_vue_ui, @project) - #js-project-runners{ data: { project_full_path: @project.full_path } } - - else - = render 'projects/runners/settings' + = render 'projects/runners/settings' - if Gitlab::CurrentSettings.current_application_settings.keep_latest_artifact? %section.settings.no-animate#js-artifacts-settings{ class: ('expanded' if expanded) } diff --git a/app/views/projects/settings/integrations/_form.html.haml b/app/views/projects/settings/integrations/_form.html.haml index 97c7729de44..d2df01c22bb 100644 --- a/app/views/projects/settings/integrations/_form.html.haml +++ b/app/views/projects/settings/integrations/_form.html.haml @@ -15,9 +15,12 @@ = render 'shared/integrations/slack_notifications_deprecation_alert' %h2.gl-mb-0.gl-display-flex.gl-align-items-center.gl-gap-3 + = render Pajamas::AvatarComponent.new(integration, size: 64, alt: '') = integration.title - if integration.operating? - = render Pajamas::BadgeComponent.new(s_('FeatureFlags|Active'), variant: 'success') + = render Pajamas::BadgeComponent.new(_('Active'), variant: 'success', icon: 'status-success') + - elsif integration.persisted? + = render Pajamas::BadgeComponent.new(_('Inactive'), variant: 'neutral', icon: 'status-paused') = render 'shared/integration_settings', integration: integration - if lookup_context.template_exists?('show', "shared/integrations/#{integration.to_param}", true) diff --git a/app/views/projects/settings/integrations/index.html.haml b/app/views/projects/settings/integrations/index.html.haml index 6c0c99543cc..dca028d6167 100644 --- a/app/views/projects/settings/integrations/index.html.haml +++ b/app/views/projects/settings/integrations/index.html.haml @@ -6,7 +6,7 @@ %section.js-search-settings-section %h3= _('Integrations') - - integrations_link_start = '<a href="%{url}">'.html_safe % { url: help_page_url('user/project/integrations/index') } - - webhooks_link_start = '<a href="%{url}">'.html_safe % { url: project_hooks_path(@project) } - %p.gl-text-secondary= _("%{integrations_link_start}Integrations%{link_end} enable you to make third-party applications part of your GitLab workflow. If the available integrations don't meet your needs, consider using a %{webhooks_link_start}webhook%{link_end}.").html_safe % { integrations_link_start: integrations_link_start, webhooks_link_start: webhooks_link_start, link_end: '</a>'.html_safe } + - integrations_link = link_to('', help_page_url('user/project/integrations/index')) + - webhooks_link = link_to('', project_hooks_path(@project)) + %p.gl-text-secondary= safe_format(_("%{integrations_link_start}Integrations%{link_end} enable you to make third-party applications part of your GitLab workflow. If the available integrations don't meet your needs, consider using a %{webhooks_link_start}webhook%{link_end}."), tag_pair(integrations_link, :integrations_link_start, :link_end), tag_pair(webhooks_link, :webhooks_link_start, :link_end)) = render 'shared/integrations/index', integrations: @integrations diff --git a/app/views/projects/settings/merge_requests/_merge_request_merge_checks_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_merge_checks_settings.html.haml new file mode 100644 index 00000000000..fa9b39e0846 --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_merge_checks_settings.html.haml @@ -0,0 +1,8 @@ +- 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.') + = render 'projects/settings/merge_requests/merge_request_pipelines_and_threads_options', form: form, project: @project + = render_if_exists 'projects/settings/merge_requests/merge_request_merge_checks_status_checks', form: form, project: @project + = render_if_exists 'projects/settings/merge_requests/merge_request_merge_checks_jira_enforcement', form: form, project: @project diff --git a/app/views/projects/settings/merge_requests/_merge_request_merge_commit_template.html.haml b/app/views/projects/settings/merge_requests/_merge_request_merge_commit_template.html.haml new file mode 100644 index 00000000000..da1965f549c --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_merge_commit_template.html.haml @@ -0,0 +1,13 @@ +- form = local_assigns.fetch(:form) + +.form-group + %b= s_('ProjectSettings|Merge commit message template') + %p.text-secondary + = s_('ProjectSettings|The commit message used when merging, if the merge method creates a merge commit.') + .mb-2 + = form.text_area :merge_commit_template_or_default, class: 'form-control gl-form-input', rows: 8, maxlength: Project::MAX_COMMIT_TEMPLATE_LENGTH, placeholder: s_('ProjectSettings|The default template will be applied on save.') + %p.form-text.text-muted + = s_('ProjectSettings|Leave empty to use default template.') + = sprintf(s_('ProjectSettings|Maximum %{maxLength} characters.'), { maxLength: Project::MAX_COMMIT_TEMPLATE_LENGTH }) + - link = link_to('', help_page_path('user/project/merge_requests/commit_templates.md'), target: '_blank', rel: 'noopener noreferrer') + = safe_format(s_('ProjectSettings|%{link_start}What variables can I use?%{link_end}'), tag_pair(link, :link_start, :link_end)) diff --git a/app/views/projects/settings/merge_requests/_merge_request_merge_method_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_merge_method_settings.html.haml new file mode 100644 index 00000000000..dd32d3f9d92 --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_merge_method_settings.html.haml @@ -0,0 +1,38 @@ +- form = local_assigns.fetch(:form) + +- labelMerge = s_('ProjectSettings|Merge commit') +- everyMergeCommit = s_('ProjectSettings|Every merge creates a merge commit.') + +- labelRebase = s_('ProjectSettings|Merge commit with semi-linear history') +- rebaseUpToDate = s_('ProjectSettings|Merging is only allowed when the source branch is up-to-date with its target.') +- rebaseSemiLinear = s_('ProjectSettings|When semi-linear merge is not possible, the user is given the option to rebase.') + +- labelFastForward = s_('ProjectSettings|Fast-forward merge') +- noMergeCommit = s_('ProjectSettings|No merge commits are created.') +- ffOnly = s_('ProjectSettings|Fast-forward merges only.') +- ffConflictRebase = s_('ProjectSettings|When there is a merge conflict, the user is given the option to rebase.') +- ffTrains = s_('ProjectSettings|If merge trains are enabled, merging is only possible if the branch can be rebased without conflicts.') +- ffTrainsHelp = link_to s_('ProjectSettings|What are merge trains?'), help_page_path('ci/pipelines/merge_trains.md', anchor: 'enable-merge-trains'), target: '_blank', rel: 'noopener noreferrer' + +- ffTrainsWithFastForward = (noMergeCommit + "<br />" + ffOnly + "<br />" + ffConflictRebase + "<br />" + ffTrains + " " + ffTrainsHelp).html_safe +- ffTrainsWithoutFastForward = (noMergeCommit + "<br />" + ffOnly + "<br />" + ffConflictRebase).html_safe +- ffTrainsHelpFullHelpText = Feature.enabled?(:fast_forward_merge_trains_support) ? ffTrainsWithFastForward : ffTrainsWithoutFastForward + +.form-group + %b= s_('ProjectSettings|Merge method') + %p.text-secondary + = s_('ProjectSettings|Determine what happens to the commit history when you merge a merge request.') + = link_to s_('ProjectSettings|How do they differ?'), help_page_path('user/project/merge_requests/methods/index.md'), target: '_blank', rel: 'noopener noreferrer' + = form.gitlab_ui_radio_component :merge_method, + :merge, + labelMerge, + help_text: everyMergeCommit + = form.gitlab_ui_radio_component :merge_method, + :rebase_merge, + labelRebase, + help_text: (everyMergeCommit + "<br />" + rebaseUpToDate + "<br />" + rebaseSemiLinear).html_safe + = form.gitlab_ui_radio_component :merge_method, + :ff, + labelFastForward, + help_text: ffTrainsHelpFullHelpText, + radio_options: { data: { qa_selector: 'merge_ff_radio' } } diff --git a/app/views/projects/settings/merge_requests/_merge_request_merge_options_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_merge_options_settings.html.haml new file mode 100644 index 00000000000..db7e59d6e2a --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_merge_options_settings.html.haml @@ -0,0 +1,14 @@ +- form = local_assigns.fetch(:form) + +.form-group#project-merge-options{ data: { project_full_path: @project.full_path } } + %b= s_('ProjectSettings|Merge options') + %p.text-secondary= s_('ProjectSettings|Additional settings that influence how and when merges are done.') + = render_if_exists 'projects/settings/merge_requests/merge_pipelines_settings', form: form + = render_if_exists 'projects/settings/merge_requests/merge_trains_settings', form: form + = form.gitlab_ui_checkbox_component :resolve_outdated_diff_discussions, + s_('ProjectSettings|Automatically resolve merge request diff threads when they become outdated') + = form.gitlab_ui_checkbox_component :printing_merge_request_link_enabled, + s_('ProjectSettings|Show link to create or view a merge request when pushing from the command line') + = form.gitlab_ui_checkbox_component :remove_source_branch_after_merge, + s_('ProjectSettings|Enable "Delete source branch" option by default'), + help_text: s_('ProjectSettings|Existing merge requests and protected branches are not affected.') diff --git a/app/views/projects/settings/merge_requests/_merge_request_merge_suggestions_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_merge_suggestions_settings.html.haml new file mode 100644 index 00000000000..501288f727b --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_merge_suggestions_settings.html.haml @@ -0,0 +1,13 @@ +- form = local_assigns.fetch(:form) + +.form-group + %b= s_('ProjectSettings|Merge suggestions') + %p.text-secondary + = s_('ProjectSettings|The commit message used when applying merge request suggestions.') + .mb-2 + = form.text_field :suggestion_commit_message, class: 'form-control mb-2', placeholder: Gitlab::Suggestions::CommitMessage::DEFAULT_SUGGESTION_COMMIT_MESSAGE + %p.form-text.text-muted + = s_('ProjectSettings|Leave empty to use default template.') + = sprintf(s_('ProjectSettings|Maximum %{maxLength} characters.'), { maxLength: Project::MAX_SUGGESTIONS_TEMPLATE_LENGTH }) + - link = link_to('', help_page_path('user/project/merge_requests/reviews/suggestions.md', anchor: 'configure-the-commit-message-for-applied-suggestions'), target: '_blank', rel: 'noopener noreferrer') + = safe_format(s_('ProjectSettings|%{link_start}What variables can I use?%{link_end}'), tag_pair(link, :link_start, :link_end)) diff --git a/app/views/projects/settings/merge_requests/_merge_request_pipelines_and_threads_options.html.haml b/app/views/projects/settings/merge_requests/_merge_request_pipelines_and_threads_options.html.haml new file mode 100644 index 00000000000..a9609434f15 --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_pipelines_and_threads_options.html.haml @@ -0,0 +1,13 @@ +- form = local_assigns.fetch(:form) + += form.gitlab_ui_checkbox_component :only_allow_merge_if_pipeline_succeeds, + s_('MergeChecks|Pipelines must succeed'), + help_text: s_("MergeChecks|Merge requests can't be merged if the latest pipeline did not succeed or is still running.") +.gl-pl-6 + = form.gitlab_ui_checkbox_component :allow_merge_on_skipped_pipeline, + s_('MergeChecks|Skipped pipelines are considered successful'), + help_text: s_('MergeChecks|Introduces the risk of merging changes that do not pass the pipeline.'), + checkbox_options: { class: 'gl-pl-6' } += form.gitlab_ui_checkbox_component :only_allow_merge_if_all_discussions_are_resolved, + s_('MergeChecks|All threads must be resolved'), + checkbox_options: { data: { qa_selector: 'only_allow_merge_if_all_discussions_are_resolved_checkbox' } } diff --git a/app/views/projects/settings/merge_requests/_merge_request_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_settings.html.haml new file mode 100644 index 00000000000..9449fc7f4ae --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_settings.html.haml @@ -0,0 +1,18 @@ +- form = local_assigns.fetch(:form) + += render 'projects/settings/merge_requests/merge_request_merge_method_settings', project: @project, form: form + += render 'projects/settings/merge_requests/merge_request_merge_options_settings', project: @project, form: form + += render 'projects/settings/merge_requests/merge_request_squash_options_settings', form: form + += render 'projects/settings/merge_requests/merge_request_merge_checks_settings', project: @project, form: form + += render 'projects/settings/merge_requests/merge_request_merge_suggestions_settings', project: @project, form: form + += render 'projects/settings/merge_requests/merge_request_merge_commit_template', project: @project, form: form + += render 'projects/settings/merge_requests/merge_request_squash_commit_template', project: @project, form: form + +- if @project.forked? + = render 'projects/settings/merge_requests/merge_request_target_project_settings', project: @project, form: form diff --git a/app/views/projects/settings/merge_requests/_merge_request_settings_description_text.html.haml b/app/views/projects/settings/merge_requests/_merge_request_settings_description_text.html.haml new file mode 100644 index 00000000000..123520acad8 --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_settings_description_text.html.haml @@ -0,0 +1 @@ +%p.gl-text-secondary= s_('ProjectSettings|Choose your merge method, merge options, merge checks, and merge suggestions.') diff --git a/app/views/projects/settings/merge_requests/_merge_request_squash_commit_template.html.haml b/app/views/projects/settings/merge_requests/_merge_request_squash_commit_template.html.haml new file mode 100644 index 00000000000..bc6530b927c --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_squash_commit_template.html.haml @@ -0,0 +1,13 @@ +- form = local_assigns.fetch(:form) + +.form-group + %b= s_('ProjectSettings|Squash commit message template') + %p.text-secondary + = s_('ProjectSettings|The commit message used when squashing commits.') + .mb-2 + = form.text_area :squash_commit_template_or_default, class: 'form-control gl-form-input', rows: 8, maxlength: Project::MAX_COMMIT_TEMPLATE_LENGTH, placeholder: s_('ProjectSettings|The default template will be applied on save.') + %p.form-text.text-muted + = s_('ProjectSettings|Leave empty to use default template.') + = sprintf(s_('ProjectSettings|Maximum %{maxLength} characters.'), { maxLength: Project::MAX_COMMIT_TEMPLATE_LENGTH }) + - link = link_to('', help_page_path('user/project/merge_requests/commit_templates.md'), target: '_blank', rel: 'noopener noreferrer') + = safe_format(s_('ProjectSettings|%{link_start}What variables can I use?%{link_end}'), tag_pair(link, :link_start, :link_end)) diff --git a/app/views/projects/settings/merge_requests/_merge_request_squash_options_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_squash_options_settings.html.haml new file mode 100644 index 00000000000..372c0723600 --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_squash_options_settings.html.haml @@ -0,0 +1,25 @@ +- form = local_assigns.fetch(:form) + += form.fields_for :project_setting do |settings| + .form-group + %b= s_('ProjectSettings|Squash commits when merging') + %p.text-secondary + = s_('ProjectSettings|Set the default behavior of this option in merge requests. Changes to this are also applied to existing merge requests.') + = link_to s_('ProjectSettings|What is squashing?'), help_page_path('user/project/merge_requests/squash_and_merge.md'), target: '_blank', rel: 'noopener noreferrer' + + = settings.gitlab_ui_radio_component :squash_option, + :never, + s_('ProjectSettings|Do not allow'), + help_text: s_('ProjectSettings|Squashing is never performed and the checkbox is hidden.') + = settings.gitlab_ui_radio_component :squash_option, + :default_off, + s_('ProjectSettings|Allow'), + help_text: s_('ProjectSettings|Checkbox is visible and unselected by default.') + = settings.gitlab_ui_radio_component :squash_option, + :default_on, + s_('ProjectSettings|Encourage'), + help_text: s_('ProjectSettings|Checkbox is visible and selected by default.') + = settings.gitlab_ui_radio_component :squash_option, + :always, + s_('ProjectSettings|Require'), + help_text: s_('ProjectSettings|Squashing is always performed. Checkbox is visible and selected, and users cannot change it.') diff --git a/app/views/projects/settings/merge_requests/_merge_request_target_project_settings.html.haml b/app/views/projects/settings/merge_requests/_merge_request_target_project_settings.html.haml new file mode 100644 index 00000000000..6f2917f24e0 --- /dev/null +++ b/app/views/projects/settings/merge_requests/_merge_request_target_project_settings.html.haml @@ -0,0 +1,18 @@ +- return unless @project.mr_can_target_upstream? && can?(current_user, :read_project, @project.forked_from_project) + +- form = local_assigns.fetch(:form) + += form.fields_for :project_setting do |settings| + .form-group + %b= s_('ProjectSettings|Target project') + %p.text-secondary + = s_('ProjectSettings|The default target project for merge requests created in this fork project.') + + = settings.gitlab_ui_radio_component :mr_default_target_self, + false, + s_('ProjectSettings|Upstream project'), + help_text: @project.forked_from_project.full_name + = settings.gitlab_ui_radio_component :mr_default_target_self, + true, + s_('ProjectSettings|This project'), + help_text: @project.full_name diff --git a/app/views/projects/settings/merge_requests/show.html.haml b/app/views/projects/settings/merge_requests/show.html.haml index ef528d17fc9..01af028f30c 100644 --- a/app/views/projects/settings/merge_requests/show.html.haml +++ b/app/views/projects/settings/merge_requests/show.html.haml @@ -5,15 +5,16 @@ %section.rspec-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings.expanded{ class: [('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)], data: { qa_selector: 'merge_request_settings_content' } } .settings-header %h4= _('Merge requests') - = render_if_exists 'projects/merge_request_settings_description_text' + = render_if_exists 'projects/settings/merge_requests/merge_request_settings_description_text' .settings-content = render_if_exists 'shared/promotions/promote_mr_features' = gitlab_ui_form_for @project, url: project_settings_merge_requests_path(@project), html: { multipart: true, class: "merge-request-settings-form js-mr-settings-form" }, authenticity_token: true do |f| %input{ name: 'update_section', type: 'hidden', value: 'js-merge-request-settings' } - = render 'projects/merge_request_settings', form: f + = render 'projects/settings/merge_requests/merge_request_settings', form: f = f.submit _('Save changes'), class: "rspec-save-merge-request-changes", data: { qa_selector: 'save_merge_request_changes_button' }, pajamas_button: true = 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' diff --git a/app/views/projects/settings/operations/_alert_management.html.haml b/app/views/projects/settings/operations/_alert_management.html.haml index 398c7758d66..c29cedd8250 100644 --- a/app/views/projects/settings/operations/_alert_management.html.haml +++ b/app/views/projects/settings/operations/_alert_management.html.haml @@ -3,7 +3,7 @@ - add_page_specific_style 'page_bundles/alert_management_settings' - add_page_specific_style 'page_bundles/incident_management_list' -%section.settings.no-animate#js-alert-management-settings{ class: ('expanded' if expanded), data: { qa_selector: 'alerts_settings_content' } } +%section.settings.no-animate#js-alert-management-settings{ class: ('expanded' if expanded), data: { testid: 'alerts-settings-content' } } .settings-header %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only = _('Alerts') |