Commit b7f76383 authored by Luke Bennett's avatar Luke Bennett

Improve project settings page

Prioritize and simplify project settings content.
parent dc884879
import _ from 'underscore'; import _ from 'underscore';
import $ from 'jquery';
class DirtySubmitForm { class DirtySubmitForm {
constructor(form) { constructor(form) {
...@@ -26,6 +27,7 @@ class DirtySubmitForm { ...@@ -26,6 +27,7 @@ class DirtySubmitForm {
); );
this.form.addEventListener('input', throttledUpdateDirtyInput); this.form.addEventListener('input', throttledUpdateDirtyInput);
this.form.addEventListener('change', throttledUpdateDirtyInput); this.form.addEventListener('change', throttledUpdateDirtyInput);
$(this.form).on('change.select2', throttledUpdateDirtyInput);
this.form.addEventListener('submit', event => this.formSubmit(event)); this.form.addEventListener('submit', event => this.formSubmit(event));
} }
......
...@@ -3,17 +3,24 @@ import initSettingsPanels from '~/settings_panels'; ...@@ -3,17 +3,24 @@ import initSettingsPanels from '~/settings_panels';
import setupProjectEdit from '~/project_edit'; import setupProjectEdit from '~/project_edit';
import initConfirmDangerModal from '~/confirm_danger_modal'; import initConfirmDangerModal from '~/confirm_danger_modal';
import mountBadgeSettings from '~/pages/shared/mount_badge_settings'; import mountBadgeSettings from '~/pages/shared/mount_badge_settings';
import dirtySubmitFactory from '~/dirty_submit/dirty_submit_factory';
import initAvatarPicker from '~/avatar_picker'; import initAvatarPicker from '~/avatar_picker';
import initProjectLoadingSpinner from '../shared/save_project_loader'; import initProjectLoadingSpinner from '../shared/save_project_loader';
import initProjectPermissionsSettings from '../shared/permissions'; import initProjectPermissionsSettings from '../shared/permissions';
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
initProjectLoadingSpinner();
setupProjectEdit();
// Initialize expandable settings panels
initSettingsPanels();
initAvatarPicker(); initAvatarPicker();
initProjectPermissionsSettings();
initConfirmDangerModal(); initConfirmDangerModal();
initSettingsPanels();
mountBadgeSettings(PROJECT_BADGE); mountBadgeSettings(PROJECT_BADGE);
initProjectLoadingSpinner();
initProjectPermissionsSettings();
setupProjectEdit();
dirtySubmitFactory(
document.querySelectorAll(
'.js-general-settings-form, .js-mr-settings-form, .js-add-approver-form',
),
);
}); });
...@@ -157,6 +157,10 @@ label { ...@@ -157,6 +157,10 @@ label {
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
appearance: none; appearance: none;
/* stylelint-disable property-no-vendor-prefix */
-webkit-appearance: none;
-moz-appearance: none;
/* stylelint-enable property-no-vendor-prefix */
&::-ms-expand { &::-ms-expand {
display: none; display: none;
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
.settings-header { .settings-header {
position: relative; position: relative;
padding: 20px 110px 10px 0; padding: 20px 110px 0 0;
h4 { h4 {
margin-top: 0; margin-top: 0;
......
- if ::Gitlab::ExternalAuthorization.enabled? - if ::Gitlab::ExternalAuthorization.enabled?
.form-group .form-group.col-md-9
= f.label :external_authorization_classification_label, class: 'label-bold' do = f.label :external_authorization_classification_label, _('Classification Label (optional)'), class: 'label-bold'
= s_('ExternalAuthorizationService|Classification Label')
%span.light (optional)
= f.text_field :external_authorization_classification_label, class: "form-control" = f.text_field :external_authorization_classification_label, class: "form-control"
%span.form-text.text-muted %span.form-text.text-muted
= external_classification_label_help_message = external_classification_label_help_message
- return unless Gitlab::CurrentSettings.project_export_enabled? - return unless Gitlab::CurrentSettings.project_export_enabled?
- project = local_assigns.fetch(:project) - project = local_assigns.fetch(:project)
- expanded = Rails.env.test?
%section.settings.no-animate#js-export-project{ class: ('expanded' if expanded) } .sub-section
.settings-header %h4= _('Export project')
%h4 %p= _('Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the "New Project" page.')
Export project
%button.btn.js-settings-toggle{ type: 'button' }
= expanded ? 'Collapse' : 'Expand'
%p
Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the "New Project" page.
.settings-content
.bs-callout.bs-callout-info .bs-callout.bs-callout-info
%p.append-bottom-0 %p.append-bottom-0
%p %p= _('The following items will be exported:')
The following items will be exported:
%ul %ul
%li Project and wiki repositories %li= _('Project and wiki repositories')
%li Project uploads %li= _('Project uploads')
%li Project configuration, including services %li= _('Project configuration, including services')
%li Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities %li= _('Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities')
%li LFS objects %li= _('LFS objects')
%p %p= _('The following items will NOT be exported:')
The following items will NOT be exported:
%ul %ul
%li Job traces and artifacts %li= _('Job traces and artifacts')
%li Container registry images %li= _('Container registry images')
%li CI variables %li= _('CI variables')
%li Webhooks %li= _('Webhooks')
%li Any encrypted tokens %li= _('Any encrypted tokens')
%p %p= _('Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page.')
Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page.
- if project.export_status == :finished - if project.export_status == :finished
= link_to 'Download export', download_export_project_path(project), = link_to _('Download export'), download_export_project_path(project),
rel: 'nofollow', download: '', method: :get, class: "btn btn-default" rel: 'nofollow', download: '', method: :get, class: "btn btn-default"
= link_to 'Generate new export', generate_new_export_project_path(project), = link_to _('Generate new export'), generate_new_export_project_path(project),
method: :post, class: "btn btn-default" method: :post, class: "btn btn-default"
- else - else
= link_to 'Export project', export_project_path(project), = link_to _('Export project'), export_project_path(project),
method: :post, class: "btn btn-default" method: :post, class: "btn btn-default"
...@@ -3,56 +3,14 @@ ...@@ -3,56 +3,14 @@
- @content_class = "limit-container-width" unless fluid_layout - @content_class = "limit-container-width" unless fluid_layout
- expanded = Rails.env.test? - expanded = Rails.env.test?
.project-edit-container %section.settings.general-settings.no-animate.expanded#js-general-settings
%section.settings.general-settings.no-animate#js-general-project-settings{ class: ('expanded' if expanded) }
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Naming, tags, avatar') %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Naming, topics, avatar')
%button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') %button.btn.js-settings-toggle{ type: 'button' }= _('Collapse')
%p= _('Update your project name, tags, description and avatar.') %p= _('Update your project name, topics, description and avatar.')
.settings-content= render 'projects/settings/general'
.settings-content
.project-edit-errors
= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "edit-project" }, authenticity_token: true do |f|
%input{ name: 'update_section', type: 'hidden', value: 'js-general-project-settings' }
%fieldset
.row
.form-group.col-md-9
= f.label :name, class: 'label-bold', for: 'project_name_edit' do
Project name
= f.text_field :name, class: "form-control", id: "project_name_edit"
.form-group.col-md-3
= f.label :id, class: 'label-bold' do
Project ID
= f.text_field :id, class: 'form-control', readonly: true
.form-group
= f.label :description, class: 'label-bold' do
Project description
%span.light (optional)
= f.text_area :description, class: "form-control", rows: 3, maxlength: 250
= render 'projects/classification_policy_settings', f: f
= render_if_exists 'shared/repository_size_limit_setting', form: f, type: :project %section.settings.sharing-permissions.no-animate#js-shared-permissions{ class: ('expanded' if expanded) }
.form-group
= f.label :tag_list, "Topics", class: 'label-bold'
= f.text_field :tag_list, value: @project.tag_list.join(', '), maxlength: 2000, class: "form-control"
%p.form-text.text-muted Separate topics with commas.
.form-group.prepend-top-default.append-bottom-20
.avatar-container.s90
= project_icon(@project, alt: _('Project avatar'), class: 'avatar project-avatar s90')
= f.label :avatar, _('Project avatar'), class: 'label-bold d-block'
= render 'shared/choose_avatar_button', f: f
- if @project.avatar?
%hr
= link_to _('Remove avatar'), project_avatar_path(@project), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'btn btn-link'
= f.submit 'Save changes', class: "btn btn-success js-btn-success-general-project-settings"
%section.settings.sharing-permissions.no-animate#js-shared-permissions{ class: ('expanded' if expanded) }
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Visibility, project features, permissions') %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Visibility, project features, permissions')
%button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
...@@ -61,14 +19,11 @@ ...@@ -61,14 +19,11 @@
.settings-content .settings-content
= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "sharing-permissions-form" }, authenticity_token: true do |f| = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "sharing-permissions-form" }, authenticity_token: true do |f|
%input{ name: 'update_section', type: 'hidden', value: 'js-shared-permissions' } %input{ name: 'update_section', type: 'hidden', value: 'js-shared-permissions' }
-# haml-lint:disable InlineJavaScript %template.js-project-permissions-form-data{ type: "application/json" }= project_permissions_panel_data_json(@project)
%script.js-project-permissions-form-data{ type: "application/json" }= project_permissions_panel_data_json(@project)
.js-project-permissions-form .js-project-permissions-form
= f.submit 'Save changes', class: "btn btn-success" = f.submit _('Save changes'), class: "btn btn-success"
= render_if_exists 'projects/issues_settings'
%section.qa-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)] } %section.qa-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)] }
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Merge requests') %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Merge requests')
%button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
...@@ -77,30 +32,31 @@ ...@@ -77,30 +32,31 @@
.settings-content .settings-content
= render_if_exists 'shared/promotions/promote_mr_features' = render_if_exists 'shared/promotions/promote_mr_features'
= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "merge-request-settings-form" }, authenticity_token: true do |f| = form_for [@project.namespace.becomes(Namespace), @project], remote: true, 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' } %input{ name: 'update_section', type: 'hidden', value: 'js-merge-request-settings' }
= render 'projects/merge_request_settings', form: f = render 'projects/merge_request_settings', form: f
= f.submit 'Save changes', class: "btn btn-success qa-save-merge-request-changes" = f.submit _('Save changes'), class: "btn btn-success qa-save-merge-request-changes"
= render_if_exists 'projects/merge_request_approvals_settings', expanded: expanded = render_if_exists 'projects/merge_request_approvals_settings', expanded: expanded
%section.settings.no-animate{ class: ('expanded' if expanded) } %section.settings.no-animate{ class: ('expanded' if expanded) }
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= s_('ProjectSettings|Badges') = s_('ProjectSettings|Badges')
%button.btn.js-settings-toggle{ type: 'button' } %button.btn.js-settings-toggle{ type: 'button' }
= expanded ? 'Collapse' : 'Expand' = expanded ? _('Collapse') : _('Expand')
%p %p
= s_('ProjectSettings|Customize your project badges.') = s_('ProjectSettings|Customize your project badges.')
= link_to s_('ProjectSettings|Learn more about badges.'), help_page_path('user/project/badges') = link_to s_('ProjectSettings|Learn more about badges.'), help_page_path('user/project/badges')
.settings-content .settings-content
= render 'shared/badges/badge_settings' = render 'shared/badges/badge_settings'
= render_if_exists 'projects/service_desk_settings' = render_if_exists 'projects/settings/default_issue_template'
= render 'export', project: @project
= render_if_exists 'projects/service_desk_settings'
%section.qa-advanced-settings.settings.advanced-settings.no-animate#js-project-advanced-settings{ class: ('expanded' if expanded) } %section.qa-advanced-settings.settings.advanced-settings.no-animate#js-project-advanced-settings{ class: ('expanded' if expanded) }
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Advanced') %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Advanced')
%button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand') %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
...@@ -108,80 +64,70 @@ ...@@ -108,80 +64,70 @@
.settings-content .settings-content
.sub-section .sub-section
%h4 Housekeeping %h4= _('Housekeeping')
%p %p= _('Runs a number of housekeeping tasks within the current repository, such as compressing file revisions and removing unreachable objects.')
Runs a number of housekeeping tasks within the current repository, such as compressing file revisions and removing unreachable objects. = link_to _('Run housekeeping'), housekeeping_project_path(@project),
= link_to 'Run housekeeping', housekeeping_project_path(@project),
method: :post, class: "btn btn-default" method: :post, class: "btn btn-default"
= render 'export', project: @project
- if can? current_user, :archive_project, @project - if can? current_user, :archive_project, @project
.sub-section .sub-section
%h4.warning-title %h4.warning-title
- if @project.archived? - if @project.archived?
Unarchive project = _('Unarchive project')
- else - else
Archive project = _('Archive project')
- if @project.archived? - if @project.archived?
%p %p= _("Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments and other entities can be created. <strong>Once active this project shows up in the search and on the dashboard.</strong>").html_safe
Unarchiving the project will restore people's ability to make changes to it. = link_to _('Unarchive project'), unarchive_project_path(@project),
The repository can be committed to, and issues, comments and other entities can be created. data: { confirm: _("Are you sure that you want to unarchive this project?") },
%strong Once active this project shows up in the search and on the dashboard.
= link_to 'Unarchive project', unarchive_project_path(@project),
data: { confirm: "Are you sure that you want to unarchive this project?" },
method: :post, class: "btn btn-success" method: :post, class: "btn btn-success"
- else - else
%p %p= _("Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>").html_safe
Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. = link_to _('Archive project'), archive_project_path(@project),
%strong The repository cannot be committed to, and no issues, comments or other entities can be created. data: { confirm: _("Are you sure that you want to archive this project?") },
= link_to 'Archive project', archive_project_path(@project),
data: { confirm: "Are you sure that you want to archive this project?" },
method: :post, class: "btn btn-warning" method: :post, class: "btn btn-warning"
.sub-section.rename-repository .sub-section.rename-repository
%h4.warning-title %h4.warning-title= _('Change path')
Rename repository
= render 'projects/errors' = render 'projects/errors'
= form_for([@project.namespace.becomes(Namespace), @project]) do |f| = form_for([@project.namespace.becomes(Namespace), @project]) do |f|
.form-group.project_name_holder
= f.label :name, class: 'label-bold' do
Project name
.form-group .form-group
= f.text_field :name, class: "form-control" = f.label :path, _('Path'), class: 'label-bold'
.form-group
= f.label :path, class: 'label-bold' do
%span Path
.form-group .form-group
.input-group .input-group
.input-group-prepend .input-group-prepend
.input-group-text .input-group-text
#{Gitlab::Utils.append_path(root_url, @project.namespace.full_path)}/ #{Gitlab::Utils.append_path(root_url, @project.namespace.full_path)}/
= f.text_field :path, class: 'form-control' = f.text_field :path, class: 'form-control qa-project-path-field h-auto'
%ul %ul
%li Be careful. Renaming a project's repository can have unintended side effects. %li= _("Be careful. Renaming a project's repository can have unintended side effects.")
%li You will need to update your local repositories to point to the new location. %li= _('You will need to update your local repositories to point to the new location.')
- if @project.deployment_platform.present? - if @project.deployment_platform.present?
%li Your deployment services will be broken, you will need to manually fix the services after renaming. %li= _('Your deployment services will be broken, you will need to manually fix the services after renaming.')
= f.submit 'Rename project', class: "btn btn-warning" = f.submit _('Change path'), class: "btn btn-warning"
- if can?(current_user, :change_namespace, @project) - if can?(current_user, :change_namespace, @project)
.sub-section .sub-section
%h4.danger-title %h4.danger-title= _('Transfer project')
Transfer project
= form_for([@project.namespace.becomes(Namespace), @project], url: transfer_project_path(@project), method: :put, remote: true, html: { class: 'js-project-transfer-form' } ) do |f| = form_for([@project.namespace.becomes(Namespace), @project], url: transfer_project_path(@project), method: :put, remote: true, html: { class: 'js-project-transfer-form' } ) do |f|
.form-group .form-group
= label_tag :new_namespace_id, nil, class: 'label-bold' do = label_tag :new_namespace_id, nil, class: 'label-bold' do
%span Select a new namespace %span= _('Select a new namespace')
.form-group .form-group
= select_tag :new_namespace_id, namespaces_options(nil), include_blank: true, class: 'select2' = select_tag :new_namespace_id, namespaces_options(nil), include_blank: true, class: 'select2'
%ul %ul
%li Be careful. Changing the project's namespace can have unintended side effects. %li= _("Be careful. Changing the project's namespace can have unintended side effects.")
%li You can only transfer the project to namespaces you manage. %li= _('You can only transfer the project to namespaces you manage.')
%li You will need to update your local repositories to point to the new location. %li= _('You will need to update your local repositories to point to the new location.')
%li Project visibility level will be changed to match namespace rules when transferring to a group. %li= _('Project visibility level will be changed to match namespace rules when transferring to a group.')
= f.submit 'Transfer project', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => transfer_project_message(@project) } = f.submit 'Transfer project', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => transfer_project_message(@project) }
- if @project.forked? && can?(current_user, :remove_fork_project, @project) - if @project.forked? && can?(current_user, :remove_fork_project, @project)
.sub-section .sub-section
%h4.danger-title %h4.danger-title= _('Remove fork relationship')
Remove fork relationship
%p %p
This will remove the fork relationship to source project = _('This will remove the fork relationship to source project')
= succeed "." do = succeed "." do
- if @project.fork_source - if @project.fork_source
= link_to(fork_source_name(@project), project_path(@project.fork_source)) = link_to(fork_source_name(@project), project_path(@project.fork_source))
...@@ -189,24 +135,23 @@ ...@@ -189,24 +135,23 @@
= fork_source_name(@project) = fork_source_name(@project)
= form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_project_path(@project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f| = form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_project_path(@project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f|
%p %p
%strong Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source. %strong= _('Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source.')
= button_to 'Remove fork relationship', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_message(@project) } = button_to _('Remove fork relationship'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_message(@project) }
- if can?(current_user, :remove_project, @project) - if can?(current_user, :remove_project, @project)
.sub-section .sub-section
%h4.danger-title %h4.danger-title= _('Remove project')
Remove project %p= _('Removing the project will delete its repository and all related resources including issues, merge requests etc.')
%p
Removing the project will delete its repository and all related resources including issues, merge requests etc.
= form_tag(project_path(@project), method: :delete) do = form_tag(project_path(@project), method: :delete) do
%p %p
%strong Removed projects cannot be restored! %strong= _('Removed projects cannot be restored!')
= button_to 'Remove project', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) } = button_to _('Remove project'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) }
.save-project-loader.hide .save-project-loader.hide
.center .center
%h2 %h2
%i.fa.fa-spinner.fa-spin %i.fa.fa-spinner.fa-spin
Saving project. = _('Saving project.')
%p Please wait a moment, this page will automatically refresh when ready. %p= _('Please wait a moment, this page will automatically refresh when ready.')
= render 'shared/confirm_modal', phrase: @project.path = render 'shared/confirm_modal', phrase: @project.path
- if @project.feature_available?(:issuable_default_templates)
- expanded = Rails.env.test?
%section.settings.issues-feature.no-animate#js-issue-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:issues_access_level) == 0)] }
.settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Default issue template')
%button.btn.js-settings-toggle= expanded ? _('Collapse') : _('Expand')
%p= _('Set a default template for issue descriptions.')
.settings-content
= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "issue-settings-form" }, authenticity_token: true do |f|
%input{ type: 'hidden', name: 'update_section', value: 'js-issue-settings' }
.row
.form-group.col-md-9
= f.label :issues_template, class: 'label-bold' do
= _('Default description template for issues')
= link_to icon('question-circle'), help_page_path('user/project/description_templates', anchor: 'setting-a-default-template-for-issues-and-merge-requests'), target: '_blank'
= f.text_area :issues_template, class: "form-control", rows: 3
.text-secondary
- link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: help_page_path('user/markdown') }
= _('Description parsed with %{link_start}GitLab Flavored Markdown%{link_end}').html_safe % { link_start: link_start, link_end: '</a>'.html_safe }
= f.submit _('Save changes'), class: "btn btn-success"
= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "edit-project js-general-settings-form" }, authenticity_token: true do |f|
%input{ name: 'update_section', type: 'hidden', value: 'js-general-settings' }
= form_errors(@project)
%fieldset
.row
.form-group.col-md-5
= f.label :name, class: 'label-bold', for: 'project_name_edit' do
= _('Project name')
= f.text_field :name, class: "form-control", id: "project_name_edit"
.form-group.col-md-7
= f.label :id, class: 'label-bold' do
= _('Project ID')
= f.text_field :id, class: 'form-control w-auto', readonly: true
.row
.form-group.col-md-9
= f.label :tag_list, _('Topics'), class: 'label-bold'
= f.text_field :tag_list, value: @project.tag_list.join(', '), maxlength: 2000, class: "form-control"
%p.form-text.text-muted= _('Separate topics with commas.')
.row
.form-group.col-md-9
= f.label :description, _('Project description (optional)'), class: 'label-bold'
= f.text_area :description, class: 'form-control', rows: 3, maxlength: 250
.row= render_if_exists 'projects/classification_policy_settings', f: f
.row= render_if_exists 'shared/repository_size_limit_setting', form: f, type: :project
.form-group.prepend-top-default.append-bottom-20
.avatar-container.s90
= project_icon(@project, alt: _('Project avatar'), class: 'avatar project-avatar s90')
= f.label :avatar, _('Project avatar'), class: 'label-bold d-block'
= render 'shared/choose_avatar_button', f: f
- if @project.avatar?
%hr
= link_to _('Remove avatar'), project_avatar_path(@project), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'btn btn-link'
= f.submit _('Save changes'), class: "btn btn-success mt-4 qa-save-naming-topics-avatar-button"
...@@ -2,8 +2,7 @@ ...@@ -2,8 +2,7 @@
.modal-dialog .modal-dialog
.modal-content .modal-content
.modal-header .modal-header
%h3.page-title %h3.page-title= _('Confirmation required')
Confirmation required
%button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') } %button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') }
%span{ "aria-hidden": true } &times; %span{ "aria-hidden": true } &times;
...@@ -11,8 +10,7 @@ ...@@ -11,8 +10,7 @@
%p.text-danger.js-confirm-text %p.text-danger.js-confirm-text
%p %p
This action can lead to data loss. %span.js-warning-text= _('This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention.')
To prevent accidental actions we ask you to confirm your intention.
%br %br
Please type Please type
%code.js-confirm-danger-match= phrase %code.js-confirm-danger-match= phrase
...@@ -21,4 +19,4 @@ ...@@ -21,4 +19,4 @@
.form-group .form-group
= text_field_tag 'confirm_name_input', '', class: 'form-control js-confirm-danger-input' = text_field_tag 'confirm_name_input', '', class: 'form-control js-confirm-danger-input'
.form-actions .form-actions
= submit_tag 'Confirm', class: "btn btn-danger js-confirm-danger-submit" = submit_tag _('Confirm'), class: "btn btn-danger js-confirm-danger-submit"
...@@ -867,6 +867,15 @@ msgstr "" ...@@ -867,6 +867,15 @@ msgstr ""
msgid "Any" msgid "Any"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
msgid "Any Label"
msgstr ""
msgid "Any encrypted tokens"
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
msgid "Appearance" msgid "Appearance"
msgstr "" msgstr ""
...@@ -912,15 +921,27 @@ msgstr "" ...@@ -912,15 +921,27 @@ msgstr ""
msgid "Archive jobs" msgid "Archive jobs"
msgstr "" msgstr ""
msgid "Archive project"
msgstr ""
msgid "Archived project! Repository and other project resources are read-only" msgid "Archived project! Repository and other project resources are read-only"
msgstr "" msgstr ""
msgid "Archived projects" msgid "Archived projects"
msgstr "" msgstr ""
msgid "Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>"
msgstr ""
msgid "Are you sure" msgid "Are you sure"
msgstr "" msgstr ""
msgid "Are you sure that you want to archive this project?"
msgstr ""
msgid "Are you sure that you want to unarchive this project?"
msgstr ""
msgid "Are you sure you want to delete this pipeline schedule?" msgid "Are you sure you want to delete this pipeline schedule?"
msgstr "" msgstr ""
...@@ -1206,6 +1227,24 @@ msgstr "" ...@@ -1206,6 +1227,24 @@ msgstr ""
msgid "Badges|e.g. %{exampleUrl}" msgid "Badges|e.g. %{exampleUrl}"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
msgid "BatchComments|Delete all pending comments"
msgstr ""
msgid "BatchComments|Discard review?"
msgstr ""
msgid "BatchComments|You're about to discard your review which will delete all of your pending comments. The deleted comments %{strong_start}cannot%{strong_end} be restored."
msgstr ""
msgid "Be careful. Changing the project's namespace can have unintended side effects."
msgstr ""
msgid "Be careful. Renaming a project's repository can have unintended side effects."
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
msgid "Begin with the selected commit" msgid "Begin with the selected commit"
msgstr "" msgstr ""
...@@ -1413,6 +1452,15 @@ msgstr "" ...@@ -1413,6 +1452,15 @@ msgstr ""
msgid "CI Lint" msgid "CI Lint"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
msgid "CI variables"
msgstr ""
msgid "CI will run using the credentials assigned above."
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
msgid "CI/CD" msgid "CI/CD"
msgstr "" msgstr ""
...@@ -1503,6 +1551,18 @@ msgstr "" ...@@ -1503,6 +1551,18 @@ msgstr ""
msgid "Certificate (PEM)" msgid "Certificate (PEM)"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
msgid "Certificate fingerprint"
msgstr ""
msgid "Change Weight"
msgstr ""
msgid "Change path"
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
msgid "Change permissions" msgid "Change permissions"
msgstr "" msgstr ""
...@@ -1590,9 +1650,12 @@ msgstr "" ...@@ -1590,9 +1650,12 @@ msgstr ""
msgid "Choose between <code>clone</code> or <code>fetch</code> to get the recent application code" msgid "Choose between <code>clone</code> or <code>fetch</code> to get the recent application code"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Choose file…" msgid "Choose file…"
msgstr "" msgstr ""
=======
>>>>>>> Improve project settings page
msgid "Choose the top-level group for your repository imports." msgid "Choose the top-level group for your repository imports."
msgstr "" msgstr ""
...@@ -1707,9 +1770,21 @@ msgstr "" ...@@ -1707,9 +1770,21 @@ msgstr ""
msgid "CiVariable|Validation failed" msgid "CiVariable|Validation failed"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "ClassificationLabelUnavailable|is unavailable: %{reason}" msgid "ClassificationLabelUnavailable|is unavailable: %{reason}"
msgstr "" msgstr ""
=======
<<<<<<< HEAD
=======
msgid "Classification Label (optional)"
msgstr ""
msgid "ClassificationLabelUnavailable|is unavailable: %{reason}"
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
>>>>>>> Improve project settings page
msgid "Clear" msgid "Clear"
msgstr "" msgstr ""
...@@ -2408,6 +2483,12 @@ msgstr "" ...@@ -2408,6 +2483,12 @@ msgstr ""
msgid "Configure the way a user creates a new account." msgid "Configure the way a user creates a new account."
msgstr "" msgstr ""
msgid "Confirm"
msgstr ""
msgid "Confirmation required"
msgstr ""
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
...@@ -2417,6 +2498,9 @@ msgstr "" ...@@ -2417,6 +2498,9 @@ msgstr ""
msgid "Container Registry" msgid "Container Registry"
msgstr "" msgstr ""
msgid "Container registry images"
msgstr ""
msgid "ContainerRegistry|Created" msgid "ContainerRegistry|Created"
msgstr "" msgstr ""
...@@ -2795,15 +2879,30 @@ msgstr "" ...@@ -2795,15 +2879,30 @@ msgstr ""
msgid "Default artifacts expiration" msgid "Default artifacts expiration"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Default classification label"
msgstr ""
=======
<<<<<<< HEAD
=======
msgid "Default classification label" msgid "Default classification label"
msgstr "" msgstr ""
msgid "Default description template for issues"
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
>>>>>>> Improve project settings page
msgid "Default first day of the week" msgid "Default first day of the week"
msgstr "" msgstr ""
msgid "Default first day of the week in calendars and date pickers." msgid "Default first day of the week in calendars and date pickers."
msgstr "" msgstr ""
msgid "Default issue template"
msgstr ""
msgid "Default: Directly import the Google Code email address or username" msgid "Default: Directly import the Google Code email address or username"
msgstr "" msgstr ""
...@@ -3007,6 +3106,15 @@ msgstr "" ...@@ -3007,6 +3106,15 @@ msgstr ""
msgid "Description" msgid "Description"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
msgid "Description parsed with %{link_start}GitLab Flavored Markdown%{link_end}"
msgstr ""
msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project."
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
...@@ -3109,9 +3217,23 @@ msgstr "" ...@@ -3109,9 +3217,23 @@ msgstr ""
msgid "Download asset" msgid "Download asset"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Download tar"
=======
<<<<<<< HEAD
msgid "Download source code"
=======
msgid "Download export"
msgstr ""
msgid "Download tar" msgid "Download tar"
msgstr "" msgstr ""
msgid "Download tar.bz2"
>>>>>>> 06f28e63f44... Improve project settings page
>>>>>>> Improve project settings page
msgstr ""
msgid "Download tar.bz2" msgid "Download tar.bz2"
msgstr "" msgstr ""
...@@ -3679,15 +3801,41 @@ msgstr "" ...@@ -3679,15 +3801,41 @@ msgstr ""
msgid "Explore public groups" msgid "Explore public groups"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "External Classification Policy Authorization"
msgstr ""
=======
<<<<<<< HEAD
=======
msgid "Export as CSV"
msgstr ""
msgid "Export issues"
msgstr ""
msgid "Export project"
msgstr ""
msgid "Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the \"New Project\" page."
msgstr ""
msgid "External Classification Policy Authorization" msgid "External Classification Policy Authorization"
msgstr "" msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
>>>>>>> Improve project settings page
msgid "External URL" msgid "External URL"
msgstr "" msgstr ""
msgid "External Wiki" msgid "External Wiki"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
<<<<<<< HEAD
=======
>>>>>>> Improve project settings page
msgid "External authentication" msgid "External authentication"
msgstr "" msgstr ""
...@@ -3697,15 +3845,22 @@ msgstr "" ...@@ -3697,15 +3845,22 @@ msgstr ""
msgid "External authorization request timeout" msgid "External authorization request timeout"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "ExternalAuthorizationService|Classification Label" msgid "ExternalAuthorizationService|Classification Label"
msgstr "" msgstr ""
=======
>>>>>>> Improve project settings page
msgid "ExternalAuthorizationService|Classification label" msgid "ExternalAuthorizationService|Classification label"
msgstr "" msgstr ""
msgid "ExternalAuthorizationService|When no classification label is set the default label `%{default_label}` will be used." msgid "ExternalAuthorizationService|When no classification label is set the default label `%{default_label}` will be used."
msgstr "" msgstr ""
<<<<<<< HEAD
=======
>>>>>>> 10e41ccd30f... Improve project settings page
>>>>>>> Improve project settings page
msgid "Facebook" msgid "Facebook"
msgstr "" msgstr ""
...@@ -3981,6 +4136,15 @@ msgstr "" ...@@ -3981,6 +4136,15 @@ msgstr ""
msgid "Generate a default set of labels" msgid "Generate a default set of labels"
msgstr "" msgstr ""
<<<<<<< HEAD
=======
msgid "Generate key"
msgstr ""
msgid "Generate new export"
msgstr ""
>>>>>>> 10e41ccd30f... Improve project settings page
msgid "Geo" msgid "Geo"
msgstr "" msgstr ""
...@@ -4445,273 +4609,2189 @@ msgstr "" ...@@ -4445,273 +4609,2189 @@ msgstr ""
msgid "Import CSV" msgid "Import CSV"
msgstr "" msgstr ""
msgid "Import Projects from Gitea" msgid "Import Projects from Gitea"
msgstr ""
msgid "Import all compatible projects"
msgstr ""
msgid "Import all projects"
msgstr ""
msgid "Import all repositories"
msgstr ""
msgid "Import an exported GitLab project"
msgstr ""
msgid "Import in progress"
msgstr ""
msgid "Import issues"
msgstr ""
msgid "Import members"
msgstr ""
msgid "Import members from another project"
msgstr ""
msgid "Import multiple repositories by uploading a manifest file."
msgstr ""
msgid "Import project"
msgstr ""
msgid "Import project members"
msgstr ""
msgid "Import projects from Bitbucket"
msgstr ""
msgid "Import projects from Bitbucket Server"
msgstr ""
msgid "Import projects from FogBugz"
msgstr ""
msgid "Import projects from GitLab.com"
msgstr ""
msgid "Import projects from Google Code"
msgstr ""
msgid "Import repositories from Bitbucket Server"
msgstr ""
msgid "Import repositories from GitHub"
msgstr ""
msgid "Import repository"
msgstr ""
msgid "Import timed out. Import took longer than %{import_jobs_expiration} seconds"
msgstr ""
msgid "Import/Export illustration"
msgstr ""
msgid "ImportProjects|Importing the project failed"
msgstr ""
msgid "ImportProjects|Requesting your %{provider} repositories failed"
msgstr ""
msgid "ImportProjects|Select the projects you want to import"
msgstr ""
msgid "ImportProjects|Updating the imported projects failed"
msgstr ""
msgid "In order to enable instance-level analytics, please ask an admin to enable %{usage_ping_link_start}usage ping%{usage_ping_link_end}."
msgstr ""
msgid "In order to gather accurate feature usage data, it can take 1 to 2 weeks to see your index."
msgstr ""
msgid "In the next step, you'll be able to select the projects you want to import."
msgstr ""
msgid "Include a Terms of Service agreement and Privacy Policy that all users must accept."
msgstr ""
msgid "Include author name in notification email body"
msgstr ""
msgid "Include merge request description"
msgstr ""
msgid "Include the username in the URL if required: <code>https://username@gitlab.company.com/group/project.git</code>."
msgstr ""
msgid "Includes an MVC structure to help you get started."
msgstr ""
msgid "Includes an MVC structure, Gemfile, Rakefile, along with many others, to help you get started."
msgstr ""
msgid "Includes an MVC structure, mvnw and pom.xml to help you get started."
msgstr ""
msgid "Incompatible Project"
msgstr ""
msgid "Indicates whether this runner can pick jobs without tags"
msgstr ""
msgid "Inform users without uploaded SSH keys that they can't push over SSH until one is added"
msgstr ""
msgid "Information about additional Pages templates and how to install them can be found in our %{pages_getting_started_guide}."
msgstr ""
msgid "Inline"
msgstr ""
msgid "Input host keys manually"
msgstr ""
msgid "Input your repository URL"
msgstr ""
msgid "Insert a quote"
msgstr ""
msgid "Insert code"
msgstr ""
msgid "Insert suggestion"
msgstr ""
msgid "Install GitLab Runner"
msgstr ""
msgid "Install Runner on Kubernetes"
msgstr ""
msgid "Instance Statistics"
msgstr ""
msgid "Instance Statistics visibility"
msgstr ""
msgid "Instance does not support multiple Kubernetes clusters"
msgstr ""
msgid "Integrations"
msgstr ""
msgid "Integrations Settings"
msgstr ""
msgid "Interested parties can even contribute by pushing commits if they want to."
msgstr ""
msgid "Internal"
msgstr ""
msgid "Internal - The group and any internal projects can be viewed by any logged in user."
msgstr ""
msgid "Internal - The project can be accessed by any logged in user."
msgstr ""
msgid "Internal users"
msgstr ""
msgid "Interval Pattern"
msgstr ""
msgid "Introducing Cycle Analytics"
msgstr ""
msgid "Introducing Your Conversational Development Index"
msgstr ""
msgid "Invalid Login or password"
msgstr ""
msgid "Invalid file."
msgstr ""
msgid "Invalid input, please avoid emojis"
msgstr ""
msgid "Invalid pin code"
msgstr ""
msgid "Invalid two-factor code."
msgstr ""
msgid "Invitation"
msgstr ""
msgid "Invite"
msgstr ""
msgid "Invite group"
msgstr ""
msgid "Invite member"
msgstr ""
msgid "Invoke Count"
msgstr ""
msgid "Invoke Time"
msgstr ""
msgid "IssuableStatus|Closed (%{moved_link_start}moved%{moved_link_end})"
msgstr ""
msgid "Issue"
msgstr ""
msgid "Issue Boards"
msgstr ""
msgid "Issue events"
msgstr ""
msgid "IssueBoards|Board"
msgstr ""
msgid "Issues"
msgstr ""
msgid "Issues can be bugs, tasks or ideas to be discussed. Also, issues are searchable and filterable."
msgstr ""
msgid "Issues, merge requests, pushes, and comments."
msgstr ""
msgid "It must have a header row and at least two columns: the first column is the issue title and the second column is the issue description. The separator is automatically detected."
msgstr ""
msgid "It's you"
msgstr ""
msgid "Jan"
msgstr ""
msgid "January"
msgstr ""
msgid "Job"
msgstr ""
msgid "Job ID"
msgstr ""
msgid "Job has been erased"
msgstr ""
msgid "Job has been successfully erased!"
msgstr ""
msgid "Job is stuck. Check runners."
msgstr ""
msgid "Job was retried"
msgstr ""
msgid "Jobs"
msgstr ""
msgid "Job|Browse"
msgstr ""
msgid "Job|Complete Raw"
msgstr ""
msgid "Job|Download"
msgstr ""
msgid "Job|Erase job log"
msgstr ""
msgid "Job|Job artifacts"
msgstr ""
msgid "Job|Job has been erased"
msgstr ""
msgid "Job|Job has been erased by"
msgstr ""
<<<<<<< HEAD
msgid "Job|Keep"
=======
msgid "Here is the public SSH key that needs to be added to the remote server. For more information, please refer to the documentation."
msgstr ""
msgid "Hide file browser"
msgstr ""
msgid "Hide host keys manual input"
msgstr ""
msgid "Hide marketing-related entries from help"
msgstr ""
msgid "Hide payload"
msgstr ""
msgid "Hide value"
msgid_plural "Hide values"
msgstr[0] ""
msgstr[1] ""
msgid "Hide values"
msgstr ""
msgid "Highest role:"
msgstr ""
msgid "History"
msgstr ""
msgid "Hook was successfully created."
msgstr ""
msgid "Housekeeping"
msgstr ""
msgid "Housekeeping successfully started"
msgstr ""
msgid "Housekeeping, export, path, transfer, remove, archive."
msgstr ""
msgid "However, you are already a member of this %{member_source}. Sign in using a different account to accept the invitation."
msgstr ""
msgid "I accept the %{terms_link}"
msgstr ""
msgid "I accept the|Terms of Service and Privacy Policy"
msgstr ""
msgid "ID"
msgstr ""
msgid "IDE|Allow live previews of JavaScript projects in the Web IDE using CodeSandbox client side evaluation."
msgstr ""
msgid "IDE|Back"
msgstr ""
msgid "IDE|Client side evaluation"
msgstr ""
msgid "IDE|Commit"
msgstr ""
msgid "IDE|Edit"
msgstr ""
msgid "IDE|Get started with Live Preview"
msgstr ""
msgid "IDE|Go to project"
msgstr ""
msgid "IDE|Live Preview"
msgstr ""
msgid "IDE|Open in file view"
msgstr ""
msgid "IDE|Preview your web application using Web IDE client-side evaluation."
msgstr ""
msgid "IDE|Refresh preview"
msgstr ""
msgid "IDE|Review"
msgstr ""
msgid "IP Address"
msgstr ""
msgid "Identifier"
msgstr ""
msgid "Identities"
msgstr ""
msgid "Identity provider single sign on URL"
msgstr ""
msgid "If any job surpasses this timeout threshold, it will be marked as failed. Human readable time input language is accepted like \"1 hour\". Values without specification represent seconds."
msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
msgid "If disabled, a diverged local branch will not be automatically updated with commits from its remote counterpart, to prevent local data loss. If the default branch (%{default_branch}) has diverged and cannot be updated, mirroring will fail. Other diverged branches are silently ignored."
msgstr ""
msgid "If disabled, only admins will be able to set up mirrors in projects."
msgstr ""
msgid "If disabled, the access level will depend on the user's permissions in the project."
msgstr ""
msgid "If enabled"
msgstr ""
msgid "If enabled, access to projects will be validated on an external service using their classification label."
msgstr ""
msgid "If using GitHub, you’ll see pipeline statuses on GitHub for your commits and pull requests. %{more_info_link}"
msgstr ""
msgid "If your HTTP repository is not publicly accessible, add authentication information to the URL: <code>https://username:password@gitlab.company.com/group/project.git</code>."
msgstr ""
msgid "ImageDiffViewer|2-up"
msgstr ""
msgid "ImageDiffViewer|Onion skin"
msgstr ""
msgid "ImageDiffViewer|Swipe"
msgstr ""
msgid "Impersonation has been disabled"
msgstr ""
msgid "Import"
msgstr ""
msgid "Import CSV"
msgstr ""
msgid "Import Projects from Gitea"
msgstr ""
msgid "Import all compatible projects"
msgstr ""
msgid "Import all projects"
msgstr ""
msgid "Import all repositories"
msgstr ""
msgid "Import an exported GitLab project"
msgstr ""
msgid "Import in progress"
msgstr ""
msgid "Import issues"
msgstr ""
msgid "Import members"
msgstr ""
msgid "Import members from another project"
msgstr ""
msgid "Import multiple repositories by uploading a manifest file."
msgstr ""
msgid "Import project"
msgstr ""
msgid "Import project members"
msgstr ""
msgid "Import projects from Bitbucket"
msgstr ""
msgid "Import projects from Bitbucket Server"
msgstr ""
msgid "Import projects from FogBugz"
msgstr ""
msgid "Import projects from GitLab.com"
msgstr ""
msgid "Import projects from Google Code"
msgstr ""
msgid "Import repositories from Bitbucket Server"
msgstr ""
msgid "Import repositories from GitHub"
msgstr ""
msgid "Import repository"
msgstr ""
msgid "Import timed out. Import took longer than %{import_jobs_expiration} seconds"
msgstr ""
msgid "Import/Export illustration"
msgstr ""
msgid "ImportButtons|Connect repositories from"
msgstr ""
msgid "ImportProjects|Importing the project failed"
msgstr ""
msgid "ImportProjects|Requesting your %{provider} repositories failed"
msgstr ""
msgid "ImportProjects|Select the projects you want to import"
msgstr ""
msgid "ImportProjects|Updating the imported projects failed"
msgstr ""
msgid "Improve Issue boards with GitLab Enterprise Edition."
msgstr ""
msgid "Improve issues management with Issue weight and GitLab Enterprise Edition."
msgstr ""
msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition."
msgstr ""
msgid "In order to enable instance-level analytics, please ask an admin to enable %{usage_ping_link_start}usage ping%{usage_ping_link_end}."
msgstr ""
msgid "In order to gather accurate feature usage data, it can take 1 to 2 weeks to see your index."
msgstr ""
msgid "In the next step, you'll be able to select the projects you want to import."
msgstr ""
msgid "Incidents"
msgstr ""
msgid "Include a Terms of Service agreement and Privacy Policy that all users must accept."
msgstr ""
msgid "Include author name in notification email body"
msgstr ""
msgid "Include merge request description"
msgstr ""
msgid "Include the username in the URL if required: <code>https://username@gitlab.company.com/group/project.git</code>."
msgstr ""
msgid "Includes LFS objects. It can be overridden per group, or per project. 0 for unlimited."
msgstr ""
msgid "Includes an MVC structure to help you get started."
msgstr ""
msgid "Includes an MVC structure, Gemfile, Rakefile, along with many others, to help you get started."
msgstr ""
msgid "Includes an MVC structure, mvnw and pom.xml to help you get started."
msgstr ""
msgid "Incompatible Project"
msgstr ""
msgid "Indicates whether this runner can pick jobs without tags"
msgstr ""
msgid "Inform users without uploaded SSH keys that they can't push over SSH until one is added"
msgstr ""
msgid "Inline"
msgstr ""
msgid "Input host keys manually"
msgstr ""
msgid "Input your repository URL"
msgstr ""
msgid "Insert a quote"
msgstr ""
msgid "Insert code"
msgstr ""
msgid "Insert suggestion"
msgstr ""
msgid "Insights"
msgstr ""
msgid "Install GitLab Runner"
msgstr ""
msgid "Install Runner on Kubernetes"
msgstr ""
msgid "Instance"
msgid_plural "Instances"
msgstr[0] ""
msgstr[1] ""
msgid "Instance Statistics"
msgstr ""
msgid "Instance Statistics visibility"
msgstr ""
msgid "Instance does not support multiple Kubernetes clusters"
msgstr ""
msgid "Integrations"
msgstr ""
msgid "Integrations Settings"
msgstr ""
msgid "Interested parties can even contribute by pushing commits if they want to."
msgstr ""
msgid "Internal"
msgstr ""
msgid "Internal - The group and any internal projects can be viewed by any logged in user."
msgstr ""
msgid "Internal - The project can be accessed by any logged in user."
msgstr ""
msgid "Internal users"
msgstr ""
msgid "Interval Pattern"
msgstr ""
msgid "Introducing Cycle Analytics"
msgstr ""
msgid "Introducing Your Conversational Development Index"
msgstr ""
msgid "Invalid input, please avoid emojis"
msgstr ""
msgid "Invalid pin code"
msgstr ""
msgid "Invitation"
msgstr ""
msgid "Invite"
msgstr ""
msgid "Invite group"
msgstr ""
msgid "Invite member"
msgstr ""
msgid "Invoke Count"
msgstr ""
msgid "Invoke Time"
msgstr ""
msgid "IssuableStatus|Closed (%{moved_link_start}moved%{moved_link_end})"
msgstr ""
msgid "Issue"
msgstr ""
msgid "Issue Boards"
msgstr ""
msgid "Issue board focus mode"
msgstr ""
msgid "Issue events"
msgstr ""
msgid "Issue template (optional)"
msgstr ""
msgid "IssueBoards|Board"
msgstr ""
msgid "IssueBoards|Boards"
msgstr ""
msgid "IssueBoards|Create new board"
msgstr ""
msgid "IssueBoards|Delete board"
msgstr ""
msgid "IssueBoards|No matching boards found"
msgstr ""
msgid "IssueBoards|Some of your boards are hidden, activate a license to see them again."
msgstr ""
msgid "IssueBoards|Switch board"
msgstr ""
msgid "Issues"
msgstr ""
msgid "Issues can be bugs, tasks or ideas to be discussed. Also, issues are searchable and filterable."
msgstr ""
msgid "Issues closed"
msgstr ""
msgid "Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities"
msgstr ""
msgid "Issues, merge requests, pushes, and comments."
msgstr ""
msgid "IssuesAnalytics|After you begin creating issues for your projects, we can start tracking and displaying metrics for them"
msgstr ""
msgid "IssuesAnalytics|Issues Created"
msgstr ""
msgid "IssuesAnalytics|Issues created per month"
msgstr ""
msgid "IssuesAnalytics|Last 12 months"
msgstr ""
msgid "IssuesAnalytics|Sorry, your filter produced no results"
msgstr ""
msgid "IssuesAnalytics|There are no issues for the projects in your group"
msgstr ""
msgid "IssuesAnalytics|To widen your search, change or remove filters in the filter bar above"
msgstr ""
msgid "It must have a header row and at least two columns: the first column is the issue title and the second column is the issue description. The separator is automatically detected."
msgstr ""
msgid "It's you"
msgstr ""
msgid "Jaeger URL"
msgstr ""
msgid "Jaeger tracing"
msgstr ""
msgid "Jan"
msgstr ""
msgid "January"
msgstr ""
msgid "Job"
msgstr ""
msgid "Job ID"
msgstr ""
msgid "Job has been erased"
msgstr ""
msgid "Job is stuck. Check runners."
msgstr ""
msgid "Job traces and artifacts"
msgstr ""
msgid "Job was retried"
msgstr ""
msgid "Jobs"
msgstr ""
msgid "Job|Browse"
msgstr ""
msgid "Job|Complete Raw"
msgstr ""
msgid "Job|Download"
msgstr ""
msgid "Job|Erase job log"
msgstr ""
msgid "Job|Job artifacts"
msgstr ""
msgid "Job|Job has been erased"
msgstr ""
msgid "Job|Job has been erased by"
msgstr ""
msgid "Job|Keep"
msgstr ""
msgid "Job|Pipeline"
msgstr ""
msgid "Job|Scroll to bottom"
msgstr ""
msgid "Job|Scroll to top"
msgstr ""
msgid "Job|Show complete raw"
msgstr ""
msgid "Job|The artifacts were removed"
msgstr ""
msgid "Job|The artifacts will be removed"
msgstr ""
msgid "Job|This job is stuck because the project doesn't have any runners online assigned to it."
msgstr ""
msgid "Job|for"
msgstr ""
msgid "Job|into"
msgstr ""
msgid "Job|with"
msgstr ""
msgid "Jul"
msgstr ""
msgid "July"
msgstr ""
msgid "Jun"
msgstr ""
msgid "June"
msgstr ""
msgid "Key (PEM)"
msgstr ""
msgid "Kubernetes"
msgstr ""
msgid "Kubernetes Cluster"
msgstr ""
msgid "Kubernetes Clusters"
msgstr ""
msgid "Kubernetes cluster creation time exceeds timeout; %{timeout}"
msgstr ""
msgid "Kubernetes cluster integration was not removed."
msgstr ""
msgid "Kubernetes cluster integration was successfully removed."
msgstr ""
msgid "Kubernetes cluster was successfully updated."
msgstr ""
msgid "Kubernetes configured"
msgstr ""
msgid "Kubernetes service integration has been deprecated. %{deprecated_message_content} your Kubernetes clusters using the new <a href=\"%{url}\"/>Kubernetes Clusters</a> page"
msgstr ""
msgid "LDAP settings"
msgstr ""
msgid "LFS"
msgstr ""
msgid "LFS objects"
msgstr ""
msgid "LFSStatus|Disabled"
msgstr ""
msgid "LFSStatus|Enabled"
msgstr ""
msgid "Label"
msgstr ""
msgid "Label actions dropdown"
msgstr ""
msgid "Label lists show all issues with the selected label."
msgstr ""
msgid "Label was created"
msgstr ""
msgid "Label was removed"
msgstr ""
msgid "Label was successfully updated."
msgstr ""
msgid "LabelSelect|%{firstLabelName} +%{remainingLabelCount} more"
msgstr ""
msgid "LabelSelect|%{labelsString}, and %{remainingLabelCount} more"
msgstr ""
msgid "LabelSelect|Labels"
msgstr ""
msgid "Labels"
msgstr ""
msgid "Labels can be applied to %{features}. Group labels are available for any project within the group."
msgstr ""
msgid "Labels can be applied to issues and merge requests to categorize them."
msgstr ""
msgid "Labels can be applied to issues and merge requests."
msgstr ""
msgid "Labels|<span>Promote label</span> %{labelTitle} <span>to Group Label?</span>"
msgstr ""
msgid "Labels|Promote Label"
msgstr ""
msgid "Labels|Promoting %{labelTitle} will make it available for all projects inside %{groupName}. Existing project labels with the same title will be merged. This action cannot be reversed."
msgstr ""
msgid "Language"
msgstr ""
msgid "Large File Storage"
msgstr ""
msgid "Last %d day"
msgid_plural "Last %d days"
msgstr[0] ""
msgstr[1] ""
msgid "Last Pipeline"
msgstr ""
msgid "Last activity"
msgstr ""
msgid "Last commit"
msgstr ""
msgid "Last contact"
msgstr ""
msgid "Last edited %{date}"
msgstr ""
msgid "Last edited by %{name}"
msgstr ""
msgid "Last reply by"
msgstr ""
msgid "Last seen"
msgstr ""
msgid "Last update"
msgstr ""
msgid "Last updated"
msgstr ""
msgid "LastPushEvent|You pushed to"
msgstr ""
msgid "LastPushEvent|at"
msgstr ""
msgid "Latest changes"
msgstr ""
msgid "Latest pipeline for this branch"
msgstr ""
msgid "Lead"
msgstr ""
msgid "Learn how to %{no_packages_link_start}publish and share your packages%{no_packages_link_end} with GitLab."
msgstr ""
msgid "Learn more"
msgstr ""
msgid "Learn more about %{issue_boards_url}, to keep track of issues in multiple lists, using labels, assignees, and milestones. If you’re missing something from issue boards, please create an issue on %{gitlab_issues_url}."
msgstr ""
msgid "Learn more about Auto DevOps"
msgstr ""
msgid "Learn more about Kubernetes"
msgstr ""
msgid "Learn more about Web Terminal"
msgstr ""
msgid "Learn more about approvals."
msgstr ""
msgid "Learn more about custom project templates"
msgstr ""
msgid "Learn more about group-level project templates"
msgstr ""
msgid "Learn more about incoming email addresses"
msgstr ""
msgid "Learn more about signing commits"
msgstr ""
msgid "Learn more in the"
msgstr ""
msgid "Learn more in the|pipeline schedules documentation"
msgstr ""
msgid "Leave"
msgstr ""
msgid "Leave group"
msgstr ""
msgid "Leave project"
msgstr ""
msgid "Leave the \"File type\" and \"Delivery method\" options on their default values."
msgstr ""
msgid "License"
msgstr ""
msgid "LicenseManagement|Add a license"
msgstr ""
msgid "LicenseManagement|Add licenses manually to approve or blacklist"
msgstr ""
msgid "LicenseManagement|Approve"
msgstr ""
msgid "LicenseManagement|Approve license"
msgstr ""
msgid "LicenseManagement|Approve license?"
msgstr ""
msgid "LicenseManagement|Approved"
msgstr ""
msgid "LicenseManagement|Blacklist"
msgstr ""
msgid "LicenseManagement|Blacklist license"
msgstr ""
msgid "LicenseManagement|Blacklist license?"
msgstr ""
msgid "LicenseManagement|Blacklisted"
msgstr ""
msgid "LicenseManagement|Cancel"
msgstr ""
msgid "LicenseManagement|License"
msgstr ""
msgid "LicenseManagement|License Management"
msgstr ""
msgid "LicenseManagement|License details"
msgstr ""
msgid "LicenseManagement|License name"
msgstr ""
msgid "LicenseManagement|Manage approved and blacklisted licenses for this project."
msgstr ""
msgid "LicenseManagement|Packages"
msgstr ""
msgid "LicenseManagement|Remove license"
msgstr ""
msgid "LicenseManagement|Remove license?"
msgstr ""
msgid "LicenseManagement|Submit"
msgstr ""
msgid "LicenseManagement|There are currently no approved or blacklisted licenses in this project."
msgstr ""
msgid "LicenseManagement|This license already exists in this project."
msgstr ""
msgid "LicenseManagement|URL"
msgstr ""
msgid "LicenseManagement|You are about to remove the license, %{name}, from this project."
msgstr ""
msgid "Licenses"
msgstr ""
msgid "Limited to showing %d event at most"
msgid_plural "Limited to showing %d events at most"
msgstr[0] ""
msgstr[1] ""
msgid "LinkedIn"
msgstr ""
msgid "List"
msgstr ""
msgid "List Your Gitea Repositories"
msgstr ""
msgid "List available repositories"
msgstr ""
msgid "List view"
msgstr ""
msgid "List your Bitbucket Server repositories"
msgstr ""
msgid "List your GitHub repositories"
msgstr ""
msgid "Live preview"
msgstr ""
msgid "Loading contribution stats for group members"
msgstr ""
msgid "Loading the GitLab IDE..."
msgstr ""
msgid "Loading..."
msgstr ""
msgid "Loading…"
msgstr ""
msgid "Localization"
msgstr ""
msgid "Lock"
msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
msgid "Lock not found"
msgstr ""
msgid "Lock this %{issuableDisplayName}? Only <strong>project members</strong> will be able to comment."
msgstr ""
msgid "Lock to current projects"
msgstr ""
msgid "Locked"
msgstr ""
msgid "Locked Files"
msgstr ""
msgid "Locked to current projects"
msgstr ""
msgid "Locks give the ability to lock specific file or folder."
msgstr ""
msgid "Login with smartcard"
msgstr ""
msgid "Logo was successfully removed."
msgstr ""
msgid "Logs"
msgstr ""
msgid "MRApprovals|Approved by"
msgstr ""
msgid "MRApprovals|Approvers"
msgstr ""
msgid "MRApprovals|Pending approvals"
msgstr ""
msgid "MRDiff|Show changes only"
msgstr ""
msgid "MRDiff|Show full file"
msgstr ""
msgid "Make everyone on your team more productive regardless of their location. GitLab Geo creates read-only mirrors of your GitLab instance so you can reduce the time it takes to clone and fetch large repos."
msgstr ""
msgid "Make sure you're logged into the account that owns the projects you'd like to import."
msgstr ""
msgid "Manage Git repositories with fine-grained access controls that keep your code secure. Perform code reviews and enhance collaboration with merge requests. Each project can also have an issue tracker and a wiki."
msgstr ""
msgid "Manage Web IDE features"
msgstr ""
msgid "Manage access"
msgstr ""
msgid "Manage all notifications"
msgstr ""
msgid "Manage applications that can use GitLab as an OAuth provider, and applications that you've authorized to use your account."
msgstr ""
msgid "Manage applications that you've authorized to use your account."
msgstr ""
msgid "Manage group labels"
msgstr ""
msgid "Manage labels"
msgstr ""
msgid "Manage project labels"
msgstr ""
msgid "Manage two-factor authentication"
msgstr ""
msgid "Manage your group’s membership while adding another level of security with SAML."
msgstr ""
msgid "Manifest"
msgstr ""
msgid "Manifest file import"
msgstr ""
msgid "Manual job"
msgstr ""
msgid "Map a FogBugz account ID to a GitLab user"
msgstr ""
msgid "Map a Google Code user to a GitLab user"
msgstr ""
msgid "Map a Google Code user to a full email address"
msgstr ""
msgid "Map a Google Code user to a full name"
msgstr ""
msgid "Mar"
msgstr ""
msgid "March"
msgstr ""
msgid "Mark todo as done"
msgstr ""
msgid "Markdown"
msgstr ""
msgid "Markdown enabled"
msgstr ""
msgid "Maven Metadata"
msgstr ""
msgid "Max access level"
msgstr ""
msgid "Maximum artifacts size (MB)"
msgstr ""
msgid "Maximum attachment size (MB)"
msgstr ""
msgid "Maximum capacity"
msgstr ""
msgid "Maximum delay (Minutes)"
msgstr ""
msgid "Maximum job timeout"
msgstr ""
msgid "Maximum number of mirrors that can be synchronizing at the same time."
msgstr ""
msgid "Maximum push size (MB)"
msgstr ""
msgid "Maximum time between updates that a mirror can have when scheduled to synchronize."
msgstr ""
msgid "May"
msgstr ""
msgid "Median"
msgstr ""
msgid "Member lock"
msgstr ""
msgid "Member since %{date}"
msgstr ""
msgid "Members"
msgstr ""
msgid "Members can be added by project <i>Maintainers</i> or <i>Owners</i>"
msgstr ""
msgid "Members of <strong>%{project_name}</strong>"
msgstr ""
msgid "Members will be forwarded here when signing in to your group. Get this from your identity provider, where it can also be called \"SSO Service Location\", \"SAML Token Issuance Endpoint\", or \"SAML 2.0/W-Federation URL\"."
msgstr ""
msgid "Merge Request"
msgstr ""
msgid "Merge Requests"
msgstr ""
msgid "Merge Requests created"
msgstr ""
msgid "Merge commit message"
msgstr ""
msgid "Merge events"
msgstr ""
msgid "Merge immediately"
msgstr ""
msgid "Merge in progress"
msgstr ""
msgid "Merge pipelines will try to validate the post-merge result prior to merging"
msgstr ""
msgid "Merge request"
msgstr ""
msgid "Merge request approvals"
msgstr ""
msgid "Merge requests"
msgstr ""
msgid "Merge requests are a place to propose changes you've made to a project and discuss those changes with others"
msgstr ""
msgid "Merge when pipeline succeeds"
msgstr ""
msgid "MergeRequests|Add a reply"
msgstr ""
msgid "MergeRequests|An error occurred while saving the draft comment."
msgstr ""
msgid "MergeRequests|Discussion stays resolved"
msgstr ""
msgid "MergeRequests|Discussion stays unresolved"
msgstr ""
msgid "MergeRequests|Discussion will be resolved"
msgstr ""
msgid "MergeRequests|Discussion will be unresolved"
msgstr ""
msgid "MergeRequests|Jump to next unresolved discussion"
msgstr ""
msgid "MergeRequests|Reply..."
msgstr ""
msgid "MergeRequests|Resolve this discussion in a new issue"
msgstr ""
msgid "MergeRequests|Saving the comment failed"
msgstr ""
msgid "MergeRequests|Toggle comments for this file"
msgstr ""
msgid "MergeRequests|View file @ %{commitId}"
msgstr ""
msgid "MergeRequests|View replaced file @ %{commitId}"
msgstr ""
msgid "MergeRequests|commented on commit %{commitLink}"
msgstr ""
msgid "MergeRequests|started a discussion"
msgstr ""
msgid "MergeRequests|started a discussion on %{linkStart}an old version of the diff%{linkEnd}"
msgstr ""
msgid "MergeRequests|started a discussion on %{linkStart}the diff%{linkEnd}"
msgstr ""
msgid "MergeRequests|started a discussion on an outdated change in commit %{linkStart}%{commitId}%{linkEnd}"
msgstr ""
msgid "MergeRequests|started a discussion on commit %{linkStart}%{commitId}%{linkEnd}"
msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
msgid "MergeRequest|Filter files"
msgstr ""
msgid "MergeRequest|No files found"
msgstr ""
msgid "Merged"
msgstr ""
msgid "Messages"
msgstr ""
msgid "Metrics"
msgstr ""
msgid "Metrics - Influx"
msgstr ""
msgid "Metrics - Prometheus"
msgstr ""
msgid "Metrics and profiling"
msgstr ""
msgid "Metrics for environment"
msgstr ""
msgid "Metrics|Check out the CI/CD documentation on deploying to an environment"
msgstr ""
msgid "Metrics|Create metric"
msgstr ""
msgid "Metrics|Delete metric"
msgstr ""
msgid "Metrics|Delete metric?"
msgstr ""
msgid "Metrics|Edit metric"
msgstr ""
msgid "Metrics|Environment"
msgstr ""
msgid "Metrics|For grouping similar metrics"
msgstr ""
msgid "Metrics|Label of the y-axis (usually the unit). The x-axis always represents time."
msgstr ""
msgid "Metrics|Learn about environments"
msgstr ""
msgid "Metrics|Legend label (optional)"
msgstr ""
msgid "Metrics|Must be a valid PromQL query."
msgstr ""
msgid "Metrics|New metric"
msgstr ""
msgid "Metrics|No deployed environments"
msgstr ""
msgid "Metrics|PromQL query is valid"
msgstr ""
msgid "Metrics|Prometheus Query Documentation"
msgstr ""
msgid "Metrics|There was an error fetching the environments data, please try again"
msgstr ""
msgid "Metrics|There was an error getting deployment information."
msgstr ""
msgid "Metrics|There was an error getting environments information."
msgstr ""
msgid "Metrics|There was an error trying to validate your query"
msgstr ""
msgid "Metrics|There was an error while retrieving metrics"
msgstr ""
msgid "Metrics|Unexpected deployment data response from prometheus endpoint"
msgstr ""
msgid "Metrics|Unexpected metrics data response from prometheus endpoint"
msgstr ""
msgid "Metrics|Unit label"
msgstr ""
msgid "Metrics|Used as a title for the chart"
msgstr ""
msgid "Metrics|Used if the query returns a single series. If it returns multiple series, their legend labels will be picked up from the response."
msgstr ""
msgid "Metrics|Y-axis label"
msgstr ""
msgid "Metrics|You're about to permanently delete this metric. This cannot be undone."
msgstr ""
msgid "Metrics|e.g. Throughput"
msgstr ""
msgid "Milestone"
msgstr ""
msgid "Milestone lists not available with your current license"
msgstr ""
msgid "Milestone lists show all issues from the selected milestone."
msgstr ""
msgid "Milestones"
msgstr ""
msgid "Milestones| You’re about to permanently delete the milestone %{milestoneTitle} and remove it from %{issuesWithCount} and %{mergeRequestsWithCount}. Once deleted, it cannot be undone or recovered."
msgstr ""
msgid "Milestones| You’re about to permanently delete the milestone %{milestoneTitle}. This milestone is not currently used in any issues or merge requests."
msgstr ""
msgid "Milestones|<p>%{milestonePromotion}</p> %{finalWarning}"
msgstr ""
msgid "Milestones|Delete milestone"
msgstr ""
msgid "Milestones|Delete milestone %{milestoneTitle}?"
msgstr ""
msgid "Milestones|Failed to delete milestone %{milestoneTitle}"
msgstr ""
msgid "Milestones|Milestone %{milestoneTitle} was not found"
msgstr ""
msgid "Milestones|Promote %{milestoneTitle} to group milestone?"
msgstr ""
msgid "Milestones|Promote Milestone"
msgstr ""
msgid "Milestones|Promoting %{milestone} will make it available for all projects inside %{groupName}. Existing project milestones with the same name will be merged. "
msgstr ""
msgid "Milestones|This action cannot be reversed."
msgstr ""
msgid "Minimum capacity to be available before we schedule more mirrors preemptively."
msgstr ""
msgid "Mirror a repository"
msgstr ""
msgid "Mirror direction"
msgstr ""
msgid "Mirror repository"
msgstr ""
msgid "Mirror user"
msgstr ""
msgid "Mirrored repositories"
msgstr ""
msgid "Mirroring repositories"
msgstr ""
msgid "MissingSSHKeyWarningLink|add an SSH key"
msgstr ""
msgid "Modal|Cancel"
msgstr ""
msgid "Modal|Close"
msgstr ""
msgid "Modify commit message"
msgstr ""
msgid "Modify commit messages"
msgstr ""
msgid "Modify merge commit"
msgstr ""
msgid "Monday"
msgstr ""
msgid "Monitor your errors by integrating with Sentry"
msgstr ""
msgid "Monitoring"
msgstr ""
msgid "Months"
msgstr ""
msgid "More"
msgstr ""
msgid "More actions"
msgstr ""
msgid "More info"
msgstr ""
msgid "More information"
msgstr ""
msgid "More information is available|here"
msgstr ""
msgid "More than %{number_commits_distance} commits different with %{default_branch}"
msgstr ""
msgid "Most stars"
msgstr ""
msgid "Move"
msgstr ""
msgid "Move issue"
msgstr ""
msgid "Multiple issue boards"
msgstr ""
msgid "Name"
msgstr ""
msgid "Name new label"
msgstr ""
msgid "Name your individual key via a title"
msgstr ""
msgid "Name:"
msgstr ""
msgid "Naming, topics, avatar"
msgstr ""
msgid "Naming, visibility"
msgstr ""
msgid "Nav|Help"
msgstr ""
msgid "Nav|Home"
msgstr ""
msgid "Nav|Sign In / Register"
msgstr ""
msgid "Nav|Sign out and sign in with a different account"
msgstr ""
msgid "Need help?"
msgstr ""
msgid "Network"
msgstr ""
msgid "Never"
msgstr ""
msgid "New"
msgstr ""
msgid "New Application"
msgstr ""
msgid "New Environment"
msgstr ""
msgid "New Group"
msgstr ""
msgid "New Identity"
msgstr ""
msgid "New Issue"
msgid_plural "New Issues"
msgstr[0] ""
msgstr[1] ""
msgid "New Label"
msgstr ""
msgid "New Milestone"
msgstr ""
msgid "New Pages Domain"
msgstr ""
msgid "New Password"
msgstr ""
msgid "New Pipeline Schedule"
msgstr ""
msgid "New Snippet"
msgstr ""
msgid "New branch"
msgstr ""
msgid "New branch unavailable"
msgstr ""
msgid "New deploy key"
msgstr ""
msgid "New directory"
msgstr ""
msgid "New environment"
msgstr ""
msgid "New epic"
msgstr ""
msgid "New file"
msgstr ""
msgid "New group"
msgstr ""
msgid "New health check access token has been generated!"
msgstr ""
msgid "New identity"
msgstr ""
msgid "New issue"
msgstr ""
msgid "New label"
msgstr ""
msgid "New merge request"
msgstr ""
msgid "New milestone"
msgstr ""
msgid "New pipelines will cancel older, pending pipelines on the same branch"
msgstr ""
msgid "New project"
msgstr ""
msgid "New runners registration token has been generated!"
msgstr ""
msgid "New schedule"
msgstr ""
msgid "New snippet"
msgstr ""
msgid "New subgroup"
msgstr ""
msgid "New tag"
msgstr ""
msgid "New users set to external"
msgstr ""
msgid "New..."
msgstr ""
msgid "Newly registered users will by default be external"
msgstr ""
msgid "No"
msgstr ""
msgid "No %{providerTitle} repositories available to import"
msgstr ""
msgid "No Label"
msgstr ""
msgid "No Tag"
msgstr ""
msgid "No activities found"
msgstr ""
msgid "No assignee"
msgstr ""
msgid "No branches found"
msgstr ""
msgid "No changes"
msgstr ""
msgid "No changes between %{ref_start}%{source_branch}%{ref_end} and %{ref_start}%{target_branch}%{ref_end}"
msgstr ""
msgid "No connection could be made to a Gitaly Server, please check your logs!"
msgstr ""
msgid "No container images stored for this project. Add one by following the instructions above."
msgstr ""
msgid "No contributions were found"
msgstr ""
msgid "No credit card required."
msgstr ""
msgid "No designs found."
msgstr ""
msgid "No details available"
msgstr ""
msgid "No due date"
msgstr ""
msgid "No errors to display."
msgstr ""
msgid "No estimate or time spent"
msgstr ""
msgid "No file chosen"
msgstr ""
msgid "No file selected"
msgstr ""
msgid "No files found."
msgstr ""
msgid "No issues for the selected time period."
msgstr "" msgstr ""
msgid "Import all compatible projects" msgid "No labels with such name or description"
msgstr "" msgstr ""
msgid "Import all projects" msgid "No license. All rights reserved"
msgstr "" msgstr ""
msgid "Import all repositories" msgid "No matching results"
msgstr "" msgstr ""
msgid "Import an exported GitLab project" msgid "No merge requests for the selected time period."
msgstr "" msgstr ""
msgid "Import in progress" msgid "No merge requests found"
msgstr "" msgstr ""
msgid "Import issues" msgid "No messages were logged"
msgstr "" msgstr ""
msgid "Import members" msgid "No milestones to show"
msgstr "" msgstr ""
msgid "Import members from another project" msgid "No other labels with such name or description"
msgstr "" msgstr ""
msgid "Import multiple repositories by uploading a manifest file." msgid "No preview for this file type"
msgstr "" msgstr ""
msgid "Import project" msgid "No prioritised labels with such name or description"
msgstr "" msgstr ""
msgid "Import project members" msgid "No public groups"
msgstr "" msgstr ""
msgid "Import projects from Bitbucket" msgid "No pushes for the selected time period."
msgstr "" msgstr ""
msgid "Import projects from Bitbucket Server" msgid "No repository"
msgstr "" msgstr ""
msgid "Import projects from FogBugz" msgid "No runners found"
msgstr "" msgstr ""
msgid "Import projects from GitLab.com" msgid "No schedules"
msgstr "" msgstr ""
msgid "Import projects from Google Code" msgid "No start date"
msgstr "" msgstr ""
msgid "Import repositories from Bitbucket Server" msgid "No, directly import the existing email addresses and usernames."
msgstr "" msgstr ""
msgid "Import repositories from GitHub" msgid "Nodes"
msgstr "" msgstr ""
msgid "Import repository" msgid "None"
msgstr "" msgstr ""
msgid "Import timed out. Import took longer than %{import_jobs_expiration} seconds" msgid "Not allowed to merge"
msgstr "" msgstr ""
msgid "Import/Export illustration" msgid "Not available"
msgstr "" msgstr ""
msgid "ImportProjects|Importing the project failed" msgid "Not available for private projects"
msgstr "" msgstr ""
msgid "ImportProjects|Requesting your %{provider} repositories failed" msgid "Not available for protected branches"
msgstr "" msgstr ""
msgid "ImportProjects|Select the projects you want to import" msgid "Not confidential"
msgstr "" msgstr ""
msgid "ImportProjects|Updating the imported projects failed" msgid "Not enough data"
msgstr "" msgstr ""
msgid "In order to enable instance-level analytics, please ask an admin to enable %{usage_ping_link_start}usage ping%{usage_ping_link_end}." msgid "Not now"
msgstr "" msgstr ""
msgid "In order to gather accurate feature usage data, it can take 1 to 2 weeks to see your index." msgid "Not started"
msgstr "" msgstr ""
msgid "In the next step, you'll be able to select the projects you want to import." msgid "Note that this invitation was sent to %{mail_to_invite_email}, but you are signed in as %{link_to_current_user} with email %{mail_to_current_user}."
msgstr "" msgstr ""
msgid "Include a Terms of Service agreement and Privacy Policy that all users must accept." msgid "Note: As an administrator you may like to configure %{github_integration_link}, which will allow login via GitHub and allow connecting repositories without generating a Personal Access Token."
msgstr "" msgstr ""
msgid "Include author name in notification email body" msgid "Note: As an administrator you may like to configure %{github_integration_link}, which will allow login via GitHub and allow importing repositories without generating a Personal Access Token."
msgstr "" msgstr ""
msgid "Include merge request description" msgid "Note: Consider asking your GitLab administrator to configure %{github_integration_link}, which will allow login via GitHub and allow connecting repositories without generating a Personal Access Token."
msgstr "" msgstr ""
msgid "Include the username in the URL if required: <code>https://username@gitlab.company.com/group/project.git</code>." msgid "Note: Consider asking your GitLab administrator to configure %{github_integration_link}, which will allow login via GitHub and allow importing repositories without generating a Personal Access Token."
msgstr "" msgstr ""
msgid "Includes an MVC structure to help you get started." msgid "Notes|Are you sure you want to cancel creating this comment?"
msgstr "" msgstr ""
msgid "Includes an MVC structure, Gemfile, Rakefile, along with many others, to help you get started." msgid "Notes|Collapse replies"
msgstr "" msgstr ""
msgid "Includes an MVC structure, mvnw and pom.xml to help you get started." msgid "Notes|Show all activity"
msgstr "" msgstr ""
msgid "Incompatible Project" msgid "Notes|Show comments only"
msgstr "" msgstr ""
msgid "Indicates whether this runner can pick jobs without tags" msgid "Notes|Show history only"
msgstr "" msgstr ""
msgid "Inform users without uploaded SSH keys that they can't push over SSH until one is added" msgid "Notification events"
msgstr "" msgstr ""
msgid "Information about additional Pages templates and how to install them can be found in our %{pages_getting_started_guide}." msgid "Notification setting"
msgstr "" msgstr ""
msgid "Inline" msgid "Notification setting - %{notification_title}"
msgstr "" msgstr ""
msgid "Input host keys manually" msgid "NotificationEvent|Close issue"
msgstr "" msgstr ""
msgid "Input your repository URL" msgid "NotificationEvent|Close merge request"
msgstr "" msgstr ""
msgid "Insert a quote" msgid "NotificationEvent|Failed pipeline"
msgstr "" msgstr ""
msgid "Insert code" msgid "NotificationEvent|Merge merge request"
msgstr "" msgstr ""
msgid "Insert suggestion" msgid "NotificationEvent|New epic"
msgstr "" msgstr ""
msgid "Install GitLab Runner" msgid "NotificationEvent|New issue"
msgstr "" msgstr ""
msgid "Install Runner on Kubernetes" msgid "NotificationEvent|New merge request"
msgstr "" msgstr ""
msgid "Instance Statistics" msgid "NotificationEvent|New note"
msgstr "" msgstr ""
msgid "Instance Statistics visibility" msgid "NotificationEvent|Reassign issue"
msgstr "" msgstr ""
msgid "Instance does not support multiple Kubernetes clusters" msgid "NotificationEvent|Reassign merge request"
msgstr "" msgstr ""
msgid "Integrations" msgid "NotificationEvent|Reopen issue"
msgstr "" msgstr ""
msgid "Integrations Settings" msgid "NotificationEvent|Successful pipeline"
msgstr "" msgstr ""
msgid "Interested parties can even contribute by pushing commits if they want to." msgid "NotificationLevel|Custom"
msgstr "" msgstr ""
msgid "Internal" msgid "NotificationLevel|Disabled"
msgstr "" msgstr ""
msgid "Internal - The group and any internal projects can be viewed by any logged in user." msgid "NotificationLevel|Global"
msgstr "" msgstr ""
msgid "Internal - The project can be accessed by any logged in user." msgid "NotificationLevel|On mention"
msgstr "" msgstr ""
msgid "Internal users" msgid "NotificationLevel|Participate"
msgstr "" msgstr ""
msgid "Interval Pattern" msgid "NotificationLevel|Watch"
msgstr "" msgstr ""
msgid "Introducing Cycle Analytics" msgid "Notifications"
msgstr "" msgstr ""
msgid "Introducing Your Conversational Development Index" msgid "Notifications off"
msgstr "" msgstr ""
msgid "Invalid Login or password" msgid "Notifications on"
msgstr "" msgstr ""
msgid "Invalid file." msgid "Nov"
msgstr "" msgstr ""
msgid "Invalid input, please avoid emojis" msgid "November"
msgstr "" msgstr ""
msgid "Invalid pin code" msgid "OK"
msgstr "" msgstr ""
msgid "Invalid two-factor code." msgid "Oct"
msgstr "" msgstr ""
msgid "Invitation" msgid "October"
msgstr "" msgstr ""
msgid "Invite" msgid "OfSearchInADropdown|Filter"
msgstr "" msgstr ""
msgid "Invite group" msgid "Once imported, repositories can be mirrored over SSH. Read more %{ssh_link}"
msgstr "" msgstr ""
msgid "Invite member" msgid "Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source."
msgstr "" msgstr ""
msgid "Invoke Count" msgid "Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page."
msgstr "" msgstr ""
msgid "Invoke Time" msgid "One more item"
msgid_plural "%d more items"
msgstr[0] ""
msgstr[1] ""
msgid "One or more of your Bitbucket projects cannot be imported into GitLab directly because they use Subversion or Mercurial for version control, rather than Git."
msgstr "" msgstr ""
msgid "IssuableStatus|Closed (%{moved_link_start}moved%{moved_link_end})" msgid "One or more of your Google Code projects cannot be imported into GitLab directly because they use Subversion or Mercurial for version control, rather than Git."
msgstr "" msgstr ""
msgid "Issue" msgid "Only admins"
msgstr "" msgstr ""
msgid "Issue Boards" msgid "Only mirror protected branches"
msgstr "" msgstr ""
msgid "Issue events" msgid "Only policy:"
msgstr "" msgstr ""
msgid "IssueBoards|Board" msgid "Only proceed if you trust %{idp_url} to control your GitLab account sign in."
msgstr "" msgstr ""
msgid "Issues" msgid "Only project members can comment."
msgstr "" msgstr ""
msgid "Issues can be bugs, tasks or ideas to be discussed. Also, issues are searchable and filterable." msgid "Only project members will be imported. Group members will be skipped."
msgstr "" msgstr ""
msgid "Issues, merge requests, pushes, and comments." msgid "Oops, are you sure?"
msgstr "" msgstr ""
msgid "It must have a header row and at least two columns: the first column is the issue title and the second column is the issue description. The separator is automatically detected." msgid "Open"
msgstr "" msgstr ""
msgid "It's you" msgid "Open Documentation"
msgstr "" msgstr ""
msgid "Jan" msgid "Open comment type dropdown"
msgstr "" msgstr ""
msgid "January" msgid "Open errors"
msgstr "" msgstr ""
msgid "Job" msgid "Open in Xcode"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Job Failed #%{build_id}" msgid "Job Failed #%{build_id}"
msgstr "" msgstr ""
msgid "Job ID" msgid "Job ID"
=======
msgid "Open projects"
>>>>>>> 06f28e63f44... Improve project settings page
msgstr "" msgstr ""
msgid "Job has been erased" msgid "Open sidebar"
msgstr "" msgstr ""
msgid "Job has been successfully erased!" msgid "Open source software to collaborate on code"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Job has wrong arguments format." msgid "Job has wrong arguments format."
msgstr "" msgstr ""
...@@ -4719,36 +6799,40 @@ msgid "Job is missing the `model_type` argument." ...@@ -4719,36 +6799,40 @@ msgid "Job is missing the `model_type` argument."
msgstr "" msgstr ""
msgid "Job is stuck. Check runners." msgid "Job is stuck. Check runners."
=======
msgid "Opened"
>>>>>>> Improve project settings page
msgstr "" msgstr ""
msgid "Job was retried" msgid "Opened MR"
msgstr "" msgstr ""
msgid "Jobs" msgid "Opened issues"
msgstr "" msgstr ""
msgid "Job|Browse" msgid "OpenedNDaysAgo|Opened"
msgstr "" msgstr ""
msgid "Job|Complete Raw" msgid "Opens in a new window"
msgstr "" msgstr ""
msgid "Job|Download" msgid "Operations"
msgstr "" msgstr ""
msgid "Job|Erase job log" msgid "Operations Dashboard"
msgstr "" msgstr ""
msgid "Job|Job artifacts" msgid "Operations Settings"
msgstr "" msgstr ""
msgid "Job|Job has been erased" msgid "OperationsDashboard|Add a project to the dashboard"
msgstr "" msgstr ""
msgid "Job|Job has been erased by" msgid "OperationsDashboard|The operations dashboard provides a summary of each project's operational health, including pipeline and alert statuses."
msgstr "" msgstr ""
msgid "Job|Keep" msgid "OperationsDashboard|Unable to add %{invalidProjects}. The Operations Dashboard is available for public projects, and private projects in groups with a Gold plan."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Job|Pipeline" msgid "Job|Pipeline"
...@@ -4841,7 +6925,14 @@ msgstr "" ...@@ -4841,7 +6925,14 @@ msgstr ""
msgid "Label actions dropdown" msgid "Label actions dropdown"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Label was created" msgid "Label was created"
=======
msgid "Path"
msgstr ""
msgid "Path, transfer, remove"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Label was removed" msgid "Label was removed"
...@@ -5169,7 +7260,14 @@ msgstr "" ...@@ -5169,7 +7260,14 @@ msgstr ""
msgid "Merge immediately" msgid "Merge immediately"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Merge in progress" msgid "Merge in progress"
=======
msgid "Please wait a moment, this page will automatically refresh when ready."
msgstr ""
msgid "Please wait while we connect to your repository. Refresh at will."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Merge method" msgid "Merge method"
...@@ -5525,16 +7623,36 @@ msgstr "" ...@@ -5525,16 +7623,36 @@ msgstr ""
msgid "New merge request" msgid "New merge request"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "New milestone" msgid "New milestone"
=======
msgid "Project ID"
msgstr ""
msgid "Project URL"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "New pipelines will cancel older, pending pipelines on the same branch" msgid "New pipelines will cancel older, pending pipelines on the same branch"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "New project" msgid "New project"
msgstr "" msgstr ""
msgid "New runners registration token has been generated!" msgid "New runners registration token has been generated!"
=======
msgid "Project and wiki repositories"
msgstr ""
msgid "Project avatar"
msgstr ""
msgid "Project configuration, including services"
msgstr ""
msgid "Project description (optional)"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "New schedule" msgid "New schedule"
...@@ -5567,7 +7685,17 @@ msgstr "" ...@@ -5567,7 +7685,17 @@ msgstr ""
msgid "No Tag" msgid "No Tag"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "No activities found" msgid "No activities found"
=======
msgid "Project uploads"
msgstr ""
msgid "Project visibility level will be changed to match namespace rules when transferring to a group."
msgstr ""
msgid "Project:"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "No branches found" msgid "No branches found"
...@@ -6070,7 +8198,14 @@ msgstr "" ...@@ -6070,7 +8198,14 @@ msgstr ""
msgid "Pipelines for last week" msgid "Pipelines for last week"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Pipelines for last year" msgid "Pipelines for last year"
=======
msgid "Remove fork relationship"
msgstr ""
msgid "Remove group"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Pipelines need to be configured to enable this feature." msgid "Pipelines need to be configured to enable this feature."
...@@ -6082,10 +8217,23 @@ msgstr "" ...@@ -6082,10 +8217,23 @@ msgstr ""
msgid "Pipelines|Build with confidence" msgid "Pipelines|Build with confidence"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Pipelines|CI Lint" msgid "Pipelines|CI Lint"
msgstr "" msgstr ""
msgid "Pipelines|Clear Runner Caches" msgid "Pipelines|Clear Runner Caches"
=======
msgid "Removed projects cannot be restored!"
msgstr ""
msgid "Removing group will cause all child projects and resources to be removed."
msgstr ""
msgid "Removing the project will delete its repository and all related resources including issues, merge requests etc."
msgstr ""
msgid "Rename"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Pipelines|Continuous Integration can help catch bugs by running your tests automatically, while Continuous Deployment can help you deliver code to your product environment." msgid "Pipelines|Continuous Integration can help catch bugs by running your tests automatically, while Continuous Deployment can help you deliver code to your product environment."
...@@ -6334,7 +8482,14 @@ msgstr "" ...@@ -6334,7 +8482,14 @@ msgstr ""
msgid "Profiles|Change username" msgid "Profiles|Change username"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Profiles|Changing your username can have unintended side effects." msgid "Profiles|Changing your username can have unintended side effects."
=======
msgid "Run housekeeping"
msgstr ""
msgid "Run tests against your code live using the Web Terminal"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Profiles|Choose file..." msgid "Profiles|Choose file..."
...@@ -6397,7 +8552,14 @@ msgstr "" ...@@ -6397,7 +8552,14 @@ msgstr ""
msgid "Profiles|Invalid password" msgid "Profiles|Invalid password"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Profiles|Invalid username" msgid "Profiles|Invalid username"
=======
msgid "Runs a number of housekeeping tasks within the current repository, such as compressing file revisions and removing unreachable objects."
msgstr ""
msgid "SAML SSO"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Profiles|Learn more" msgid "Profiles|Learn more"
...@@ -6457,7 +8619,14 @@ msgstr "" ...@@ -6457,7 +8619,14 @@ msgstr ""
msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgid "Profiles|This emoji and message will appear on your profile and throughout the interface."
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Profiles|This information will appear on your profile" msgid "Profiles|This information will appear on your profile"
=======
msgid "Saving project."
msgstr ""
msgid "Schedule a new pipeline"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Profiles|Two-Factor Authentication" msgid "Profiles|Two-Factor Authentication"
...@@ -6670,7 +8839,14 @@ msgstr "" ...@@ -6670,7 +8839,14 @@ msgstr ""
msgid "ProjectOverview|You must sign in to star a project" msgid "ProjectOverview|You must sign in to star a project"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "ProjectPage|Project ID: %{project_id}" msgid "ProjectPage|Project ID: %{project_id}"
=======
msgid "Select a new namespace"
msgstr ""
msgid "Select a project to read Insights configuration file"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "ProjectSettings|Badges" msgid "ProjectSettings|Badges"
...@@ -6742,7 +8918,14 @@ msgstr "" ...@@ -6742,7 +8918,14 @@ msgstr ""
msgid "PrometheusService|Finding and configuring metrics..." msgid "PrometheusService|Finding and configuring metrics..."
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "PrometheusService|Install Prometheus on clusters" msgid "PrometheusService|Install Prometheus on clusters"
=======
msgid "Separate topics with commas."
msgstr ""
msgid "September"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "PrometheusService|Manage clusters" msgid "PrometheusService|Manage clusters"
...@@ -6805,7 +8988,14 @@ msgstr "" ...@@ -6805,7 +8988,14 @@ msgstr ""
msgid "Public" msgid "Public"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Public - The group and any public projects can be viewed without any authentication." msgid "Public - The group and any public projects can be viewed without any authentication."
=======
msgid "Set a default template for issue descriptions."
msgstr ""
msgid "Set a number of approvals required, the approvers and other approval settings."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Public - The project can be accessed without any authentication." msgid "Public - The project can be accessed without any authentication."
...@@ -7822,7 +10012,17 @@ msgstr "" ...@@ -7822,7 +10012,17 @@ msgstr ""
msgid "SortOptions|Oldest last activity" msgid "SortOptions|Oldest last activity"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "SortOptions|Oldest sign in" msgid "SortOptions|Oldest sign in"
=======
msgid "The following items will NOT be exported:"
msgstr ""
msgid "The following items will be exported:"
msgstr ""
msgid "The fork relationship has been removed."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "SortOptions|Oldest updated" msgid "SortOptions|Oldest updated"
...@@ -8014,7 +10214,14 @@ msgstr "" ...@@ -8014,7 +10214,14 @@ msgstr ""
msgid "Submit search" msgid "Submit search"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Subscribe" msgid "Subscribe"
=======
msgid "This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention."
msgstr ""
msgid "This application was created by %{link_to_owner}."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Subscribe at group level" msgid "Subscribe at group level"
...@@ -8244,7 +10451,14 @@ msgstr "" ...@@ -8244,7 +10451,14 @@ msgstr ""
msgid "The directory has been successfully created." msgid "The directory has been successfully created."
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "The entered user map is not a valid JSON user map." msgid "The entered user map is not a valid JSON user map."
=======
msgid "This will remove the fork relationship to source project"
msgstr ""
msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "The file has been successfully created." msgid "The file has been successfully created."
...@@ -8610,7 +10824,14 @@ msgstr "" ...@@ -8610,7 +10824,14 @@ msgstr ""
msgid "This job will automatically run after its timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action." msgid "This job will automatically run after its timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action."
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "This means you can not push code until you create an empty repository or import existing one." msgid "This means you can not push code until you create an empty repository or import existing one."
=======
msgid "Topics"
msgstr ""
msgid "Total Contributions"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "This merge request is locked." msgid "This merge request is locked."
...@@ -8631,7 +10852,14 @@ msgstr "" ...@@ -8631,7 +10852,14 @@ msgstr ""
msgid "This pipeline is run on the source branch" msgid "This pipeline is run on the source branch"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "This pipeline makes use of a predefined CI/CD configuration enabled by %{strongStart}Auto DevOps.%{strongEnd}" msgid "This pipeline makes use of a predefined CI/CD configuration enabled by %{strongStart}Auto DevOps.%{strongEnd}"
=======
msgid "Transfer project"
msgstr ""
msgid "Tree view"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "This pipeline makes use of a predefined CI/CD configuration enabled by <b>Auto DevOps.</b>" msgid "This pipeline makes use of a predefined CI/CD configuration enabled by <b>Auto DevOps.</b>"
...@@ -8700,7 +10928,17 @@ msgstr "" ...@@ -8700,7 +10928,17 @@ msgstr ""
msgid "Time spent" msgid "Time spent"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Time tracking" msgid "Time tracking"
=======
msgid "Unarchive project"
msgstr ""
msgid "Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments and other entities can be created. <strong>Once active this project shows up in the search and on the dashboard.</strong>"
msgstr ""
msgid "Unblock"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Time until first merge request" msgid "Time until first merge request"
...@@ -8781,7 +11019,11 @@ msgstr "" ...@@ -8781,7 +11019,11 @@ msgstr ""
msgid "Timeago|1 week ago" msgid "Timeago|1 week ago"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Timeago|1 week remaining" msgid "Timeago|1 week remaining"
=======
msgid "Update your project name, topics, description and avatar."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Timeago|1 year ago" msgid "Timeago|1 year ago"
...@@ -9193,7 +11435,14 @@ msgstr "" ...@@ -9193,7 +11435,14 @@ msgstr ""
msgid "User %{username} was successfully removed." msgid "User %{username} was successfully removed."
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled."
=======
msgid "Webhooks"
msgstr ""
msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "User OAuth applications" msgid "User OAuth applications"
...@@ -9477,7 +11726,14 @@ msgstr[1] "" ...@@ -9477,7 +11726,14 @@ msgstr[1] ""
msgid "When:" msgid "When:"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Who can see this group?" msgid "Who can see this group?"
=======
msgid "You can only transfer the project to namespaces you manage."
msgstr ""
msgid "You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "Who will be able to see this group?" msgid "Who will be able to see this group?"
...@@ -9558,7 +11814,14 @@ msgstr "" ...@@ -9558,7 +11814,14 @@ msgstr ""
msgid "WikiMarkdownTip|To link to a (new) page, simply type %{link_example}" msgid "WikiMarkdownTip|To link to a (new) page, simply type %{link_example}"
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "WikiNewPagePlaceholder|how-to-setup" msgid "WikiNewPagePlaceholder|how-to-setup"
=======
msgid "You will need to update your local repositories to point to the new location."
msgstr ""
msgid "You will not get any notifications via email"
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "WikiNewPageTip|Tip: You can specify the full path for the new file. We will automatically create any missing directories." msgid "WikiNewPageTip|Tip: You can specify the full path for the new file. We will automatically create any missing directories."
...@@ -9660,7 +11923,14 @@ msgstr "" ...@@ -9660,7 +11923,14 @@ msgstr ""
msgid "Yes, let me map Google Code users to full names or GitLab users." msgid "Yes, let me map Google Code users to full names or GitLab users."
msgstr "" msgstr ""
<<<<<<< HEAD
msgid "Yesterday" msgid "Yesterday"
=======
msgid "Your deployment services will be broken, you will need to manually fix the services after renaming."
msgstr ""
msgid "Your device was successfully set up! Give it a name and register it with the GitLab server."
>>>>>>> 10e41ccd30f... Improve project settings page
msgstr "" msgstr ""
msgid "You" msgid "You"
......
...@@ -9,24 +9,33 @@ describe 'Projects > Settings > User renames a project' do ...@@ -9,24 +9,33 @@ describe 'Projects > Settings > User renames a project' do
visit edit_project_path(project) visit edit_project_path(project)
end end
def rename_project(project, name: nil, path: nil) def change_path(project, path)
fill_in('project_name', with: name) if name within('.advanced-settings') do
fill_in('Path', with: path) if path fill_in('Path', with: path)
click_button('Rename project') click_button('Change path')
end
project.reload
wait_for_edit_project_page_reload wait_for_edit_project_page_reload
end
def change_name(project, name)
within('.general-settings') do
fill_in('Project name', with: name)
click_button('Save changes')
end
project.reload project.reload
wait_for_edit_project_page_reload
end end
def wait_for_edit_project_page_reload def wait_for_edit_project_page_reload
expect(find('.project-edit-container')).to have_content('Rename repository') expect(find('.advanced-settings')).to have_content('Change path')
end end
context 'with invalid characters' do context 'with invalid characters' do
it 'shows errors for invalid project path/name' do it 'shows errors for invalid project path' do
rename_project(project, name: 'foo&bar', path: 'foo&bar') change_path(project, 'foo&bar')
expect(page).to have_field 'Project name', with: 'foo&bar'
expect(page).to have_field 'Path', with: 'foo&bar' expect(page).to have_field 'Path', with: 'foo&bar'
expect(page).to have_content "Name can contain only letters, digits, emojis, '_', '.', dash, space. It must start with letter, digit, emoji or '_'."
expect(page).to have_content "Path can contain only letters, digits, '_', '-' and '.'. Cannot start with '-', end in '.git' or end in '.atom'" expect(page).to have_content "Path can contain only letters, digits, '_', '-' and '.'. Cannot start with '-', end in '.git' or end in '.atom'"
end end
end end
...@@ -42,13 +51,13 @@ describe 'Projects > Settings > User renames a project' do ...@@ -42,13 +51,13 @@ describe 'Projects > Settings > User renames a project' do
context 'when changing project name' do context 'when changing project name' do
it 'renames the repository' do it 'renames the repository' do
rename_project(project, name: 'bar') change_name(project, 'bar')
expect(find('.breadcrumbs')).to have_content(project.name) expect(find('.breadcrumbs')).to have_content(project.name)
end end
context 'with emojis' do context 'with emojis' do
it 'shows error for invalid project name' do it 'shows error for invalid project name' do
rename_project(project, name: '🚀 foo bar ☁️') change_name(project, '🚀 foo bar ☁️')
expect(page).to have_field 'Project name', with: '🚀 foo bar ☁️' expect(page).to have_field 'Project name', with: '🚀 foo bar ☁️'
expect(page).not_to have_content "Name can contain only letters, digits, emojis '_', '.', dash and space. It must start with letter, digit, emoji or '_'." expect(page).not_to have_content "Name can contain only letters, digits, emojis '_', '.', dash and space. It must start with letter, digit, emoji or '_'."
end end
...@@ -67,7 +76,7 @@ describe 'Projects > Settings > User renames a project' do ...@@ -67,7 +76,7 @@ describe 'Projects > Settings > User renames a project' do
end end
it 'the project is accessible via the new path' do it 'the project is accessible via the new path' do
rename_project(project, path: 'bar') change_path(project, 'bar')
new_path = namespace_project_path(project.namespace, 'bar') new_path = namespace_project_path(project.namespace, 'bar')
visit new_path visit new_path
...@@ -77,7 +86,7 @@ describe 'Projects > Settings > User renames a project' do ...@@ -77,7 +86,7 @@ describe 'Projects > Settings > User renames a project' do
it 'the project is accessible via a redirect from the old path' do it 'the project is accessible via a redirect from the old path' do
old_path = project_path(project) old_path = project_path(project)
rename_project(project, path: 'bar') change_path(project, 'bar')
new_path = namespace_project_path(project.namespace, 'bar') new_path = namespace_project_path(project.namespace, 'bar')
visit old_path visit old_path
...@@ -88,7 +97,7 @@ describe 'Projects > Settings > User renames a project' do ...@@ -88,7 +97,7 @@ describe 'Projects > Settings > User renames a project' do
context 'and a new project is added with the same path' do context 'and a new project is added with the same path' do
it 'overrides the redirect' do it 'overrides the redirect' do
old_path = project_path(project) old_path = project_path(project)
rename_project(project, path: 'bar') change_path(project, 'bar')
new_project = create(:project, namespace: user.namespace, path: 'gitlabhq', name: 'quz') new_project = create(:project, namespace: user.namespace, path: 'gitlabhq', name: 'quz')
visit old_path visit old_path
......
...@@ -373,6 +373,21 @@ describe 'Project' do ...@@ -373,6 +373,21 @@ describe 'Project' do
end end
end end
describe 'edit' do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
let(:path) { edit_project_path(project) }
before do
project.add_maintainer(user)
sign_in(user)
visit path
end
it_behaves_like 'dirty submit form', [{ form: '.js-general-settings-form', input: 'input[name="project[name]"]' },
{ form: '.qa-merge-request-settings', input: '#project_printing_merge_request_link_enabled' }]
end
def remove_with_confirm(button_text, confirm_with) def remove_with_confirm(button_text, confirm_with)
click_button button_text click_button button_text
fill_in 'confirm_name_input', with: confirm_with fill_in 'confirm_name_input', with: confirm_with
......
shared_examples 'dirty submit form' do |selector_args| shared_examples 'dirty submit form' do |selector_args|
selectors = selector_args.is_a?(Array) ? selector_args : [selector_args] selectors = selector_args.is_a?(Array) ? selector_args : [selector_args]
def expect_disabled_state(form, submit, is_disabled = true) def expect_disabled_state(form, submit_selector, is_disabled = true)
disabled_selector = is_disabled == true ? '[disabled]' : ':not([disabled])' disabled_selector = is_disabled == true ? '[disabled]' : ':not([disabled])'
form.find(".js-dirty-submit#{disabled_selector}", match: :first) form.find("#{submit_selector}#{disabled_selector}")
expect(submit.disabled?).to be is_disabled
end end
selectors.each do |selector| selectors.each do |selector|
it "disables #{selector[:form]} submit until there are changes on #{selector[:input]}", :js do it "disables #{selector[:form]} submit until there are changes on #{selector[:input]}", :js do
form = find(selector[:form]) form = find(selector[:form])
submit = form.first('.js-dirty-submit') submit_selector = selector[:submit] || 'input[type="submit"]'
submit = form.first(submit_selector)
input = form.first(selector[:input]) input = form.first(selector[:input])
is_radio = input[:type] == 'radio' is_radio = input[:type] == 'radio'
is_checkbox = input[:type] == 'checkbox' is_checkbox = input[:type] == 'checkbox'
...@@ -22,15 +21,14 @@ shared_examples 'dirty submit form' do |selector_args| ...@@ -22,15 +21,14 @@ shared_examples 'dirty submit form' do |selector_args|
original_checkable = input if is_checkbox original_checkable = input if is_checkbox
expect(submit.disabled?).to be true expect(submit.disabled?).to be true
expect(input.checked?).to be false
is_checkable ? input.click : input.set("#{original_value} changes") is_checkable ? input.click : input.set("#{original_value} changes")
expect_disabled_state(form, submit, false) expect_disabled_state(form, submit_selector, false)
is_checkable ? original_checkable.click : input.set(original_value) is_checkable ? original_checkable.click : input.set(original_value)
expect_disabled_state(form, submit) expect_disabled_state(form, submit_selector)
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment