From 693e435f2fb8be8f60f73ee69fcb8f5297522a82 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Thu, 6 Sep 2018 05:13:44 +0100 Subject: port EE --- .../clusters/components/gcp_signup_offer.js | 25 ++--------------- app/assets/javascripts/persistent_user_callout.js | 32 ++++++++++++++++++++++ app/models/user_callout.rb | 3 +- app/views/dashboard/activity.html.haml | 3 ++ app/views/dashboard/groups/index.html.haml | 3 ++ app/views/dashboard/issues.html.haml | 3 ++ app/views/dashboard/merge_requests.html.haml | 3 ++ app/views/dashboard/projects/index.html.haml | 3 ++ app/views/dashboard/projects/starred.html.haml | 3 ++ app/views/dashboard/todos/index.html.haml | 3 ++ app/views/layouts/nav/_breadcrumbs.html.haml | 1 + .../clusters/_gcp_signup_offer_banner.html.haml | 4 +-- db/schema.rb | 12 ++++---- 13 files changed, 67 insertions(+), 31 deletions(-) create mode 100644 app/assets/javascripts/persistent_user_callout.js diff --git a/app/assets/javascripts/clusters/components/gcp_signup_offer.js b/app/assets/javascripts/clusters/components/gcp_signup_offer.js index 8bc20a1c09f..38663bd4898 100644 --- a/app/assets/javascripts/clusters/components/gcp_signup_offer.js +++ b/app/assets/javascripts/clusters/components/gcp_signup_offer.js @@ -1,27 +1,8 @@ -import $ from 'jquery'; -import axios from '~/lib/utils/axios_utils'; -import { __ } from '~/locale'; -import Flash from '~/flash'; +import PersistentUserCallout from '../../persistent_user_callout'; export default function gcpSignupOffer() { const alertEl = document.querySelector('.gcp-signup-offer'); - if (!alertEl) { - return; - } + if (!alertEl) return; - const closeButtonEl = alertEl.getElementsByClassName('close')[0]; - const { dismissEndpoint, featureId } = closeButtonEl.dataset; - - closeButtonEl.addEventListener('click', () => { - axios - .post(dismissEndpoint, { - feature_name: featureId, - }) - .then(() => { - $(alertEl).alert('close'); - }) - .catch(() => { - Flash(__('An error occurred while dismissing the alert. Refresh the page and try again.')); - }); - }); + new PersistentUserCallout(alertEl).init(); } diff --git a/app/assets/javascripts/persistent_user_callout.js b/app/assets/javascripts/persistent_user_callout.js new file mode 100644 index 00000000000..d136b3bfee9 --- /dev/null +++ b/app/assets/javascripts/persistent_user_callout.js @@ -0,0 +1,32 @@ +import axios from './lib/utils/axios_utils'; +import { __ } from './locale'; +import Flash from './flash'; + +export default class PersistentUserCallout { + constructor(container) { + const { dismissEndpoint, featureId } = container.dataset; + this.container = container; + this.dismissEndpoint = dismissEndpoint; + this.featureId = featureId; + } + + init() { + const closeButton = this.container.querySelector('.js-close'); + closeButton.addEventListener('click', event => this.dismiss(event)); + } + + dismiss(event) { + event.preventDefault(); + + axios + .post(this.dismissEndpoint, { + feature_name: this.featureId, + }) + .then(() => { + this.container.remove(); + }) + .catch(() => { + Flash(__('An error occurred while dismissing the alert. Refresh the page and try again.')); + }); + } +} diff --git a/app/models/user_callout.rb b/app/models/user_callout.rb index 97e955ace36..15a2155b0c5 100644 --- a/app/models/user_callout.rb +++ b/app/models/user_callout.rb @@ -5,7 +5,8 @@ class UserCallout < ActiveRecord::Base enum feature_name: { gke_cluster_integration: 1, - gcp_signup_offer: 2 + gcp_signup_offer: 2, + gold_trial: 3 } validates :user, presence: true diff --git a/app/views/dashboard/activity.html.haml b/app/views/dashboard/activity.html.haml index 31d4b3da4f1..3cee5841bbc 100644 --- a/app/views/dashboard/activity.html.haml +++ b/app/views/dashboard/activity.html.haml @@ -4,6 +4,9 @@ = content_for :meta_tags do = auto_discovery_link_tag(:atom, dashboard_projects_url(rss_url_options), title: "All activity") += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - page_title "Activity" - header_title "Activity", activity_dashboard_path diff --git a/app/views/dashboard/groups/index.html.haml b/app/views/dashboard/groups/index.html.haml index 50f39f93283..985928305a2 100644 --- a/app/views/dashboard/groups/index.html.haml +++ b/app/views/dashboard/groups/index.html.haml @@ -3,6 +3,9 @@ - header_title "Groups", dashboard_groups_path = render 'dashboard/groups_head' += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - if params[:filter].blank? && @groups.empty? = render 'shared/groups/empty_state' - else diff --git a/app/views/dashboard/issues.html.haml b/app/views/dashboard/issues.html.haml index 86a21e24ac9..91f58ddcfcc 100644 --- a/app/views/dashboard/issues.html.haml +++ b/app/views/dashboard/issues.html.haml @@ -4,6 +4,9 @@ = content_for :meta_tags do = auto_discovery_link_tag(:atom, safe_params.merge(rss_url_options).to_h, title: "#{current_user.name} issues") += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + .top-area = render 'shared/issuable/nav', type: :issues, display_count: !@no_filters_set .nav-controls diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml index 61aae31be60..27f53a8d1c6 100644 --- a/app/views/dashboard/merge_requests.html.haml +++ b/app/views/dashboard/merge_requests.html.haml @@ -2,6 +2,9 @@ - page_title _("Merge Requests") - @breadcrumb_link = merge_requests_dashboard_path(assignee_id: current_user.id) += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + .top-area = render 'shared/issuable/nav', type: :merge_requests, display_count: !@no_filters_set .nav-controls diff --git a/app/views/dashboard/projects/index.html.haml b/app/views/dashboard/projects/index.html.haml index deed774a4a5..f0d16936a51 100644 --- a/app/views/dashboard/projects/index.html.haml +++ b/app/views/dashboard/projects/index.html.haml @@ -4,6 +4,9 @@ = content_for :meta_tags do = auto_discovery_link_tag(:atom, dashboard_projects_url(rss_url_options), title: "All activity") += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - page_title "Projects" - header_title "Projects", dashboard_projects_path diff --git a/app/views/dashboard/projects/starred.html.haml b/app/views/dashboard/projects/starred.html.haml index 8933d9e31ff..42638b8528d 100644 --- a/app/views/dashboard/projects/starred.html.haml +++ b/app/views/dashboard/projects/starred.html.haml @@ -4,6 +4,9 @@ - page_title "Starred Projects" - header_title "Projects", dashboard_projects_path += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + %div{ class: container_class } = render "projects/last_push" = render 'dashboard/projects_head' diff --git a/app/views/dashboard/todos/index.html.haml b/app/views/dashboard/todos/index.html.haml index 8b3974d97f8..bbfa4cc7413 100644 --- a/app/views/dashboard/todos/index.html.haml +++ b/app/views/dashboard/todos/index.html.haml @@ -2,6 +2,9 @@ - page_title "Todos" - header_title "Todos", dashboard_todos_path += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - if current_user.todos.any? .top-area %ul.nav-links.mobile-separator.nav.nav-tabs diff --git a/app/views/layouts/nav/_breadcrumbs.html.haml b/app/views/layouts/nav/_breadcrumbs.html.haml index f53bd2b5e4d..c35451827c8 100644 --- a/app/views/layouts/nav/_breadcrumbs.html.haml +++ b/app/views/layouts/nav/_breadcrumbs.html.haml @@ -1,6 +1,7 @@ - container = @no_breadcrumb_container ? 'container-fluid' : container_class - hide_top_links = @hide_top_links || false += yield :above_breadcrumbs_content %nav.breadcrumbs{ role: "navigation", class: [container, @content_class] } .breadcrumbs-container - if defined?(@left_sidebar) diff --git a/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml b/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml index 73b11d509d3..6e53c747a33 100644 --- a/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml +++ b/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml @@ -1,6 +1,6 @@ - link = link_to(s_('ClusterIntegration|sign up'), 'https://console.cloud.google.com/freetrial?utm_campaign=2018_cpanel&utm_source=gitlab&utm_medium=referral', target: '_blank', rel: 'noopener noreferrer') -.bs-callout.gcp-signup-offer.alert.alert-block.alert-dismissable.prepend-top-default.append-bottom-default{ role: 'alert' } - %button.close{ type: "button", data: { feature_id: UserCalloutsHelper::GCP_SIGNUP_OFFER, dismiss_endpoint: user_callouts_path } } × +.bs-callout.gcp-signup-offer.alert.alert-block.alert-dismissable.prepend-top-default.append-bottom-default{ role: 'alert', data: { feature_id: UserCalloutsHelper::GCP_SIGNUP_OFFER, dismiss_endpoint: user_callouts_path } } + %button.close{ type: "button" } × .gcp-signup-offer--content .gcp-signup-offer--icon.append-right-8 = sprite_icon("information", size: 16) diff --git a/db/schema.rb b/db/schema.rb index f48df68b785..eb91fbaecee 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -164,14 +164,14 @@ ActiveRecord::Schema.define(version: 20180826111825) do t.boolean "authorized_keys_enabled", default: true, null: false t.string "auto_devops_domain" t.boolean "pages_domain_verification_enabled", default: true, null: false - t.string "user_default_internal_regex" t.boolean "allow_local_requests_from_hooks_and_services", default: false, null: false t.boolean "enforce_terms", default: false t.boolean "mirror_available", default: true, null: false t.boolean "hide_third_party_offers", default: false, null: false - t.boolean "instance_statistics_visibility_private", default: false, null: false + t.boolean "instance_statistics_visibility_private", default: true, null: false t.boolean "web_ide_clientside_preview_enabled", default: false, null: false t.boolean "user_show_add_ssh_key_message", default: true, null: false + t.string "user_default_internal_regex" end create_table "audit_events", force: :cascade do |t| @@ -330,10 +330,10 @@ ActiveRecord::Schema.define(version: 20180826111825) do t.integer "auto_canceled_by_id" t.boolean "retried" t.integer "stage_id" - t.integer "artifacts_file_store" - t.integer "artifacts_metadata_store" t.boolean "protected" t.integer "failure_reason" + t.integer "artifacts_file_store" + t.integer "artifacts_metadata_store" end add_index "ci_builds", ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)", using: :btree @@ -390,13 +390,13 @@ ActiveRecord::Schema.define(version: 20180826111825) do t.integer "project_id", null: false t.integer "job_id", null: false t.integer "file_type", null: false - t.integer "file_store" t.integer "size", limit: 8 t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.datetime_with_timezone "expire_at" t.string "file" t.binary "file_sha256" + t.integer "file_store" t.integer "file_format", limit: 2 t.integer "file_location", limit: 2 end @@ -2401,7 +2401,7 @@ ActiveRecord::Schema.define(version: 20180826111825) do add_foreign_key "term_agreements", "users", on_delete: :cascade add_foreign_key "timelogs", "issues", name: "fk_timelogs_issues_issue_id", on_delete: :cascade add_foreign_key "timelogs", "merge_requests", name: "fk_timelogs_merge_requests_merge_request_id", on_delete: :cascade - add_foreign_key "todos", "namespaces", column: "group_id", on_delete: :cascade + add_foreign_key "todos", "namespaces", column: "group_id", name: "fk_a27c483435", on_delete: :cascade add_foreign_key "todos", "notes", name: "fk_91d1f47b13", on_delete: :cascade add_foreign_key "todos", "projects", name: "fk_45054f9c45", on_delete: :cascade add_foreign_key "todos", "users", column: "author_id", name: "fk_ccf0373936", on_delete: :cascade -- cgit v1.2.1 From 769808732d5b3542726a5839d6a22da62fd9abeb Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Thu, 6 Sep 2018 14:42:36 +0100 Subject: fix gcp signup offer close js class --- app/views/projects/clusters/_gcp_signup_offer_banner.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml b/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml index 6e53c747a33..85d1002243b 100644 --- a/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml +++ b/app/views/projects/clusters/_gcp_signup_offer_banner.html.haml @@ -1,6 +1,6 @@ - link = link_to(s_('ClusterIntegration|sign up'), 'https://console.cloud.google.com/freetrial?utm_campaign=2018_cpanel&utm_source=gitlab&utm_medium=referral', target: '_blank', rel: 'noopener noreferrer') .bs-callout.gcp-signup-offer.alert.alert-block.alert-dismissable.prepend-top-default.append-bottom-default{ role: 'alert', data: { feature_id: UserCalloutsHelper::GCP_SIGNUP_OFFER, dismiss_endpoint: user_callouts_path } } - %button.close{ type: "button" } × + %button.close.js-close{ type: "button" } × .gcp-signup-offer--content .gcp-signup-offer--icon.append-right-8 = sprite_icon("information", size: 16) -- cgit v1.2.1 From 6c31b607de3528f78f340a2bc5bfdb163378981c Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 20 Sep 2018 21:47:34 +0500 Subject: Fix SpaceBeforeFirstArg cop --- .rubocop_todo.yml | 14 -------------- config/routes/project.rb | 2 +- ...517_add_foreign_key_pipeline_schedules_and_pipelines.rb | 2 +- lib/api/runners.rb | 2 +- spec/features/search/user_uses_search_filters_spec.rb | 4 ++-- spec/routing/project_routing_spec.rb | 8 ++++---- spec/services/system_note_service_spec.rb | 2 +- 7 files changed, 10 insertions(+), 24 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index d8c4e965190..c7b82af08df 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -53,20 +53,6 @@ Layout/IndentArray: Layout/IndentHash: Enabled: false -# Offense count: 11 -# Cop supports --auto-correct. -# Configuration parameters: AllowForAlignment. -Layout/SpaceBeforeFirstArg: - Exclude: - - 'config/routes/project.rb' - - 'db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb' - - 'features/steps/project/source/browse_files.rb' - - 'features/steps/project/source/markdown_render.rb' - - 'lib/api/runners.rb' - - 'spec/features/search/user_uses_search_filters_spec.rb' - - 'spec/routing/project_routing_spec.rb' - - 'spec/services/system_note_service_spec.rb' - # Offense count: 93 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. diff --git a/config/routes/project.rb b/config/routes/project.rb index 8a5310b5c23..6946f954019 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -365,7 +365,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do get :discussions, format: :json end collection do - post :bulk_update + post :bulk_update end end diff --git a/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb b/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb index 55bf40ba24d..cc5cb355579 100644 --- a/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb +++ b/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb @@ -13,7 +13,7 @@ class AddForeignKeyPipelineSchedulesAndPipelines < ActiveRecord::Migration 'SET NULL' end - add_concurrent_foreign_key :ci_pipelines, :ci_pipeline_schedules, + add_concurrent_foreign_key :ci_pipelines, :ci_pipeline_schedules, column: :pipeline_schedule_id, on_delete: on_delete end diff --git a/lib/api/runners.rb b/lib/api/runners.rb index 30abd0b63e9..15faf36ce0a 100644 --- a/lib/api/runners.rb +++ b/lib/api/runners.rb @@ -94,7 +94,7 @@ module API optional :status, type: String, desc: 'Status of the job', values: Ci::Build::AVAILABLE_STATUSES use :pagination end - get ':id/jobs' do + get ':id/jobs' do runner = get_runner(params[:id]) authenticate_list_runners_jobs!(runner) diff --git a/spec/features/search/user_uses_search_filters_spec.rb b/spec/features/search/user_uses_search_filters_spec.rb index 66afe163447..0725ff178ac 100644 --- a/spec/features/search/user_uses_search_filters_spec.rb +++ b/spec/features/search/user_uses_search_filters_spec.rb @@ -14,7 +14,7 @@ describe 'User uses search filters', :js do visit(search_path) end - context' when filtering by group' do + context 'when filtering by group' do it 'shows group projects' do find('.js-search-group-dropdown').click @@ -36,7 +36,7 @@ describe 'User uses search filters', :js do end end - context' when filtering by project' do + context 'when filtering by project' do it 'shows a project' do page.within('.project-filter') do find('.js-search-project-dropdown').click diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb index 5abc6d81958..56df8dddbc1 100644 --- a/spec/routing/project_routing_spec.rb +++ b/spec/routing/project_routing_spec.rb @@ -258,10 +258,10 @@ describe 'project routing' do end it 'to #logs_tree' do - expect(get('/gitlab/gitlabhq/refs/stable/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'stable') - expect(get('/gitlab/gitlabhq/refs/feature%2345/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature#45') - expect(get('/gitlab/gitlabhq/refs/feature%2B45/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature+45') - expect(get('/gitlab/gitlabhq/refs/feature@45/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature@45') + expect(get('/gitlab/gitlabhq/refs/stable/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'stable') + expect(get('/gitlab/gitlabhq/refs/feature%2345/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature#45') + expect(get('/gitlab/gitlabhq/refs/feature%2B45/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature+45') + expect(get('/gitlab/gitlabhq/refs/feature@45/logs_tree')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature@45') expect(get('/gitlab/gitlabhq/refs/stable/logs_tree/foo/bar/baz')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'stable', path: 'foo/bar/baz') expect(get('/gitlab/gitlabhq/refs/feature%2345/logs_tree/foo/bar/baz')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature#45', path: 'foo/bar/baz') expect(get('/gitlab/gitlabhq/refs/feature%2B45/logs_tree/foo/bar/baz')).to route_to('projects/refs#logs_tree', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'feature+45', path: 'foo/bar/baz') diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb index f4b7cb8c90a..a18126ee339 100644 --- a/spec/services/system_note_service_spec.rb +++ b/spec/services/system_note_service_spec.rb @@ -324,7 +324,7 @@ describe SystemNoteService do end it "posts the 'merge when pipeline succeeds' system note" do - expect(subject.note).to eq "canceled the automatic merge" + expect(subject.note).to eq "canceled the automatic merge" end end -- cgit v1.2.1 From 6c0907894f920c7681cff671542c69b914d4d03b Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 20 Sep 2018 21:49:26 +0500 Subject: Fix SpaceInsideArrayLiteralBrackets cop --- .rubocop_todo.yml | 9 --------- spec/lib/gitlab/import_export/relation_factory_spec.rb | 4 +--- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index c7b82af08df..7288dad3483 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -60,15 +60,6 @@ Layout/IndentHash: Layout/SpaceInLambdaLiteral: Enabled: false -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBrackets. -# SupportedStyles: space, no_space, compact -# SupportedStylesForEmptyBrackets: space, no_space -Layout/SpaceInsideArrayLiteralBrackets: - Exclude: - - 'spec/lib/gitlab/import_export/relation_factory_spec.rb' - # Offense count: 327 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters. diff --git a/spec/lib/gitlab/import_export/relation_factory_spec.rb b/spec/lib/gitlab/import_export/relation_factory_spec.rb index cf9e0f71910..a31f77484d8 100644 --- a/spec/lib/gitlab/import_export/relation_factory_spec.rb +++ b/spec/lib/gitlab/import_export/relation_factory_spec.rb @@ -191,9 +191,7 @@ describe Gitlab::ImportExport::RelationFactory do "author" => { "name" => "Administrator" }, - "events" => [ - - ] + "events" => [] } end -- cgit v1.2.1 From 67cdb1d1be14c893bf195a9f0bc8ba82e5fce91c Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 20 Sep 2018 21:54:14 +0500 Subject: Fix SpaceInsidePercentLiteralDelimiters cop --- .rubocop_todo.yml | 8 -------- lib/gitlab/git_access.rb | 4 ++-- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 7288dad3483..77ebfd64b81 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -73,14 +73,6 @@ Layout/SpaceInsideBlockBraces: Layout/SpaceInsideParens: Enabled: false -# Offense count: 14 -# Cop supports --auto-correct. -Layout/SpaceInsidePercentLiteralDelimiters: - Exclude: - - 'lib/gitlab/git_access.rb' - - 'lib/gitlab/health_checks/fs_shards_check.rb' - - 'spec/lib/gitlab/health_checks/fs_shards_check_spec.rb' - # Offense count: 26 Lint/DuplicateMethods: Exclude: diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb index 30cd09a0ca7..240a0d7d1b8 100644 --- a/lib/gitlab/git_access.rb +++ b/lib/gitlab/git_access.rb @@ -24,8 +24,8 @@ module Gitlab cannot_push_to_read_only: "You can't push code to a read-only GitLab instance." }.freeze - DOWNLOAD_COMMANDS = %w{ git-upload-pack git-upload-archive }.freeze - PUSH_COMMANDS = %w{ git-receive-pack }.freeze + DOWNLOAD_COMMANDS = %w{git-upload-pack git-upload-archive}.freeze + PUSH_COMMANDS = %w{git-receive-pack}.freeze ALL_COMMANDS = DOWNLOAD_COMMANDS + PUSH_COMMANDS attr_reader :actor, :project, :protocol, :authentication_abilities, :namespace_path, :project_path, :redirected_path, :auth_result_type, :changes -- cgit v1.2.1 From 87b85ef81cadacc753a5c538280d045a1bf35549 Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 20 Sep 2018 22:02:36 +0500 Subject: Fix DynamicAttributeDefinedStatically cop --- .rubocop_todo.yml | 18 ------------------ spec/factories/broadcast_messages.rb | 12 ++++++------ spec/factories/ci/builds.rb | 6 +++--- spec/factories/ci/runners.rb | 2 +- spec/factories/clusters/applications/helm.rb | 2 +- spec/factories/clusters/platforms/kubernetes.rb | 3 +-- spec/factories/emails.rb | 2 +- spec/factories/gpg_keys.rb | 4 ++-- spec/factories/group_members.rb | 2 +- spec/factories/merge_requests.rb | 2 +- spec/factories/notes.rb | 2 +- spec/factories/oauth_access_grants.rb | 2 +- spec/factories/project_members.rb | 2 +- spec/factories/todos.rb | 2 +- spec/factories/uploads.rb | 10 +++++----- 15 files changed, 26 insertions(+), 45 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 77ebfd64b81..b3b58c83269 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -10,24 +10,6 @@ Capybara/CurrentPathExpectation: Enabled: false -# Offense count: 23 -FactoryBot/DynamicAttributeDefinedStatically: - Exclude: - - 'spec/factories/broadcast_messages.rb' - - 'spec/factories/ci/builds.rb' - - 'spec/factories/ci/runners.rb' - - 'spec/factories/clusters/applications/helm.rb' - - 'spec/factories/clusters/platforms/kubernetes.rb' - - 'spec/factories/emails.rb' - - 'spec/factories/gpg_keys.rb' - - 'spec/factories/group_members.rb' - - 'spec/factories/merge_requests.rb' - - 'spec/factories/notes.rb' - - 'spec/factories/oauth_access_grants.rb' - - 'spec/factories/project_members.rb' - - 'spec/factories/todos.rb' - - 'spec/factories/uploads.rb' - # Offense count: 167 # Cop supports --auto-correct. Layout/EmptyLinesAroundArguments: diff --git a/spec/factories/broadcast_messages.rb b/spec/factories/broadcast_messages.rb index 9a65e7f8a3f..1a2be5e9552 100644 --- a/spec/factories/broadcast_messages.rb +++ b/spec/factories/broadcast_messages.rb @@ -1,17 +1,17 @@ FactoryBot.define do factory :broadcast_message do message "MyText" - starts_at 1.day.ago - ends_at 1.day.from_now + starts_at { 1.day.ago } + ends_at { 1.day.from_now } trait :expired do - starts_at 5.days.ago - ends_at 3.days.ago + starts_at { 5.days.ago } + ends_at { 3.days.ago } end trait :future do - starts_at 5.days.from_now - ends_at 6.days.from_now + starts_at { 5.days.from_now } + ends_at { 6.days.from_now } end end end diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb index 9813190925b..0baa4ecc4e0 100644 --- a/spec/factories/ci/builds.rb +++ b/spec/factories/ci/builds.rb @@ -159,12 +159,12 @@ FactoryBot.define do end trait :erased do - erased_at Time.now + erased_at { Time.now } erased_by factory: :user end trait :queued do - queued_at Time.now + queued_at { Time.now } runner factory: :ci_runner end @@ -194,7 +194,7 @@ FactoryBot.define do end trait :expired do - artifacts_expire_at 1.minute.ago + artifacts_expire_at { 1.minute.ago } end trait :with_commit do diff --git a/spec/factories/ci/runners.rb b/spec/factories/ci/runners.rb index 347e4f433e2..f564e7bee47 100644 --- a/spec/factories/ci/runners.rb +++ b/spec/factories/ci/runners.rb @@ -9,7 +9,7 @@ FactoryBot.define do runner_type :instance_type trait :online do - contacted_at Time.now + contacted_at { Time.now } end trait :instance do diff --git a/spec/factories/clusters/applications/helm.rb b/spec/factories/clusters/applications/helm.rb index c13b0249d94..d76d6a7334a 100644 --- a/spec/factories/clusters/applications/helm.rb +++ b/spec/factories/clusters/applications/helm.rb @@ -29,7 +29,7 @@ FactoryBot.define do trait :timeouted do installing - updated_at ClusterWaitForAppInstallationWorker::TIMEOUT.ago + updated_at { ClusterWaitForAppInstallationWorker::TIMEOUT.ago } end factory :clusters_applications_ingress, class: Clusters::Applications::Ingress do diff --git a/spec/factories/clusters/platforms/kubernetes.rb b/spec/factories/clusters/platforms/kubernetes.rb index 36ac2372204..4a0d1b181ea 100644 --- a/spec/factories/clusters/platforms/kubernetes.rb +++ b/spec/factories/clusters/platforms/kubernetes.rb @@ -3,11 +3,10 @@ FactoryBot.define do cluster namespace nil api_url 'https://kubernetes.example.com' - token 'a' * 40 + token { 'a' * 40 } trait :configured do api_url 'https://kubernetes.example.com' - token 'a' * 40 username 'xxxxxx' password 'xxxxxx' diff --git a/spec/factories/emails.rb b/spec/factories/emails.rb index d23ddf9d79b..feacd5ccf15 100644 --- a/spec/factories/emails.rb +++ b/spec/factories/emails.rb @@ -3,7 +3,7 @@ FactoryBot.define do user email { generate(:email_alias) } - trait(:confirmed) { confirmed_at Time.now } + trait(:confirmed) { confirmed_at { Time.now } } trait(:skip_validate) { to_create {|instance| instance.save(validate: false) } } end end diff --git a/spec/factories/gpg_keys.rb b/spec/factories/gpg_keys.rb index 51b8ddc9934..3c0f43cc1b6 100644 --- a/spec/factories/gpg_keys.rb +++ b/spec/factories/gpg_keys.rb @@ -2,11 +2,11 @@ require_relative '../support/helpers/gpg_helpers' FactoryBot.define do factory :gpg_key do - key GpgHelpers::User1.public_key + key { GpgHelpers::User1.public_key } user factory :gpg_key_with_subkeys do - key GpgHelpers::User1.public_key_with_extra_signing_key + key { GpgHelpers::User1.public_key_with_extra_signing_key } end end end diff --git a/spec/factories/group_members.rb b/spec/factories/group_members.rb index 47036560b9d..12be63e5d92 100644 --- a/spec/factories/group_members.rb +++ b/spec/factories/group_members.rb @@ -9,7 +9,7 @@ FactoryBot.define do trait(:developer) { access_level GroupMember::DEVELOPER } trait(:maintainer) { access_level GroupMember::MAINTAINER } trait(:owner) { access_level GroupMember::OWNER } - trait(:access_request) { requested_at Time.now } + trait(:access_request) { requested_at { Time.now } } trait(:invited) do user_id nil diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb index b8b089b069b..8094c43b065 100644 --- a/spec/factories/merge_requests.rb +++ b/spec/factories/merge_requests.rb @@ -80,7 +80,7 @@ FactoryBot.define do trait :merge_when_pipeline_succeeds do merge_when_pipeline_succeeds true - merge_user author + merge_user { author } end trait :remove_source_branch do diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb index 6844ed8aa4a..2d1f48bf249 100644 --- a/spec/factories/notes.rb +++ b/spec/factories/notes.rb @@ -90,7 +90,7 @@ FactoryBot.define do noteable nil noteable_type 'Commit' noteable_id nil - commit_id RepoHelpers.sample_commit.id + commit_id { RepoHelpers.sample_commit.id } end trait :legacy_diff_note do diff --git a/spec/factories/oauth_access_grants.rb b/spec/factories/oauth_access_grants.rb index 9e6af24c4eb..02c51cd9899 100644 --- a/spec/factories/oauth_access_grants.rb +++ b/spec/factories/oauth_access_grants.rb @@ -3,7 +3,7 @@ FactoryBot.define do resource_owner_id { create(:user).id } application token { Doorkeeper::OAuth::Helpers::UniqueToken.generate } - expires_in 2.hours + expires_in { 2.hours } redirect_uri { application.redirect_uri } scopes { application.scopes } diff --git a/spec/factories/project_members.rb b/spec/factories/project_members.rb index 22a8085ea45..c72e0487895 100644 --- a/spec/factories/project_members.rb +++ b/spec/factories/project_members.rb @@ -8,7 +8,7 @@ FactoryBot.define do trait(:reporter) { access_level ProjectMember::REPORTER } trait(:developer) { access_level ProjectMember::DEVELOPER } trait(:maintainer) { access_level ProjectMember::MAINTAINER } - trait(:access_request) { requested_at Time.now } + trait(:access_request) { requested_at { Time.now } } trait(:invited) do user_id nil diff --git a/spec/factories/todos.rb b/spec/factories/todos.rb index 14486c80341..ed3d87eb76b 100644 --- a/spec/factories/todos.rb +++ b/spec/factories/todos.rb @@ -49,7 +49,7 @@ FactoryBot.define do author user action { Todo::ASSIGNED } - commit_id RepoHelpers.sample_commit.id + commit_id { RepoHelpers.sample_commit.id } target_type "Commit" end end diff --git a/spec/factories/uploads.rb b/spec/factories/uploads.rb index 81c485fba1a..7256f785e1f 100644 --- a/spec/factories/uploads.rb +++ b/spec/factories/uploads.rb @@ -1,7 +1,7 @@ FactoryBot.define do factory :upload do model { build(:project) } - size 100.kilobytes + size { 100.kilobytes } uploader "AvatarUploader" mount_point :avatar secret nil @@ -19,13 +19,13 @@ FactoryBot.define do uploader "PersonalFileUploader" path { File.join(secret, filename) } model { build(:personal_snippet) } - secret SecureRandom.hex + secret { SecureRandom.hex } end trait :issuable_upload do uploader "FileUploader" path { File.join(secret, filename) } - secret SecureRandom.hex + secret { SecureRandom.hex } end trait :with_file do @@ -43,14 +43,14 @@ FactoryBot.define do model { build(:group) } path { File.join(secret, filename) } uploader "NamespaceFileUploader" - secret SecureRandom.hex + secret { SecureRandom.hex } end trait :favicon_upload do model { build(:appearance) } path { File.join(secret, filename) } uploader "FaviconUploader" - secret SecureRandom.hex + secret { SecureRandom.hex } end trait :attachment_upload do -- cgit v1.2.1 From b1a4c123f111cdc7bcb6e4be75505d8630cb292a Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 20 Sep 2018 22:08:07 +0500 Subject: Remove unused cops from todo --- .rubocop_todo.yml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index b3b58c83269..a6bc4b57aab 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -86,23 +86,11 @@ Lint/InterpolationCheck: Lint/MissingCopEnableDirective: Enabled: false -# Offense count: 2 -Lint/NestedPercentLiteral: - Exclude: - - 'lib/gitlab/git/repository.rb' - - 'spec/support/shared_examples/email_format_shared_examples.rb' - # Offense count: 1 Lint/ReturnInVoidContext: Exclude: - 'app/models/project.rb' -# Offense count: 1 -# Configuration parameters: IgnoreImplicitReferences. -Lint/ShadowedArgument: - Exclude: - - 'lib/gitlab/database/sha_attribute.rb' - # Offense count: 3 # Cop supports --auto-correct. Lint/UnneededRequireStatement: @@ -150,11 +138,6 @@ Naming/HeredocDelimiterCase: Naming/HeredocDelimiterNaming: Enabled: false -# Offense count: 1 -Performance/UnfreezeString: - Exclude: - - 'features/steps/project/commits/commits.rb' - # Offense count: 1 # Cop supports --auto-correct. Performance/UriDefaultParser: -- cgit v1.2.1 From 2d0839e54295bd14cfbd2e7d18f46522324670b9 Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 20 Sep 2018 22:19:45 +0500 Subject: Fix UnneededRequireStatement cop --- .rubocop_todo.yml | 8 -------- db/post_migrate/20161221153951_rename_reserved_project_names.rb | 2 -- .../20170313133418_rename_more_reserved_project_names.rb | 2 -- lib/declarative_policy.rb | 2 -- 4 files changed, 14 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a6bc4b57aab..e18fbd1fc07 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -91,14 +91,6 @@ Lint/ReturnInVoidContext: Exclude: - 'app/models/project.rb' -# Offense count: 3 -# Cop supports --auto-correct. -Lint/UnneededRequireStatement: - Exclude: - - 'db/post_migrate/20161221153951_rename_reserved_project_names.rb' - - 'db/post_migrate/20170313133418_rename_more_reserved_project_names.rb' - - 'lib/declarative_policy.rb' - # Offense count: 9 Lint/UriEscapeUnescape: Exclude: diff --git a/db/post_migrate/20161221153951_rename_reserved_project_names.rb b/db/post_migrate/20161221153951_rename_reserved_project_names.rb index 017c58477ac..08d7f499eec 100644 --- a/db/post_migrate/20161221153951_rename_reserved_project_names.rb +++ b/db/post_migrate/20161221153951_rename_reserved_project_names.rb @@ -1,5 +1,3 @@ -require 'thread' - class RenameReservedProjectNames < ActiveRecord::Migration include Gitlab::Database::MigrationHelpers include Gitlab::ShellAdapter diff --git a/db/post_migrate/20170313133418_rename_more_reserved_project_names.rb b/db/post_migrate/20170313133418_rename_more_reserved_project_names.rb index 3e8ccfdb899..43a37667250 100644 --- a/db/post_migrate/20170313133418_rename_more_reserved_project_names.rb +++ b/db/post_migrate/20170313133418_rename_more_reserved_project_names.rb @@ -1,5 +1,3 @@ -require 'thread' - class RenameMoreReservedProjectNames < ActiveRecord::Migration include Gitlab::Database::MigrationHelpers include Gitlab::ShellAdapter diff --git a/lib/declarative_policy.rb b/lib/declarative_policy.rb index dda6cd38dcd..10d34b0c6e7 100644 --- a/lib/declarative_policy.rb +++ b/lib/declarative_policy.rb @@ -10,8 +10,6 @@ require_dependency 'declarative_policy/step' require_dependency 'declarative_policy/base' -require 'thread' - module DeclarativePolicy CLASS_CACHE_MUTEX = Mutex.new CLASS_CACHE_IVAR = :@__DeclarativePolicy_CLASS_CACHE -- cgit v1.2.1 From 869d8e814e4fcc4809dada1e2b34d4993461bda5 Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Fri, 21 Sep 2018 11:55:02 +0500 Subject: Fix UriDefaultParser cop --- .rubocop_todo.yml | 5 ----- lib/gitlab/url_sanitizer.rb | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index e18fbd1fc07..a654c5bb631 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -130,11 +130,6 @@ Naming/HeredocDelimiterCase: Naming/HeredocDelimiterNaming: Enabled: false -# Offense count: 1 -# Cop supports --auto-correct. -Performance/UriDefaultParser: - Exclude: - - 'lib/gitlab/url_sanitizer.rb' # Offense count: 3821 # Configuration parameters: Prefixes. diff --git a/lib/gitlab/url_sanitizer.rb b/lib/gitlab/url_sanitizer.rb index 308a95d2f09..29672d68cad 100644 --- a/lib/gitlab/url_sanitizer.rb +++ b/lib/gitlab/url_sanitizer.rb @@ -3,7 +3,7 @@ module Gitlab ALLOWED_SCHEMES = %w[http https ssh git].freeze def self.sanitize(content) - regexp = URI::Parser.new.make_regexp(ALLOWED_SCHEMES) + regexp = URI::DEFAULT_PARSER.make_regexp(ALLOWED_SCHEMES) content.gsub(regexp) { |url| new(url).masked_url } rescue Addressable::URI::InvalidURIError -- cgit v1.2.1 From f8e74da72115bc8e9908385da9c46ae0e100e8e5 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Thu, 13 Sep 2018 14:04:43 +0100 Subject: Review changes --- .../clusters/components/gcp_signup_offer.js | 2 +- app/assets/javascripts/pages/root/index.js | 1 + app/assets/javascripts/persistent_user_callout.js | 2 + app/helpers/dashboard_helper.rb | 23 +++ app/views/explore/groups/index.html.haml | 3 + app/views/explore/projects/index.html.haml | 3 + app/views/explore/projects/starred.html.haml | 3 + app/views/explore/projects/trending.html.haml | 3 + ee/app/assets/stylesheets/pages/promotions.scss | 193 +++++++++++++++++++++ ee/app/views/shared/_gold_trial_callout.html.haml | 16 ++ 10 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/pages/root/index.js create mode 100644 ee/app/assets/stylesheets/pages/promotions.scss create mode 100644 ee/app/views/shared/_gold_trial_callout.html.haml diff --git a/app/assets/javascripts/clusters/components/gcp_signup_offer.js b/app/assets/javascripts/clusters/components/gcp_signup_offer.js index 38663bd4898..04b778c6be9 100644 --- a/app/assets/javascripts/clusters/components/gcp_signup_offer.js +++ b/app/assets/javascripts/clusters/components/gcp_signup_offer.js @@ -4,5 +4,5 @@ export default function gcpSignupOffer() { const alertEl = document.querySelector('.gcp-signup-offer'); if (!alertEl) return; - new PersistentUserCallout(alertEl).init(); + new PersistentUserCallout(alertEl); } diff --git a/app/assets/javascripts/pages/root/index.js b/app/assets/javascripts/pages/root/index.js new file mode 100644 index 00000000000..bb3e672a000 --- /dev/null +++ b/app/assets/javascripts/pages/root/index.js @@ -0,0 +1 @@ +import '../dashboard/projects/index'; diff --git a/app/assets/javascripts/persistent_user_callout.js b/app/assets/javascripts/persistent_user_callout.js index d136b3bfee9..1e34e74a152 100644 --- a/app/assets/javascripts/persistent_user_callout.js +++ b/app/assets/javascripts/persistent_user_callout.js @@ -8,6 +8,8 @@ export default class PersistentUserCallout { this.container = container; this.dismissEndpoint = dismissEndpoint; this.featureId = featureId; + + this.init(); } init() { diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 19aa55a8d49..7a0e2135b94 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -19,6 +19,29 @@ module DashboardHelper links.any? { |link| dashboard_nav_link?(link) } end + def controller_action_to_child_dashboards(controller = controller_name, action = action_name) + case "#{controller}##{action}" + when 'projects#index', 'root#index', 'projects#starred', 'projects#trending' + ['projects', 'stars'] + when 'dashboard#activity' + ['starred_project_activity', 'project_activity'] + when 'groups#index' + ['groups'] + when 'todos#index' + ['todos'] + when 'dashboard#issues' + ['issues'] + when 'dashboard#merge_requests' + ['merge_requests'] + else + [] + end + end + + def is_default_dashboard?(user = current_user) + controller_action_to_child_dashboards.any? {|dashboard| dashboard == user.dashboard } + end + private def get_dashboard_nav_links diff --git a/app/views/explore/groups/index.html.haml b/app/views/explore/groups/index.html.haml index 387c37b7a91..1d8b9c5bc8f 100644 --- a/app/views/explore/groups/index.html.haml +++ b/app/views/explore/groups/index.html.haml @@ -2,6 +2,9 @@ - page_title _("Groups") - header_title _("Groups"), dashboard_groups_path += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - if current_user = render 'dashboard/groups_head' - else diff --git a/app/views/explore/projects/index.html.haml b/app/views/explore/projects/index.html.haml index 452f390695c..16be5791f83 100644 --- a/app/views/explore/projects/index.html.haml +++ b/app/views/explore/projects/index.html.haml @@ -2,6 +2,9 @@ - page_title _("Projects") - header_title _("Projects"), dashboard_projects_path += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - if current_user = render 'dashboard/projects_head' - else diff --git a/app/views/explore/projects/starred.html.haml b/app/views/explore/projects/starred.html.haml index 452f390695c..16be5791f83 100644 --- a/app/views/explore/projects/starred.html.haml +++ b/app/views/explore/projects/starred.html.haml @@ -2,6 +2,9 @@ - page_title _("Projects") - header_title _("Projects"), dashboard_projects_path += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - if current_user = render 'dashboard/projects_head' - else diff --git a/app/views/explore/projects/trending.html.haml b/app/views/explore/projects/trending.html.haml index 452f390695c..16be5791f83 100644 --- a/app/views/explore/projects/trending.html.haml +++ b/app/views/explore/projects/trending.html.haml @@ -2,6 +2,9 @@ - page_title _("Projects") - header_title _("Projects"), dashboard_projects_path += content_for :above_breadcrumbs_content do + = render_if_exists "shared/gold_trial_callout" + - if current_user = render 'dashboard/projects_head' - else diff --git a/ee/app/assets/stylesheets/pages/promotions.scss b/ee/app/assets/stylesheets/pages/promotions.scss new file mode 100644 index 00000000000..7b04164ca1d --- /dev/null +++ b/ee/app/assets/stylesheets/pages/promotions.scss @@ -0,0 +1,193 @@ +.user-callout.promotion-callout { + margin: 20px 0 0; + + &.prepend-top-10 { + margin-top: 10px; + } + + &.append-bottom-20 { + margin-bottom: 20px; + } + + .user-callout-copy { + max-width: 700px; + margin-left: auto; + margin-right: auto; + } + + .bordered-box { + padding: 20px; + border-color: $border-color; + background-color: $white-light; + align-items: flex-start; + + .close { + .dismiss-icon { + color: $gray-darkest; + } + + &:hover { + .dismiss-icon { + color: $text-color; + } + } + } + + .svg-container { + margin-right: 15px; + } + } + + &.promotion-empty-page { + margin-top: 56px; + } + + &.promotion-advanced-search { + margin: 0; + border-bottom: solid 1px $border-color; + + h5 { + margin-top: 0; + } + + .bordered-box.content-block { + border: 0; + padding: 20px 0; + justify-content: left; + + svg { + height: auto; + } + } + + .user-callout-copy { + margin-left: 0; + } + } + + .promotion-burndown-charts-content { + justify-content: end; + + .svg-container { + margin-left: 4px; + margin-right: 24px; + } + + .user-callout-copy { + margin: 0; + } + } + + &.thin-callout { + .bordered-box { + padding: $gl-padding; + padding-left: 40px; + + .close { + position: relative; + top: 0; + right: 0; + } + } + + .svg-container .svg { + max-width: 39px; + max-height: 39px; + } + } +} + +.promotion-modal { + .modal-dialog { + width: 540px; + } + + .modal-header { + border-bottom: 0; + } + + .modal-body { + margin-top: -20px; + padding: 16px 16px 32px; + } + + .modal-footer { + border-top: 0; + } +} + +.promotion-backdrop { + background-color: $white-transparent; + position: absolute; + padding-top: 72px; + + .user-callout-copy { + max-width: 700px; + } +} + +.promotion-issue-sidebar { + .promotion-issue-sidebar-message { + padding: $gl-padding-top; + + .dropdown-title { + margin: 0 0 10px; + } + + .btn + .btn { + margin-top: $gl-padding-4; + } + } + + .btn { + padding: $gl-vert-padding $gl-btn-padding; + border-radius: $border-radius-default; + display: block; + line-height: $line-height-base; + } + + .right-sidebar & .btn-link { + display: inline; + color: $blue-600; + background-color: transparent; + padding: 0; + + &:hover { + background-color: transparent; + color: $blue-800; + } + } +} + +.promotion-issue-template-message { + padding: $gl-padding 30px 20px $gl-padding; + + p { + margin-right: 20px; + } + + .dropdown-title { + margin: 0 -25px; + padding: 0; + overflow: initial; + border-bottom: 0; + } + + .btn { + padding: $gl-vert-padding $gl-btn-padding; + border-radius: $border-radius-default; + display: inline-block; + line-height: $line-height-base; + } + + .btn-link { + display: inline; + color: $blue-600; + padding: 0; + + &:hover { + background-color: transparent; + color: $blue-800; + } + } +} diff --git a/ee/app/views/shared/_gold_trial_callout.html.haml b/ee/app/views/shared/_gold_trial_callout.html.haml new file mode 100644 index 00000000000..300ff5634c3 --- /dev/null +++ b/ee/app/views/shared/_gold_trial_callout.html.haml @@ -0,0 +1,16 @@ +- if show_gold_trial? && is_default_dashboard? + .pt-1.d-none.d-md-block{ class: container_class } + .user-callout.promotion-callout.thin-callout.js-gold-trial-callout{ data: { uid: 'trial_callout_dismissed', feature_id: UserCalloutsHelper::GOLD_TRIAL, dismiss_endpoint: user_callouts_path } } + .bordered-box.justify-content-left.align-items-center + .svg-container + = image_tag 'illustrations/golden_tanuki.svg', class: 'svg' + .d-flex.flex-grow.align-items-center + .user-callout-copy.ml-0 + %h5.mb-0.mt-0= _('Free Trial of GitLab.com Gold') + %p.mb-0 + %span= _('Try all GitLab has to offer for 30 days.') + %span.d-none.d-sm-inline= _('No credit card required.') + = link_to _('Start your trial'), 'https://customers.gitlab.com/trials/new?gl_com=true', class: 'btn btn-primary mr-5 mt-2 mt-sm-0', target: '_blank' + %button.btn.btn-default.close.js-close{ type: 'button', + 'aria-label' => _('Dismiss trial promotion') } + = icon('times', class: 'dismiss-icon', 'aria-hidden' => 'true') -- cgit v1.2.1 From 1ea69589160fbc7e7281d2a4fd6126a7a9673731 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Thu, 13 Sep 2018 14:59:38 +0100 Subject: Update user_has_namespace_with_gold? to check for any plan instead of just gold plan --- ee/app/helpers/ee/users_helper.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 ee/app/helpers/ee/users_helper.rb diff --git a/ee/app/helpers/ee/users_helper.rb b/ee/app/helpers/ee/users_helper.rb new file mode 100644 index 00000000000..2d6f6cb4a0d --- /dev/null +++ b/ee/app/helpers/ee/users_helper.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module EE + module UsersHelper + def users_sentence(users, link_class: nil) + users.map { |user| link_to(user.name, user, class: link_class) }.to_sentence.html_safe + end + + def user_namespace_union(user = current_user, select = :id) + ::Gitlab::SQL::Union.new([ + ::Namespace.select(select).where(type: nil, owner: user), + user.owned_groups.select(select).where(parent_id: nil) + ]).to_sql + end + + def user_has_namespace_with_trial?(user = current_user) + ::Namespace + .from("(#{user_namespace_union(user, :trial_ends_on)}) #{::Namespace.table_name}") + .where('trial_ends_on > ?', Time.now.utc) + .any? + end + + def user_has_namespace_with_gold?(user = current_user) + ::Namespace + .includes(:plan) + .where("namespaces.id IN (#{user_namespace_union(user)})") # rubocop:disable GitlabSecurity/SqlInjection + .where.not(plans: { id: nil }) + .any? + end + end +end -- cgit v1.2.1 From 76bc9eefbbbfd697e6ae1c6bef35524e2eca5783 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Thu, 13 Sep 2018 15:18:59 +0100 Subject: Fix dismissable_callout import --- app/assets/javascripts/dismissable_callout.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/assets/javascripts/dismissable_callout.js diff --git a/app/assets/javascripts/dismissable_callout.js b/app/assets/javascripts/dismissable_callout.js new file mode 100644 index 00000000000..94f456bb3fc --- /dev/null +++ b/app/assets/javascripts/dismissable_callout.js @@ -0,0 +1,10 @@ +import PersistentUserCallout from './persistent_user_callout'; + +export default function initDismissableCallout(alertSelector) { + const alertEl = document.querySelector(alertSelector); + if (!alertEl) { + return; + } + + new PersistentUserCallout(alertEl); // eslint-disable-line no-new +} -- cgit v1.2.1 From 8c4399e530e8560321ab805bce426c99fb104d84 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Thu, 13 Sep 2018 16:01:33 +0100 Subject: Lint --- app/helpers/dashboard_helper.rb | 12 ++++++------ app/models/user_callout.rb | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 7a0e2135b94..267ccbd8c5d 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -22,17 +22,17 @@ module DashboardHelper def controller_action_to_child_dashboards(controller = controller_name, action = action_name) case "#{controller}##{action}" when 'projects#index', 'root#index', 'projects#starred', 'projects#trending' - ['projects', 'stars'] + %w(projects, 'stars) when 'dashboard#activity' - ['starred_project_activity', 'project_activity'] + %w(starred_project_activity, 'project_activity) when 'groups#index' - ['groups'] + %w(groups) when 'todos#index' - ['todos'] + %w(todos) when 'dashboard#issues' - ['issues'] + %w(issues) when 'dashboard#merge_requests' - ['merge_requests'] + %w(merge_requests) else [] end diff --git a/app/models/user_callout.rb b/app/models/user_callout.rb index 15a2155b0c5..2c0e8659fc1 100644 --- a/app/models/user_callout.rb +++ b/app/models/user_callout.rb @@ -6,7 +6,8 @@ class UserCallout < ActiveRecord::Base enum feature_name: { gke_cluster_integration: 1, gcp_signup_offer: 2, - gold_trial: 3 + cluster_security_warning: 3, + gold_trial: 4 } validates :user, presence: true -- cgit v1.2.1 From aee0abc893f82adba40a432d25e6441b1641ea18 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Fri, 14 Sep 2018 02:31:29 +0100 Subject: Use initDismissableCallout for trial callout --- ee/app/assets/javascripts/pages/dashboard/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ee/app/assets/javascripts/pages/dashboard/index.js diff --git a/ee/app/assets/javascripts/pages/dashboard/index.js b/ee/app/assets/javascripts/pages/dashboard/index.js new file mode 100644 index 00000000000..46ef461fcf7 --- /dev/null +++ b/ee/app/assets/javascripts/pages/dashboard/index.js @@ -0,0 +1,3 @@ +import initDismissableCallout from '~/dismissable_callout'; + +document.addEventListener('DOMContentLoaded', () => initDismissableCallout('.js-gold-trial-callout')); -- cgit v1.2.1 From 2ab3e57cc98cc48c921b2c7c529acc1c75063b3a Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Fri, 14 Sep 2018 02:35:01 +0100 Subject: Update clusters/_banner --- app/views/projects/clusters/_banner.html.haml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/projects/clusters/_banner.html.haml b/app/views/projects/clusters/_banner.html.haml index f18caa3f4ac..84362580a90 100644 --- a/app/views/projects/clusters/_banner.html.haml +++ b/app/views/projects/clusters/_banner.html.haml @@ -8,7 +8,8 @@ .hidden.js-cluster-creating.alert.alert-info.alert-block.append-bottom-10{ role: 'alert' } = s_('ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine...') - .hidden.js-cluster-success.alert.alert-success.alert-block.append-bottom-10{ role: 'alert' } - = s_("ClusterIntegration|Kubernetes cluster was successfully created on Google Kubernetes Engine. Refresh the page to see Kubernetes cluster's details") - - %p= s_('ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab') +- if show_cluster_security_warning? + .js-cluster-security-warning.alert.alert-block.alert-dismissable.bs-callout.bs-callout-warning + %button.close.js-close{ type: "button", data: { feature_id: UserCalloutsHelper::CLUSTER_SECURITY_WARNING, dismiss_endpoint: user_callouts_path } } × + = s_("ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application.") + = link_to s_("More information"), help_page_path('user/project/clusters/index.md', anchor: 'security-implications') -- cgit v1.2.1 From c58a4ea81e6969594050bc7c0d6b548fd7112e16 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Fri, 14 Sep 2018 03:09:32 +0100 Subject: Lint --- app/helpers/dashboard_helper.rb | 6 +++--- ee/app/views/shared/_gold_trial_callout.html.haml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 267ccbd8c5d..31551fba862 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -22,9 +22,9 @@ module DashboardHelper def controller_action_to_child_dashboards(controller = controller_name, action = action_name) case "#{controller}##{action}" when 'projects#index', 'root#index', 'projects#starred', 'projects#trending' - %w(projects, 'stars) + %w(projects stars) when 'dashboard#activity' - %w(starred_project_activity, 'project_activity) + %w(starred_project_activity project_activity) when 'groups#index' %w(groups) when 'todos#index' @@ -38,7 +38,7 @@ module DashboardHelper end end - def is_default_dashboard?(user = current_user) + def user_default_dashboard?(user = current_user) controller_action_to_child_dashboards.any? {|dashboard| dashboard == user.dashboard } end diff --git a/ee/app/views/shared/_gold_trial_callout.html.haml b/ee/app/views/shared/_gold_trial_callout.html.haml index 300ff5634c3..d8e1adaf796 100644 --- a/ee/app/views/shared/_gold_trial_callout.html.haml +++ b/ee/app/views/shared/_gold_trial_callout.html.haml @@ -1,4 +1,4 @@ -- if show_gold_trial? && is_default_dashboard? +- if show_gold_trial? && user_default_dashboard? .pt-1.d-none.d-md-block{ class: container_class } .user-callout.promotion-callout.thin-callout.js-gold-trial-callout{ data: { uid: 'trial_callout_dismissed', feature_id: UserCalloutsHelper::GOLD_TRIAL, dismiss_endpoint: user_callouts_path } } .bordered-box.justify-content-left.align-items-center -- cgit v1.2.1 From 086549d986a453e1b2dd0d09ffbd19d0487d9c51 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Mon, 24 Sep 2018 12:03:06 +0100 Subject: fix cherry picking --- db/schema.rb | 11 +- ee/app/assets/javascripts/pages/dashboard/index.js | 3 - ee/app/assets/stylesheets/pages/promotions.scss | 193 --------------------- ee/app/helpers/ee/users_helper.rb | 31 ---- ee/app/views/shared/_gold_trial_callout.html.haml | 16 -- 5 files changed, 6 insertions(+), 248 deletions(-) delete mode 100644 ee/app/assets/javascripts/pages/dashboard/index.js delete mode 100644 ee/app/assets/stylesheets/pages/promotions.scss delete mode 100644 ee/app/helpers/ee/users_helper.rb delete mode 100644 ee/app/views/shared/_gold_trial_callout.html.haml diff --git a/db/schema.rb b/db/schema.rb index eb91fbaecee..4631d31297f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -164,11 +164,12 @@ ActiveRecord::Schema.define(version: 20180826111825) do t.boolean "authorized_keys_enabled", default: true, null: false t.string "auto_devops_domain" t.boolean "pages_domain_verification_enabled", default: true, null: false + t.string "user_default_internal_regex" t.boolean "allow_local_requests_from_hooks_and_services", default: false, null: false t.boolean "enforce_terms", default: false t.boolean "mirror_available", default: true, null: false t.boolean "hide_third_party_offers", default: false, null: false - t.boolean "instance_statistics_visibility_private", default: true, null: false + t.boolean "instance_statistics_visibility_private", default: false, null: false t.boolean "web_ide_clientside_preview_enabled", default: false, null: false t.boolean "user_show_add_ssh_key_message", default: true, null: false t.string "user_default_internal_regex" @@ -330,10 +331,10 @@ ActiveRecord::Schema.define(version: 20180826111825) do t.integer "auto_canceled_by_id" t.boolean "retried" t.integer "stage_id" - t.boolean "protected" - t.integer "failure_reason" t.integer "artifacts_file_store" t.integer "artifacts_metadata_store" + t.boolean "protected" + t.integer "failure_reason" end add_index "ci_builds", ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)", using: :btree @@ -390,13 +391,13 @@ ActiveRecord::Schema.define(version: 20180826111825) do t.integer "project_id", null: false t.integer "job_id", null: false t.integer "file_type", null: false + t.integer "file_store" t.integer "size", limit: 8 t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.datetime_with_timezone "expire_at" t.string "file" t.binary "file_sha256" - t.integer "file_store" t.integer "file_format", limit: 2 t.integer "file_location", limit: 2 end @@ -2401,7 +2402,7 @@ ActiveRecord::Schema.define(version: 20180826111825) do add_foreign_key "term_agreements", "users", on_delete: :cascade add_foreign_key "timelogs", "issues", name: "fk_timelogs_issues_issue_id", on_delete: :cascade add_foreign_key "timelogs", "merge_requests", name: "fk_timelogs_merge_requests_merge_request_id", on_delete: :cascade - add_foreign_key "todos", "namespaces", column: "group_id", name: "fk_a27c483435", on_delete: :cascade + add_foreign_key "todos", "namespaces", column: "group_id", on_delete: :cascade add_foreign_key "todos", "notes", name: "fk_91d1f47b13", on_delete: :cascade add_foreign_key "todos", "projects", name: "fk_45054f9c45", on_delete: :cascade add_foreign_key "todos", "users", column: "author_id", name: "fk_ccf0373936", on_delete: :cascade diff --git a/ee/app/assets/javascripts/pages/dashboard/index.js b/ee/app/assets/javascripts/pages/dashboard/index.js deleted file mode 100644 index 46ef461fcf7..00000000000 --- a/ee/app/assets/javascripts/pages/dashboard/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import initDismissableCallout from '~/dismissable_callout'; - -document.addEventListener('DOMContentLoaded', () => initDismissableCallout('.js-gold-trial-callout')); diff --git a/ee/app/assets/stylesheets/pages/promotions.scss b/ee/app/assets/stylesheets/pages/promotions.scss deleted file mode 100644 index 7b04164ca1d..00000000000 --- a/ee/app/assets/stylesheets/pages/promotions.scss +++ /dev/null @@ -1,193 +0,0 @@ -.user-callout.promotion-callout { - margin: 20px 0 0; - - &.prepend-top-10 { - margin-top: 10px; - } - - &.append-bottom-20 { - margin-bottom: 20px; - } - - .user-callout-copy { - max-width: 700px; - margin-left: auto; - margin-right: auto; - } - - .bordered-box { - padding: 20px; - border-color: $border-color; - background-color: $white-light; - align-items: flex-start; - - .close { - .dismiss-icon { - color: $gray-darkest; - } - - &:hover { - .dismiss-icon { - color: $text-color; - } - } - } - - .svg-container { - margin-right: 15px; - } - } - - &.promotion-empty-page { - margin-top: 56px; - } - - &.promotion-advanced-search { - margin: 0; - border-bottom: solid 1px $border-color; - - h5 { - margin-top: 0; - } - - .bordered-box.content-block { - border: 0; - padding: 20px 0; - justify-content: left; - - svg { - height: auto; - } - } - - .user-callout-copy { - margin-left: 0; - } - } - - .promotion-burndown-charts-content { - justify-content: end; - - .svg-container { - margin-left: 4px; - margin-right: 24px; - } - - .user-callout-copy { - margin: 0; - } - } - - &.thin-callout { - .bordered-box { - padding: $gl-padding; - padding-left: 40px; - - .close { - position: relative; - top: 0; - right: 0; - } - } - - .svg-container .svg { - max-width: 39px; - max-height: 39px; - } - } -} - -.promotion-modal { - .modal-dialog { - width: 540px; - } - - .modal-header { - border-bottom: 0; - } - - .modal-body { - margin-top: -20px; - padding: 16px 16px 32px; - } - - .modal-footer { - border-top: 0; - } -} - -.promotion-backdrop { - background-color: $white-transparent; - position: absolute; - padding-top: 72px; - - .user-callout-copy { - max-width: 700px; - } -} - -.promotion-issue-sidebar { - .promotion-issue-sidebar-message { - padding: $gl-padding-top; - - .dropdown-title { - margin: 0 0 10px; - } - - .btn + .btn { - margin-top: $gl-padding-4; - } - } - - .btn { - padding: $gl-vert-padding $gl-btn-padding; - border-radius: $border-radius-default; - display: block; - line-height: $line-height-base; - } - - .right-sidebar & .btn-link { - display: inline; - color: $blue-600; - background-color: transparent; - padding: 0; - - &:hover { - background-color: transparent; - color: $blue-800; - } - } -} - -.promotion-issue-template-message { - padding: $gl-padding 30px 20px $gl-padding; - - p { - margin-right: 20px; - } - - .dropdown-title { - margin: 0 -25px; - padding: 0; - overflow: initial; - border-bottom: 0; - } - - .btn { - padding: $gl-vert-padding $gl-btn-padding; - border-radius: $border-radius-default; - display: inline-block; - line-height: $line-height-base; - } - - .btn-link { - display: inline; - color: $blue-600; - padding: 0; - - &:hover { - background-color: transparent; - color: $blue-800; - } - } -} diff --git a/ee/app/helpers/ee/users_helper.rb b/ee/app/helpers/ee/users_helper.rb deleted file mode 100644 index 2d6f6cb4a0d..00000000000 --- a/ee/app/helpers/ee/users_helper.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -module EE - module UsersHelper - def users_sentence(users, link_class: nil) - users.map { |user| link_to(user.name, user, class: link_class) }.to_sentence.html_safe - end - - def user_namespace_union(user = current_user, select = :id) - ::Gitlab::SQL::Union.new([ - ::Namespace.select(select).where(type: nil, owner: user), - user.owned_groups.select(select).where(parent_id: nil) - ]).to_sql - end - - def user_has_namespace_with_trial?(user = current_user) - ::Namespace - .from("(#{user_namespace_union(user, :trial_ends_on)}) #{::Namespace.table_name}") - .where('trial_ends_on > ?', Time.now.utc) - .any? - end - - def user_has_namespace_with_gold?(user = current_user) - ::Namespace - .includes(:plan) - .where("namespaces.id IN (#{user_namespace_union(user)})") # rubocop:disable GitlabSecurity/SqlInjection - .where.not(plans: { id: nil }) - .any? - end - end -end diff --git a/ee/app/views/shared/_gold_trial_callout.html.haml b/ee/app/views/shared/_gold_trial_callout.html.haml deleted file mode 100644 index d8e1adaf796..00000000000 --- a/ee/app/views/shared/_gold_trial_callout.html.haml +++ /dev/null @@ -1,16 +0,0 @@ -- if show_gold_trial? && user_default_dashboard? - .pt-1.d-none.d-md-block{ class: container_class } - .user-callout.promotion-callout.thin-callout.js-gold-trial-callout{ data: { uid: 'trial_callout_dismissed', feature_id: UserCalloutsHelper::GOLD_TRIAL, dismiss_endpoint: user_callouts_path } } - .bordered-box.justify-content-left.align-items-center - .svg-container - = image_tag 'illustrations/golden_tanuki.svg', class: 'svg' - .d-flex.flex-grow.align-items-center - .user-callout-copy.ml-0 - %h5.mb-0.mt-0= _('Free Trial of GitLab.com Gold') - %p.mb-0 - %span= _('Try all GitLab has to offer for 30 days.') - %span.d-none.d-sm-inline= _('No credit card required.') - = link_to _('Start your trial'), 'https://customers.gitlab.com/trials/new?gl_com=true', class: 'btn btn-primary mr-5 mt-2 mt-sm-0', target: '_blank' - %button.btn.btn-default.close.js-close{ type: 'button', - 'aria-label' => _('Dismiss trial promotion') } - = icon('times', class: 'dismiss-icon', 'aria-hidden' => 'true') -- cgit v1.2.1 From ba2ad0f0458d0793b3367a429dd9054ba2d137c8 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Mon, 24 Sep 2018 14:59:30 +0100 Subject: fix persistent_user_callout import --- app/assets/javascripts/dismissable_callout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/dismissable_callout.js b/app/assets/javascripts/dismissable_callout.js index 27a3742f667..8dcd8e9a47e 100644 --- a/app/assets/javascripts/dismissable_callout.js +++ b/app/assets/javascripts/dismissable_callout.js @@ -1,4 +1,4 @@ -import PersistentUserCallout from '../../persistent_user_callout'; +import PersistentUserCallout from '.persistent_user_callout'; export default function initDismissableCallout(alertSelector) { const alertEl = document.querySelector(alertSelector); -- cgit v1.2.1 From 9f5a7e2d612ed49c97d19a71a78d2dfe88fcc312 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Tue, 25 Sep 2018 15:17:34 +0000 Subject: Update dismissable_callout.js to correct missing import path slash --- app/assets/javascripts/dismissable_callout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/dismissable_callout.js b/app/assets/javascripts/dismissable_callout.js index 8dcd8e9a47e..30430e93e8b 100644 --- a/app/assets/javascripts/dismissable_callout.js +++ b/app/assets/javascripts/dismissable_callout.js @@ -1,4 +1,4 @@ -import PersistentUserCallout from '.persistent_user_callout'; +import PersistentUserCallout from './persistent_user_callout'; export default function initDismissableCallout(alertSelector) { const alertEl = document.querySelector(alertSelector); -- cgit v1.2.1 From 45613341689c81789d3da44f23a46135249969e3 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Tue, 25 Sep 2018 17:24:05 +0100 Subject: Remove dismissable_callout as it has become an unneeded wrapper for persistent_user_callout --- app/assets/javascripts/clusters/clusters_bundle.js | 10 ++++++++-- app/assets/javascripts/clusters/clusters_index.js | 5 +++-- app/assets/javascripts/dismissable_callout.js | 10 ---------- app/assets/javascripts/pages/projects/index.js | 6 ++++-- 4 files changed, 15 insertions(+), 16 deletions(-) delete mode 100644 app/assets/javascripts/dismissable_callout.js diff --git a/app/assets/javascripts/clusters/clusters_bundle.js b/app/assets/javascripts/clusters/clusters_bundle.js index ebf76af5966..65e7cee7039 100644 --- a/app/assets/javascripts/clusters/clusters_bundle.js +++ b/app/assets/javascripts/clusters/clusters_bundle.js @@ -1,6 +1,6 @@ import Visibility from 'visibilityjs'; import Vue from 'vue'; -import initDismissableCallout from '~/dismissable_callout'; +import PersistentUserCallout from '../persistent_user_callout'; import { s__, sprintf } from '../locale'; import Flash from '../flash'; import Poll from '../lib/utils/poll'; @@ -62,7 +62,7 @@ export default class Clusters { this.showTokenButton = document.querySelector('.js-show-cluster-token'); this.tokenField = document.querySelector('.js-cluster-token'); - initDismissableCallout('.js-cluster-security-warning'); + Clusters.initDismissableCallout(); initSettingsPanels(); setupToggleButtons(document.querySelector('.js-cluster-enable-toggle-area')); this.initApplications(); @@ -105,6 +105,12 @@ export default class Clusters { }); } + static initDismissableCallout() { + const callout = document.querySelector('.js-cluster-security-warning'); + + if (callout) new PersistentUserCallout(callout); // eslint-disable-line no-new + } + addListeners() { if (this.showTokenButton) this.showTokenButton.addEventListener('click', this.showToken); eventHub.$on('installApplication', this.installApplication); diff --git a/app/assets/javascripts/clusters/clusters_index.js b/app/assets/javascripts/clusters/clusters_index.js index 789c8360124..e32d507d1f7 100644 --- a/app/assets/javascripts/clusters/clusters_index.js +++ b/app/assets/javascripts/clusters/clusters_index.js @@ -1,14 +1,15 @@ import createFlash from '~/flash'; import { __ } from '~/locale'; import setupToggleButtons from '~/toggle_buttons'; -import initDismissableCallout from '~/dismissable_callout'; +import PersistentUserCallout from '../persistent_user_callout'; import ClustersService from './services/clusters_service'; export default () => { const clusterList = document.querySelector('.js-clusters-list'); - initDismissableCallout('.gcp-signup-offer'); + const callout = document.querySelector('.gcp-signup-offer'); + if (callout) new PersistentUserCallout(callout); // eslint-disable-line no-new // The empty state won't have a clusterList if (clusterList) { diff --git a/app/assets/javascripts/dismissable_callout.js b/app/assets/javascripts/dismissable_callout.js deleted file mode 100644 index 8dcd8e9a47e..00000000000 --- a/app/assets/javascripts/dismissable_callout.js +++ /dev/null @@ -1,10 +0,0 @@ -import PersistentUserCallout from '.persistent_user_callout'; - -export default function initDismissableCallout(alertSelector) { - const alertEl = document.querySelector(alertSelector); - if (!alertEl) { - return; - } - - new PersistentUserCallout(alertEl); -} diff --git a/app/assets/javascripts/pages/projects/index.js b/app/assets/javascripts/pages/projects/index.js index 5659e13981a..b0345b4e50d 100644 --- a/app/assets/javascripts/pages/projects/index.js +++ b/app/assets/javascripts/pages/projects/index.js @@ -1,5 +1,5 @@ -import initDismissableCallout from '~/dismissable_callout'; import initGkeDropdowns from '~/projects/gke_cluster_dropdowns'; +import PersistentUserCallout from '../../persistent_user_callout'; import Project from './project'; import ShortcutsNavigation from '../../behaviors/shortcuts/shortcuts_navigation'; @@ -12,7 +12,9 @@ document.addEventListener('DOMContentLoaded', () => { ]; if (newClusterViews.indexOf(page) > -1) { - initDismissableCallout('.gcp-signup-offer'); + const callout = document.querySelector('.gcp-signup-offer'); + if (callout) new PersistentUserCallout(callout); // eslint-disable-line no-new + initGkeDropdowns(); } -- cgit v1.2.1 From 4392ad80d4c72dcd52cf381a32c428656d2aaa77 Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Thu, 27 Sep 2018 15:52:30 +1200 Subject: Port EE::Clusters::ApplicationStatus to CE Cluster applications in CE will need access to the same status values for updating --- app/models/clusters/concerns/application_status.rb | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/models/clusters/concerns/application_status.rb b/app/models/clusters/concerns/application_status.rb index d4d3859dfd5..a9df59fc059 100644 --- a/app/models/clusters/concerns/application_status.rb +++ b/app/models/clusters/concerns/application_status.rb @@ -15,6 +15,9 @@ module Clusters state :scheduled, value: 1 state :installing, value: 2 state :installed, value: 3 + state :updating, value: 4 + state :updated, value: 5 + state :update_errored, value: 6 event :make_scheduled do transition [:installable, :errored] => :scheduled @@ -32,6 +35,18 @@ module Clusters transition any => :errored end + event :make_updating do + transition [:installed, :updated, :update_errored] => :updating + end + + event :make_updated do + transition [:updating] => :updated + end + + event :make_update_errored do + transition any => :update_errored + end + before_transition any => [:scheduled] do |app_status, _| app_status.status_reason = nil end @@ -40,6 +55,15 @@ module Clusters status_reason = transition.args.first app_status.status_reason = status_reason if status_reason end + + before_transition any => [:updating] do |app_status, _| + app_status.status_reason = nil + end + + before_transition any => [:update_errored] do |app_status, transition| + status_reason = transition.args.first + app_status.status_reason = status_reason if status_reason + end end end end -- cgit v1.2.1 From e6fd3f1986b4588bfa94d57dbf2b3b1bd5948b8a Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Thu, 27 Sep 2018 16:00:59 +1200 Subject: Port UpgradeCommand to CE This is a utility class that we will need in the future to update and upgrade our managed helm applications, which we do plan to do in CE. --- lib/gitlab/kubernetes/helm/upgrade_command.rb | 71 +++++++++++ .../gitlab/kubernetes/helm/upgrade_command_spec.rb | 136 +++++++++++++++++++++ 2 files changed, 207 insertions(+) create mode 100644 lib/gitlab/kubernetes/helm/upgrade_command.rb create mode 100644 spec/lib/gitlab/kubernetes/helm/upgrade_command_spec.rb diff --git a/lib/gitlab/kubernetes/helm/upgrade_command.rb b/lib/gitlab/kubernetes/helm/upgrade_command.rb new file mode 100644 index 00000000000..74188046739 --- /dev/null +++ b/lib/gitlab/kubernetes/helm/upgrade_command.rb @@ -0,0 +1,71 @@ +# frozen_string_literal: true + +module Gitlab + module Kubernetes + module Helm + class UpgradeCommand + include BaseCommand + + attr_reader :name, :chart, :version, :repository, :files + + def initialize(name, chart:, files:, rbac:, version: nil, repository: nil) + @name = name + @chart = chart + @rbac = rbac + @version = version + @files = files + @repository = repository + end + + def generate_script + super + [ + init_command, + repository_command, + script_command + ].compact.join("\n") + end + + def rbac? + @rbac + end + + def pod_name + "upgrade-#{name}" + end + + private + + def init_command + 'helm init --client-only >/dev/null' + end + + def repository_command + "helm repo add #{name} #{repository}" if repository + end + + def script_command + upgrade_flags = "#{optional_version_flag}#{optional_tls_flags}" \ + " --reset-values" \ + " --install" \ + " --namespace #{::Gitlab::Kubernetes::Helm::NAMESPACE}" \ + " -f /data/helm/#{name}/config/values.yaml" + + "helm upgrade #{name} #{chart}#{upgrade_flags} >/dev/null\n" + end + + def optional_version_flag + " --version #{version}" if version + end + + def optional_tls_flags + return unless files.key?(:'ca.pem') + + " --tls" \ + " --tls-ca-cert #{files_dir}/ca.pem" \ + " --tls-cert #{files_dir}/cert.pem" \ + " --tls-key #{files_dir}/key.pem" + end + end + end + end +end diff --git a/spec/lib/gitlab/kubernetes/helm/upgrade_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/upgrade_command_spec.rb new file mode 100644 index 00000000000..3dabf04413e --- /dev/null +++ b/spec/lib/gitlab/kubernetes/helm/upgrade_command_spec.rb @@ -0,0 +1,136 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Gitlab::Kubernetes::Helm::UpgradeCommand do + let(:application) { build(:clusters_applications_prometheus) } + let(:files) { { 'ca.pem': 'some file content' } } + let(:namespace) { ::Gitlab::Kubernetes::Helm::NAMESPACE } + let(:rbac) { false } + let(:upgrade_command) do + described_class.new( + application.name, + chart: application.chart, + files: files, + rbac: rbac + ) + end + + subject { upgrade_command } + + it_behaves_like 'helm commands' do + let(:commands) do + <<~EOS + helm init --client-only >/dev/null + helm upgrade #{application.name} #{application.chart} --tls --tls-ca-cert /data/helm/#{application.name}/config/ca.pem --tls-cert /data/helm/#{application.name}/config/cert.pem --tls-key /data/helm/#{application.name}/config/key.pem --reset-values --install --namespace #{namespace} -f /data/helm/#{application.name}/config/values.yaml >/dev/null + EOS + end + end + + context 'rbac is true' do + let(:rbac) { true } + + it_behaves_like 'helm commands' do + let(:commands) do + <<~EOS + helm init --client-only >/dev/null + helm upgrade #{application.name} #{application.chart} --tls --tls-ca-cert /data/helm/#{application.name}/config/ca.pem --tls-cert /data/helm/#{application.name}/config/cert.pem --tls-key /data/helm/#{application.name}/config/key.pem --reset-values --install --namespace #{namespace} -f /data/helm/#{application.name}/config/values.yaml >/dev/null + EOS + end + end + end + + context 'with an application with a repository' do + let(:ci_runner) { create(:ci_runner) } + let(:application) { build(:clusters_applications_runner, runner: ci_runner) } + let(:upgrade_command) do + described_class.new( + application.name, + chart: application.chart, + files: files, + rbac: rbac, + repository: application.repository + ) + end + + it_behaves_like 'helm commands' do + let(:commands) do + <<~EOS + helm init --client-only >/dev/null + helm repo add #{application.name} #{application.repository} + helm upgrade #{application.name} #{application.chart} --tls --tls-ca-cert /data/helm/#{application.name}/config/ca.pem --tls-cert /data/helm/#{application.name}/config/cert.pem --tls-key /data/helm/#{application.name}/config/key.pem --reset-values --install --namespace #{namespace} -f /data/helm/#{application.name}/config/values.yaml >/dev/null + EOS + end + end + end + + context 'when there is no ca.pem file' do + let(:files) { { 'file.txt': 'some content' } } + + it_behaves_like 'helm commands' do + let(:commands) do + <<~EOS + helm init --client-only >/dev/null + helm upgrade #{application.name} #{application.chart} --reset-values --install --namespace #{namespace} -f /data/helm/#{application.name}/config/values.yaml >/dev/null + EOS + end + end + end + + describe '#pod_resource' do + subject { upgrade_command.pod_resource } + + context 'rbac is enabled' do + let(:rbac) { true } + + it 'generates a pod that uses the tiller serviceAccountName' do + expect(subject.spec.serviceAccountName).to eq('tiller') + end + end + + context 'rbac is not enabled' do + let(:rbac) { false } + + it 'generates a pod that uses the default serviceAccountName' do + expect(subject.spec.serviceAcccountName).to be_nil + end + end + end + + describe '#config_map_resource' do + let(:metadata) do + { + name: "values-content-configuration-#{application.name}", + namespace: namespace, + labels: { name: "values-content-configuration-#{application.name}" } + } + end + let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: files) } + + it 'returns a KubeClient resource with config map content for the application' do + expect(subject.config_map_resource).to eq(resource) + end + end + + describe '#rbac?' do + subject { upgrade_command.rbac? } + + context 'rbac is enabled' do + let(:rbac) { true } + + it { is_expected.to be_truthy } + end + + context 'rbac is not enabled' do + let(:rbac) { false } + + it { is_expected.to be_falsey } + end + end + + describe '#pod_name' do + it 'returns the pod name' do + expect(subject.pod_name).to eq("upgrade-#{application.name}") + end + end +end -- cgit v1.2.1 From f03eb2332682c9419103df905045bf33f04a5158 Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Thu, 27 Sep 2018 18:15:39 +1200 Subject: Port helm application status spec factory to CE --- spec/factories/clusters/applications/helm.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spec/factories/clusters/applications/helm.rb b/spec/factories/clusters/applications/helm.rb index c13b0249d94..5756486df27 100644 --- a/spec/factories/clusters/applications/helm.rb +++ b/spec/factories/clusters/applications/helm.rb @@ -22,11 +22,24 @@ FactoryBot.define do status 3 end + trait :updating do + status 4 + end + + trait :updated do + status 5 + end + trait :errored do status(-1) status_reason 'something went wrong' end + trait :update_errored do + status(6) + status_reason 'something went wrong' + end + trait :timeouted do installing updated_at ClusterWaitForAppInstallationWorker::TIMEOUT.ago -- cgit v1.2.1 From 0cb0f3c12597ba38f08d4cf9e38e3668d28ea544 Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Thu, 27 Sep 2018 21:36:55 +1200 Subject: Process $DB_INITIALIZE and $DB_MIGRATE variables if $DB_INITIALIZE is present, deploy an initial release where only $DB_INITIALIZE is run in a special job (and deployments are not rendered/loaded). This is then followed by second release with deployments as usual. if $DB_MIGRATE, set this value which will trigger a pre-upgrade helm hook. --- .../unreleased/48004-db-initialize-migrate.yml | 5 ++ lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml | 73 ++++++++++++++++------ 2 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 changelogs/unreleased/48004-db-initialize-migrate.yml diff --git a/changelogs/unreleased/48004-db-initialize-migrate.yml b/changelogs/unreleased/48004-db-initialize-migrate.yml new file mode 100644 index 00000000000..0d691babeca --- /dev/null +++ b/changelogs/unreleased/48004-db-initialize-migrate.yml @@ -0,0 +1,5 @@ +--- +title: Support db migration and initialization for Auto DevOps +merge_request: 21955 +author: +type: added diff --git a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml index e3a2534e97a..727405c7acf 100644 --- a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @@ -587,26 +587,59 @@ rollout 100%: secret_name='' fi - helm upgrade --install \ - --wait \ - --set service.enabled="$service_enabled" \ - --set releaseOverride="$CI_ENVIRONMENT_SLUG" \ - --set image.repository="$CI_APPLICATION_REPOSITORY" \ - --set image.tag="$CI_APPLICATION_TAG" \ - --set image.pullPolicy=IfNotPresent \ - --set image.secrets[0].name="$secret_name" \ - --set application.track="$track" \ - --set application.database_url="$DATABASE_URL" \ - --set service.url="$CI_ENVIRONMENT_URL" \ - --set replicaCount="$replicas" \ - --set postgresql.enabled="$postgres_enabled" \ - --set postgresql.nameOverride="postgres" \ - --set postgresql.postgresUser="$POSTGRES_USER" \ - --set postgresql.postgresPassword="$POSTGRES_PASSWORD" \ - --set postgresql.postgresDatabase="$POSTGRES_DB" \ - --namespace="$KUBE_NAMESPACE" \ - "$name" \ - chart/ + if [[ -n "$DB_INITIALIZE" && -z "$(helm ls -q "^$name$")" ]]; then + helm upgrade --install \ + --wait \ + --set service.enabled="$service_enabled" \ + --set releaseOverride="$CI_ENVIRONMENT_SLUG" \ + --set image.repository="$CI_APPLICATION_REPOSITORY" \ + --set image.tag="$CI_APPLICATION_TAG" \ + --set image.pullPolicy=IfNotPresent \ + --set image.secrets[0].name="$secret_name" \ + --set application.track="$track" \ + --set application.database_url="$DATABASE_URL" \ + --set service.url="$CI_ENVIRONMENT_URL" \ + --set replicaCount="$replicas" \ + --set postgresql.enabled="$postgres_enabled" \ + --set postgresql.nameOverride="postgres" \ + --set postgresql.postgresUser="$POSTGRES_USER" \ + --set postgresql.postgresPassword="$POSTGRES_PASSWORD" \ + --set postgresql.postgresDatabase="$POSTGRES_DB" \ + --set application.initializeCommand="$DB_INITIALIZE" \ + --namespace="$KUBE_NAMESPACE" \ + "$name" \ + chart/ + + helm upgrade --reuse-values \ + --wait \ + --set application.initializeCommand="" \ + --set application.migrateCommand="$DB_MIGRATE" \ + --namespace="$KUBE_NAMESPACE" \ + "$name" \ + chart/ + else + helm upgrade --install \ + --wait \ + --set service.enabled="$service_enabled" \ + --set releaseOverride="$CI_ENVIRONMENT_SLUG" \ + --set image.repository="$CI_APPLICATION_REPOSITORY" \ + --set image.tag="$CI_APPLICATION_TAG" \ + --set image.pullPolicy=IfNotPresent \ + --set image.secrets[0].name="$secret_name" \ + --set application.track="$track" \ + --set application.database_url="$DATABASE_URL" \ + --set service.url="$CI_ENVIRONMENT_URL" \ + --set replicaCount="$replicas" \ + --set postgresql.enabled="$postgres_enabled" \ + --set postgresql.nameOverride="postgres" \ + --set postgresql.postgresUser="$POSTGRES_USER" \ + --set postgresql.postgresPassword="$POSTGRES_PASSWORD" \ + --set postgresql.postgresDatabase="$POSTGRES_DB" \ + --set application.migrateCommand="$DB_MIGRATE" \ + --namespace="$KUBE_NAMESPACE" \ + "$name" \ + chart/ + fi kubectl rollout status -n "$KUBE_NAMESPACE" -w "deployment/$name" } -- cgit v1.2.1 From 3c2d6b4870afa9cae25007a2ccf90ebf92c37d42 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Fri, 28 Sep 2018 11:00:30 +0200 Subject: Add a class that represents a git push operation --- app/services/merge_requests/base_service.rb | 6 +++--- lib/gitlab/git/push.rb | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 lib/gitlab/git/push.rb diff --git a/app/services/merge_requests/base_service.rb b/app/services/merge_requests/base_service.rb index aa5d8406d0f..28c3219b37b 100644 --- a/app/services/merge_requests/base_service.rb +++ b/app/services/merge_requests/base_service.rb @@ -57,10 +57,10 @@ module MergeRequests # Returns all origin and fork merge requests from `@project` satisfying passed arguments. # rubocop: disable CodeReuse/ActiveRecord def merge_requests_for(source_branch, mr_states: [:opened]) - MergeRequest + @project.source_of_merge_requests .with_state(mr_states) - .where(source_branch: source_branch, source_project_id: @project.id) - .preload(:source_project) # we don't need a #includes since we're just preloading for the #select + .where(source_branch: source_branch) + .preload(:source_project) # we don't need #includes since we're just preloading for the #select .select(&:source_project) end # rubocop: enable CodeReuse/ActiveRecord diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb new file mode 100644 index 00000000000..d4fe3c623c1 --- /dev/null +++ b/lib/gitlab/git/push.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Gitlab + module Git + class Push + def initialize(project, oldrev, newrev, ref) + @project, @oldrev, @newrev = project, oldrev, newrev + @repository = project.repository + @branch_name = Gitlab::Git.ref_name(ref) + end + + def branch_added? + Gitlab::Git.blank_ref?(@oldrev) + end + + def branch_removed? + Gitlab::Git.blank_ref?(@newrev) + end + + def force_push? + Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) + end + end + end +end -- cgit v1.2.1 From 76d9e29a65e488a316347e054920924a3c5f8b3d Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Fri, 28 Sep 2018 12:08:11 +0200 Subject: Extract git push from merge request refresh service --- app/services/merge_requests/refresh_service.rb | 59 +++++++++++--------------- lib/gitlab/git/push.rb | 17 ++++++-- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index bcdd752ddc4..d3e4f3def23 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -3,17 +3,16 @@ module MergeRequests class RefreshService < MergeRequests::BaseService def execute(oldrev, newrev, ref) - return true unless Gitlab::Git.branch_ref?(ref) + @push = Gitlab::Git::Push.new(@project, oldrev, newrev, ref) - do_execute(oldrev, newrev, ref) + return true unless @push.branch_push? + + refresh_merge_requests! end private - def do_execute(oldrev, newrev, ref) - @oldrev, @newrev = oldrev, newrev - @branch_name = Gitlab::Git.ref_name(ref) - + def refresh_merge_requests! Gitlab::GitalyClient.allow_n_plus_1_calls(&method(:find_new_commits)) # Be sure to close outstanding MRs before reloading them to avoid generating an # empty diff during a manual merge @@ -25,7 +24,7 @@ module MergeRequests cache_merge_requests_closing_issues # Leave a system note if a branch was deleted/added - if branch_added? || branch_removed? + if @push.branch_added? || @push.branch_removed? comment_mr_branch_presence_changed end @@ -54,8 +53,10 @@ module MergeRequests # rubocop: disable CodeReuse/ActiveRecord def post_merge_manually_merged commit_ids = @commits.map(&:id) - merge_requests = @project.merge_requests.preload(:latest_merge_request_diff).opened.where(target_branch: @branch_name).to_a - merge_requests = merge_requests.select(&:diff_head_commit) + merge_requests = @project.merge_requests.opened + .preload(:latest_merge_request_diff) + .where(target_branch: @push.branch_name).to_a + .select(&:diff_head_commit) merge_requests = merge_requests.select do |merge_request| commit_ids.include?(merge_request.diff_head_sha) && @@ -70,24 +71,20 @@ module MergeRequests end # rubocop: enable CodeReuse/ActiveRecord - def force_push? - Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) - end - # Refresh merge request diff if we push to source or target branch of merge request # Note: we should update merge requests from forks too # rubocop: disable CodeReuse/ActiveRecord def reload_merge_requests merge_requests = @project.merge_requests.opened - .by_source_or_target_branch(@branch_name).to_a + .by_source_or_target_branch(@push.branch_name).to_a # Fork merge requests merge_requests += MergeRequest.opened - .where(source_branch: @branch_name, source_project: @project) + .where(source_branch: @push.branch_name, source_project: @project) .where.not(target_project: @project).to_a filter_merge_requests(merge_requests).each do |merge_request| - if merge_request.source_branch == @branch_name || force_push? + if merge_request.source_branch == @push.branch_name || @push.force_push? merge_request.reload_diff(current_user) else mr_commit_ids = merge_request.commit_shas @@ -117,7 +114,7 @@ module MergeRequests end def find_new_commits - if branch_added? + if @push.branch_added? @commits = [] merge_request = merge_requests_for_source_branch.first @@ -126,28 +123,28 @@ module MergeRequests begin # Since any number of commits could have been made to the restored branch, # find the common root to see what has been added. - common_ref = @project.repository.merge_base(merge_request.diff_head_sha, @newrev) + common_ref = @project.repository.merge_base(merge_request.diff_head_sha, @push.newrev) # If the a commit no longer exists in this repo, gitlab_git throws # a Rugged::OdbError. This is fixed in https://gitlab.com/gitlab-org/gitlab_git/merge_requests/52 - @commits = @project.repository.commits_between(common_ref, @newrev) if common_ref + @commits = @project.repository.commits_between(common_ref, @push.newrev) if common_ref rescue end - elsif branch_removed? + elsif @push.branch_removed? # No commits for a deleted branch. @commits = [] else - @commits = @project.repository.commits_between(@oldrev, @newrev) + @commits = @project.repository.commits_between(@push.oldrev, @push.newrev) end end # Add comment about branches being deleted or added to merge requests def comment_mr_branch_presence_changed - presence = branch_added? ? :add : :delete + presence = @push.branch_added? ? :add : :delete merge_requests_for_source_branch.each do |merge_request| SystemNoteService.change_branch_presence( merge_request, merge_request.project, @current_user, - :source, @branch_name, presence) + :source, @push.branch_name, presence) end end @@ -164,7 +161,7 @@ module MergeRequests SystemNoteService.add_commits(merge_request, merge_request.project, @current_user, new_commits, - existing_commits, @oldrev) + existing_commits, @push.oldrev) notification_service.push_to_merge_request(merge_request, @current_user, new_commits: new_commits, existing_commits: existing_commits) end @@ -195,7 +192,7 @@ module MergeRequests # Call merge request webhook with update branches def execute_mr_web_hooks merge_requests_for_source_branch.each do |merge_request| - execute_hooks(merge_request, 'update', old_rev: @oldrev) + execute_hooks(merge_request, 'update', old_rev: @push.oldrev) end end @@ -203,7 +200,7 @@ module MergeRequests # `MergeRequestsClosingIssues` model (as a performance optimization). # rubocop: disable CodeReuse/ActiveRecord def cache_merge_requests_closing_issues - @project.merge_requests.where(source_branch: @branch_name).each do |merge_request| + @project.merge_requests.where(source_branch: @push.branch_name).each do |merge_request| merge_request.cache_merge_request_closes_issues!(@current_user) end end @@ -215,15 +212,7 @@ module MergeRequests def merge_requests_for_source_branch(reload: false) @source_merge_requests = nil if reload - @source_merge_requests ||= merge_requests_for(@branch_name) - end - - def branch_added? - Gitlab::Git.blank_ref?(@oldrev) - end - - def branch_removed? - Gitlab::Git.blank_ref?(@newrev) + @source_merge_requests ||= merge_requests_for(@push.branch_name) end end end diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb index d4fe3c623c1..8173af31a0d 100644 --- a/lib/gitlab/git/push.rb +++ b/lib/gitlab/git/push.rb @@ -3,10 +3,17 @@ module Gitlab module Git class Push + attr_reader :oldrev, :newrev + def initialize(project, oldrev, newrev, ref) - @project, @oldrev, @newrev = project, oldrev, newrev - @repository = project.repository - @branch_name = Gitlab::Git.ref_name(ref) + @project = project + @oldrev = oldrev + @newrev = newrev + @ref = ref + end + + def branch_name + @branch_name ||= Gitlab::Git.ref_name(@ref) end def branch_added? @@ -20,6 +27,10 @@ module Gitlab def force_push? Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) end + + def branch_push? + Gitlab::Git.branch_ref?(@ref) + end end end end -- cgit v1.2.1 From a50d5db580854840a6d89c3681d5eaf81b9ad2e6 Mon Sep 17 00:00:00 2001 From: Lukas Eipert Date: Thu, 27 Sep 2018 09:25:29 +0000 Subject: Backport styles for report_section These changes are a backport from https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7411 --- app/assets/javascripts/reports/components/report_section.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/reports/components/report_section.vue b/app/assets/javascripts/reports/components/report_section.vue index dc609d6f90e..d196f497362 100644 --- a/app/assets/javascripts/reports/components/report_section.vue +++ b/app/assets/javascripts/reports/components/report_section.vue @@ -139,7 +139,7 @@ export default {
-
+
{{ headerText }} -- cgit v1.2.1 From 4abba28944803d9a818925e62211a0f65458e011 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Fri, 28 Sep 2018 14:46:22 +0200 Subject: Add specs for extracted git push class --- lib/gitlab/git/push.rb | 10 ++++- spec/lib/gitlab/git/push_spec.rb | 83 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 spec/lib/gitlab/git/push_spec.rb diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb index 8173af31a0d..b6e414927ea 100644 --- a/lib/gitlab/git/push.rb +++ b/lib/gitlab/git/push.rb @@ -3,6 +3,8 @@ module Gitlab module Git class Push + include Gitlab::Utils::StrongMemoize + attr_reader :oldrev, :newrev def initialize(project, oldrev, newrev, ref) @@ -13,7 +15,9 @@ module Gitlab end def branch_name - @branch_name ||= Gitlab::Git.ref_name(@ref) + strong_memoize(:branch_name) do + Gitlab::Git.branch_name(@ref) + end end def branch_added? @@ -29,7 +33,9 @@ module Gitlab end def branch_push? - Gitlab::Git.branch_ref?(@ref) + strong_memoize(:branch_push) do + Gitlab::Git.branch_ref?(@ref) + end end end end diff --git a/spec/lib/gitlab/git/push_spec.rb b/spec/lib/gitlab/git/push_spec.rb new file mode 100644 index 00000000000..c87e972f31a --- /dev/null +++ b/spec/lib/gitlab/git/push_spec.rb @@ -0,0 +1,83 @@ +require 'spec_helper' + +describe Gitlab::Git::Push do + set(:project) { create(:project, :repository) } + + let(:oldrev) { project.commit('HEAD~10').id } + let(:newrev) { project.commit.id } + let(:ref) { 'refs/heads/some-branch' } + + subject { described_class.new(project, oldrev, newrev, ref) } + + describe '#branch_name' do + context 'when it is a branch push' do + let(:ref) { 'refs/heads/my-branch' } + + it 'returns branch name' do + expect(subject.branch_name).to eq 'my-branch' + end + end + + context 'when it is a tag push' do + let(:ref) { 'refs/tags/my-branch' } + + it 'returns nil' do + expect(subject.branch_name).to be_nil + end + end + end + + describe '#branch_push?' do + context 'when pushing a branch ref' do + let(:ref) { 'refs/heads/my-branch' } + + it { is_expected.to be_branch_push } + end + + context 'when it is a tag push' do + let(:ref) { 'refs/tags/my-branch' } + + it { is_expected.not_to be_branch_push } + end + end + + describe '#force_push?' do + context 'when old revision is an ancestor of the new revision' do + let(:oldrev) { 'HEAD~3' } + let(:newrev) { 'HEAD~1' } + + it { is_expected.not_to be_force_push } + end + + context 'when old revision is not an ancestor of the new revision' do + let(:oldrev) { 'HEAD~3' } + let(:newrev) { '123456' } + + it { is_expected.to be_force_push } + end + end + + describe '#branch_added?' do + context 'when old revision is defined' do + it { is_expected.not_to be_branch_added } + end + + context 'when old revision is not defined' do + let(:oldrev) { Gitlab::Git::BLANK_SHA } + + it { is_expected.to be_branch_added } + end + end + + describe '#branch_removed?' do + context 'when new revision is defined' do + it { is_expected.not_to be_branch_removed } + end + + context 'when new revision is not defined' do + let(:newrev) { Gitlab::Git::BLANK_SHA } + + it { is_expected.to be_branch_removed } + end + end +end -- cgit v1.2.1 From 419d8cc7a2d0e5ffd2f3f8894a739827d0c2c549 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Fri, 28 Sep 2018 15:13:04 +0200 Subject: Calculate modified paths of a git push operation --- lib/gitlab/git/diff_stats_collection.rb | 4 ++ lib/gitlab/git/push.rb | 14 +++++++ spec/lib/gitlab/git/diff_stats_collection_spec.rb | 8 +++- spec/lib/gitlab/git/push_spec.rb | 49 ++++++++++++++++++++++- 4 files changed, 72 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/git/diff_stats_collection.rb b/lib/gitlab/git/diff_stats_collection.rb index d4033f56387..998c41497a2 100644 --- a/lib/gitlab/git/diff_stats_collection.rb +++ b/lib/gitlab/git/diff_stats_collection.rb @@ -18,6 +18,10 @@ module Gitlab indexed_by_path[path] end + def paths + @collection.map(&:path) + end + private def indexed_by_path diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb index b6e414927ea..603f860e4f8 100644 --- a/lib/gitlab/git/push.rb +++ b/lib/gitlab/git/push.rb @@ -28,6 +28,10 @@ module Gitlab Gitlab::Git.blank_ref?(@newrev) end + def branch_updated? + branch_push? && !branch_added? && !branch_removed? + end + def force_push? Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) end @@ -37,6 +41,16 @@ module Gitlab Gitlab::Git.branch_ref?(@ref) end end + + def modified_paths + unless branch_updated? + raise ArgumentError, 'Unable to calculate modified paths!' + end + + strong_memoize(:modified_paths) do + @project.repository.diff_stats(@oldrev, @newrev).paths + end + end end end end diff --git a/spec/lib/gitlab/git/diff_stats_collection_spec.rb b/spec/lib/gitlab/git/diff_stats_collection_spec.rb index 89927cbb3a6..b07690ef39c 100644 --- a/spec/lib/gitlab/git/diff_stats_collection_spec.rb +++ b/spec/lib/gitlab/git/diff_stats_collection_spec.rb @@ -14,7 +14,7 @@ describe Gitlab::Git::DiffStatsCollection do let(:diff_stats) { [stats_a, stats_b] } let(:collection) { described_class.new(diff_stats) } - describe '.find_by_path' do + describe '#find_by_path' do it 'returns stats by path when found' do expect(collection.find_by_path('foo')).to eq(stats_a) end @@ -23,4 +23,10 @@ describe Gitlab::Git::DiffStatsCollection do expect(collection.find_by_path('no-file')).to be_nil end end + + describe '#paths' do + it 'returns only modified paths' do + expect(collection.paths).to eq %w[foo bar] + end + end end diff --git a/spec/lib/gitlab/git/push_spec.rb b/spec/lib/gitlab/git/push_spec.rb index c87e972f31a..f19e05c4451 100644 --- a/spec/lib/gitlab/git/push_spec.rb +++ b/spec/lib/gitlab/git/push_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe Gitlab::Git::Push do set(:project) { create(:project, :repository) } - let(:oldrev) { project.commit('HEAD~10').id } + let(:oldrev) { project.commit('HEAD~2').id } let(:newrev) { project.commit.id } let(:ref) { 'refs/heads/some-branch' } @@ -35,12 +35,36 @@ describe Gitlab::Git::Push do end context 'when it is a tag push' do - let(:ref) { 'refs/tags/my-branch' } + let(:ref) { 'refs/tags/my-tag' } it { is_expected.not_to be_branch_push } end end + describe '#branch_updated?' do + context 'when it is a branch push with correct old and new revisions' do + it { is_expected.to be_branch_updated } + end + + context 'when it is not a branch push' do + let(:ref) { 'refs/tags/my-tag' } + + it { is_expected.not_to be_branch_updated } + end + + context 'when old revision is blank' do + let(:oldrev) { Gitlab::Git::BLANK_SHA } + + it { is_expected.not_to be_branch_updated } + end + + context 'when it is not a branch push' do + let(:newrev) { Gitlab::Git::BLANK_SHA } + + it { is_expected.not_to be_branch_updated } + end + end + describe '#force_push?' do context 'when old revision is an ancestor of the new revision' do let(:oldrev) { 'HEAD~3' } @@ -80,4 +104,25 @@ describe Gitlab::Git::Push do it { is_expected.to be_branch_removed } end end + + describe '#modified_paths' do + context 'when a push is a branch update' do + let(:oldrev) { '281d3a76f31c812dbf48abce82ccf6860adedd81' } + let(:new_rev) { '1b12f15a11fc6e62177bef08f47bc7b5ce50b141' } + + it 'returns modified paths' do + expect(subject.modified_paths).to eq ['bar/branch-test.txt', + 'files/js/commit.coffee', + 'with space/README.md'] + end + end + + context 'when a push is not a branch update' do + let(:oldrev) { Gitlab::Git::BLANK_SHA } + + it 'raises an error' do + expect { subject.modified_paths }.to raise_error(ArgumentError) + end + end + end end -- cgit v1.2.1 From 9bad9b0a68074d4b0fe5de7f3c5cefd4a808c726 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Fri, 28 Sep 2018 15:38:36 +0200 Subject: Improve specs for git push class This helps to prevent problems with off-by-one commmit problem in `Gitlab::Git::Push#modified_paths`. --- spec/lib/gitlab/git/push_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/lib/gitlab/git/push_spec.rb b/spec/lib/gitlab/git/push_spec.rb index f19e05c4451..2a7a357f384 100644 --- a/spec/lib/gitlab/git/push_spec.rb +++ b/spec/lib/gitlab/git/push_spec.rb @@ -107,8 +107,8 @@ describe Gitlab::Git::Push do describe '#modified_paths' do context 'when a push is a branch update' do - let(:oldrev) { '281d3a76f31c812dbf48abce82ccf6860adedd81' } - let(:new_rev) { '1b12f15a11fc6e62177bef08f47bc7b5ce50b141' } + let(:newrev) { '498214d' } + let(:oldrev) { '281d3a7' } it 'returns modified paths' do expect(subject.modified_paths).to eq ['bar/branch-test.txt', -- cgit v1.2.1 From 8589fa871ee5dd94f821e1f5cbbcee269b46acf9 Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Fri, 28 Sep 2018 14:36:49 -0400 Subject: Optimize groups filter When searching for a group, submit a request that returns only the filtered list of groups. This makes the state of the page more reliable because it avoids having to wait for the list of groups to dynamically refresh. --- app/views/dashboard/groups/_groups.html.haml | 2 +- app/views/shared/groups/_search_form.html.haml | 2 +- qa/qa/page/component/groups_filter.rb | 40 ++++++++++++++++++++++---- qa/qa/page/dashboard/groups.rb | 6 ++-- qa/qa/page/group/show.rb | 8 ++---- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/app/views/dashboard/groups/_groups.html.haml b/app/views/dashboard/groups/_groups.html.haml index db856ef7d7b..94d53b78c0f 100644 --- a/app/views/dashboard/groups/_groups.html.haml +++ b/app/views/dashboard/groups/_groups.html.haml @@ -1,4 +1,4 @@ .js-groups-list-holder #js-groups-tree{ data: { hide_projects: 'true', endpoint: dashboard_groups_path(format: :json), path: dashboard_groups_path, form_sel: 'form#group-filter-form', filter_sel: '.js-groups-list-filter', holder_sel: '.js-groups-list-holder', dropdown_sel: '.js-group-filter-dropdown-wrap' } } .loading-container.text-center - = icon('spinner spin 2x', class: 'loading-animation prepend-top-20') + = icon('spinner spin 2x', class: 'loading-animation prepend-top-20 qa-loading-animation') diff --git a/app/views/shared/groups/_search_form.html.haml b/app/views/shared/groups/_search_form.html.haml index 67e1cd0d67b..49b812baefc 100644 --- a/app/views/shared/groups/_search_form.html.haml +++ b/app/views/shared/groups/_search_form.html.haml @@ -1,2 +1,2 @@ = form_tag request.path, method: :get, class: "group-filter-form js-group-filter-form", id: 'group-filter-form' do |f| - = search_field_tag :filter, params[:filter], placeholder: s_('GroupsTree|Search by name'), class: 'group-filter-form-field form-control js-groups-list-filter', spellcheck: false, id: 'group-filter-form-field', tabindex: "2" + = search_field_tag :filter, params[:filter], placeholder: s_('GroupsTree|Search by name'), class: 'group-filter-form-field form-control js-groups-list-filter qa-groups-filter', spellcheck: false, id: 'group-filter-form-field', tabindex: "2" diff --git a/qa/qa/page/component/groups_filter.rb b/qa/qa/page/component/groups_filter.rb index e647d368f0f..4c1c3953db6 100644 --- a/qa/qa/page/component/groups_filter.rb +++ b/qa/qa/page/component/groups_filter.rb @@ -6,8 +6,7 @@ module QA module GroupsFilter def self.included(base) base.view 'app/views/shared/groups/_search_form.html.haml' do - element :groups_filter, 'search_field_tag :filter' - element :groups_filter_placeholder, 'Search by name' + element :groups_filter end base.view 'app/views/shared/groups/_empty_state.html.haml' do @@ -17,17 +16,48 @@ module QA base.view 'app/assets/javascripts/groups/components/groups.vue' do element :groups_list_tree_container end + + base.view 'app/views/dashboard/groups/_groups.html.haml' do + element :loading_animation + end end private - def filter_by_name(name) + # Filter the list of groups/projects by name + # If submit is true the return key will be sent to the browser to reload + # the page and fetch only the filtered results + def filter_by_name(name, submit: false) + wait(reload: false) do + # Wait 0 for the empty state element because it is there immediately + # if there are no groups. Otherwise there's a loading indicator and + # then groups_list_tree_container appears, which might take longer + page.has_css?(element_selector_css(:groups_empty_state), wait: 0) || + page.has_css?(element_selector_css(:groups_list_tree_container)) + end + + field = find_element :groups_filter + field.set(name) + field.send_keys(:return) if submit + end + + def has_filtered_group?(name) + # Filter and submit to reload the page and only retrieve the filtered results + filter_by_name(name, submit: true) + + # Since we submitted after filtering the absence of the loading + # animation and the presence of groups_list_tree_container means we + # have the complete filtered list of groups wait(reload: false) do - page.has_css?(element_selector_css(:groups_empty_state)) || + page.has_no_css?(element_selector_css(:loading_animation)) && page.has_css?(element_selector_css(:groups_list_tree_container)) end - fill_in 'Search by name', with: name + # If there are no groups we'll know immediately because we filtered the list + return if page.has_text?(/No groups or projects matched your search/, wait: 0) + + # The name will be present as filter input so we check for a link, not text + page.has_link?(name, wait: 0) end end end diff --git a/qa/qa/page/dashboard/groups.rb b/qa/qa/page/dashboard/groups.rb index 70c5f996ff8..c6ef932e33f 100644 --- a/qa/qa/page/dashboard/groups.rb +++ b/qa/qa/page/dashboard/groups.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module QA module Page module Dashboard @@ -14,9 +16,7 @@ module QA end def has_group?(name) - filter_by_name(name) - - page.has_link?(name) + has_filtered_group?(name) end def go_to_group(name) diff --git a/qa/qa/page/group/show.rb b/qa/qa/page/group/show.rb index 74d20df76ba..58a9e861971 100644 --- a/qa/qa/page/group/show.rb +++ b/qa/qa/page/group/show.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module QA module Page module Group @@ -25,11 +27,7 @@ module QA end def has_subgroup?(name) - filter_by_name(name) - - page.has_text?(/#{name}|No groups or projects matched your search/, wait: 60) - - page.has_text?(name, wait: 0) + has_filtered_group?(name) end def go_to_new_subgroup -- cgit v1.2.1 From 4df24e5f046f94a04b379fcd1d6d57ef49cfd6dc Mon Sep 17 00:00:00 2001 From: Lukas Eipert Date: Fri, 21 Sep 2018 17:36:26 +0200 Subject: Danger check for unprettified JavaScript This adds a Dangerfile which executes `prettier` to find out if someone touched Frontend files and forgot to run it on their current branch. --- .gitlab-ci.yml | 3 ++- Dangerfile | 1 + danger/prettier/Dangerfile | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 danger/prettier/Dangerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 058cacb0774..5028aa98a85 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -444,10 +444,10 @@ setup-test-env: - vendor/gitaly-ruby danger-review: + <<: *pull-cache image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger stage: test allow_failure: true - cache: {} dependencies: [] before_script: [] only: @@ -461,6 +461,7 @@ danger-review: - $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/ script: - git version + - yarn install --frozen-lockfile --cache-folder .yarn-cache - danger --fail-on-errors=true rspec-pg 0 30: *rspec-metadata-pg diff --git a/Dangerfile b/Dangerfile index 46e53edcac4..fe1e3d16ba5 100644 --- a/Dangerfile +++ b/Dangerfile @@ -7,3 +7,4 @@ danger.import_dangerfile(path: 'danger/database') danger.import_dangerfile(path: 'danger/documentation') danger.import_dangerfile(path: 'danger/frozen_string') danger.import_dangerfile(path: 'danger/commit_messages') +danger.import_dangerfile(path: 'danger/prettier') diff --git a/danger/prettier/Dangerfile b/danger/prettier/Dangerfile new file mode 100644 index 00000000000..86f9f6af475 --- /dev/null +++ b/danger/prettier/Dangerfile @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +def get_prettier_files(files) + files.select do |file| + file.end_with?('.js', '.scss', '.vue') + end +end + +prettier_candidates = get_prettier_files(git.added_files + git.modified_files) + +return if prettier_candidates.empty? + +unpretty = `node_modules/prettier/bin-prettier.js --list-different #{prettier_candidates.join(" ")}` + .split(/$/) + .map(&:strip) + .reject(&:empty?) + +return if unpretty.empty? + +warn 'This merge request changed frontend files without pretty printing them.' + +markdown(<<~MARKDOWN) + ## Pretty print Frontend files + + The following files should have been pretty printed with `prettier`: + + * #{unpretty.map { |path| "`#{path}`" }.join("\n* ")} + + Please run + + ``` + node_modules/.bin/prettier --write \\ + #{unpretty.map { |path| " '#{path}'" }.join(" \\\n")} + ``` + + Also consider auto-formatting [on-save]. + + [on-save]: https://docs.gitlab.com/ee/development/new_fe_guide/style/prettier.html +MARKDOWN -- cgit v1.2.1 From b0c197cc2302945222e898d92951c2b3faa8d43e Mon Sep 17 00:00:00 2001 From: George Tsiolis Date: Fri, 28 Sep 2018 00:52:02 +0300 Subject: Update environment item empty state --- app/views/projects/environments/show.html.haml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml index c7890b37381..8c5b6e089ea 100644 --- a/app/views/projects/environments/show.html.haml +++ b/app/views/projects/environments/show.html.haml @@ -49,15 +49,16 @@ .environments-container - if @deployments.blank? - .blank-state-row - .blank-state-center - %h2.blank-state-title + .empty-state + .text-content + %h4.state-title You don't have any deployments right now. %p.blank-state-text Define environments in the deploy stage(s) in %code .gitlab-ci.yml to track deployments here. - = link_to "Read more", help_page_path("ci/environments"), class: "btn btn-success" + .text-center + = link_to _("Read more"), help_page_path("ci/environments"), class: "btn btn-success" - else .table-holder .ci-table.environments{ role: 'grid' } -- cgit v1.2.1 From 685d579472018c968e785d7d49ec7f84f7438e97 Mon Sep 17 00:00:00 2001 From: Lukas Eipert Date: Fri, 21 Sep 2018 18:26:48 +0200 Subject: Danger check for ignored eslint rules We disabled a lot of eslint rules on a per-file basis. This checks touched files for those and reminds you to re-enable the rules and fix them. --- .gitlab-ci.yml | 1 + Dangerfile | 1 + danger/eslint/Dangerfile | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 danger/eslint/Dangerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5028aa98a85..cccbaeb3af1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -461,6 +461,7 @@ danger-review: - $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/ script: - git version + - node --version - yarn install --frozen-lockfile --cache-folder .yarn-cache - danger --fail-on-errors=true diff --git a/Dangerfile b/Dangerfile index fe1e3d16ba5..10caacff4c4 100644 --- a/Dangerfile +++ b/Dangerfile @@ -8,3 +8,4 @@ danger.import_dangerfile(path: 'danger/documentation') danger.import_dangerfile(path: 'danger/frozen_string') danger.import_dangerfile(path: 'danger/commit_messages') danger.import_dangerfile(path: 'danger/prettier') +danger.import_dangerfile(path: 'danger/eslint') diff --git a/danger/eslint/Dangerfile b/danger/eslint/Dangerfile new file mode 100644 index 00000000000..f78488cfd0a --- /dev/null +++ b/danger/eslint/Dangerfile @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +def get_eslint_files(files) + files.select do |file| + file.end_with?('.js', '.vue') && + File.read(file).include?('/* eslint-disable') + end +end + +eslint_candidates = get_eslint_files(git.added_files + git.modified_files) + +return if eslint_candidates.empty? + +warn 'This merge request changed files with disabled eslint rules. Please consider fixing them.' + +markdown(<<~MARKDOWN) + ## Disabled eslint rules + + The following files have disabled `eslint` rules. Please consider fixing them: + + * #{eslint_candidates.map { |path| "`#{path}`" }.join("\n* ")} + + Run the following command for more details + + ``` + node_modules/.bin/eslint --report-unused-disable-directives --no-inline-config \\ + #{eslint_candidates.map { |path| " '#{path}'" }.join(" \\\n")} + ``` +MARKDOWN -- cgit v1.2.1 From 829c9c65f9b730b3ecad7d3ba222e3dcd6489b85 Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Wed, 19 Sep 2018 14:58:43 -0500 Subject: post_process markdown redered by API --- app/models/project_services/hipchat_service.rb | 2 +- ...bw-confidential-titles-through-markdown-api.yml | 5 +++ lib/api/markdown.rb | 7 ++-- lib/banzai.rb | 7 ++++ spec/requests/api/markdown_spec.rb | 46 ++++++++++++++++++++++ 5 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 changelogs/unreleased/security-bw-confidential-titles-through-markdown-api.yml diff --git a/app/models/project_services/hipchat_service.rb b/app/models/project_services/hipchat_service.rb index 66012f0da99..a69b7b4c4b6 100644 --- a/app/models/project_services/hipchat_service.rb +++ b/app/models/project_services/hipchat_service.rb @@ -149,7 +149,7 @@ class HipchatService < Service context.merge!(options) - html = Banzai.post_process(Banzai.render(text, context), context) + html = Banzai.render_and_post_process(text, context) sanitized_html = sanitize(html, tags: HIPCHAT_ALLOWED_TAGS, attributes: %w[href title alt]) sanitized_html.truncate(200, separator: ' ', omission: '...') diff --git a/changelogs/unreleased/security-bw-confidential-titles-through-markdown-api.yml b/changelogs/unreleased/security-bw-confidential-titles-through-markdown-api.yml new file mode 100644 index 00000000000..e0231b7962f --- /dev/null +++ b/changelogs/unreleased/security-bw-confidential-titles-through-markdown-api.yml @@ -0,0 +1,5 @@ +--- +title: Markdown API no longer displays confidential title references unless authorized +merge_request: +author: +type: security diff --git a/lib/api/markdown.rb b/lib/api/markdown.rb index 5d55224c1a7..09a8c34c5c0 100644 --- a/lib/api/markdown.rb +++ b/lib/api/markdown.rb @@ -10,7 +10,8 @@ module API detail "This feature was introduced in GitLab 11.0." end post do - context = { only_path: false } + context = { only_path: false, current_user: current_user } + context[:pipeline] = params[:gfm] ? :full : :plain_markdown if params[:project] project = Project.find_by_full_path(params[:project]) @@ -22,9 +23,7 @@ module API context[:skip_project_check] = true end - context[:pipeline] = params[:gfm] ? :full : :plain_markdown - - { html: Banzai.render(params[:text], context) } + { html: Banzai.render_and_post_process(params[:text], context) } end end end diff --git a/lib/banzai.rb b/lib/banzai.rb index 5df98f66f3b..788f29a6c08 100644 --- a/lib/banzai.rb +++ b/lib/banzai.rb @@ -1,4 +1,11 @@ module Banzai + # if you need to render markdown, then you probably need to post_process as well, + # such as removing references that the current user doesn't have + # permission to make + def self.render_and_post_process(text, context = {}) + post_process(render(text, context), context) + end + def self.render(text, context = {}) Renderer.render(text, context) end diff --git a/spec/requests/api/markdown_spec.rb b/spec/requests/api/markdown_spec.rb index a55796cf343..e369c1435f0 100644 --- a/spec/requests/api/markdown_spec.rb +++ b/spec/requests/api/markdown_spec.rb @@ -106,6 +106,52 @@ describe API::Markdown do .and include("#1") end end + + context 'with a public project and confidential issue' do + let(:public_project) { create(:project, :public) } + let(:confidential_issue) { create(:issue, :confidential, project: public_project, title: 'Confidential title') } + + let(:text) { ":tada: Hello world! :100: #{confidential_issue.to_reference}" } + let(:params) { { text: text, gfm: true, project: public_project.full_path } } + + shared_examples 'user without proper access' do + it 'does not render the title or link' do + expect(response).to have_http_status(201) + expect(json_response["html"]).not_to include('Confidential title') + expect(json_response["html"]).not_to include('') + end + end + + context 'when not logged in' do + let(:user) { } + + it_behaves_like 'user without proper access' + end + + context 'when logged in as user without access' do + let(:user) { create(:user) } + + it_behaves_like 'user without proper access' + end + + context 'when logged in as author' do + let(:user) { confidential_issue.author } + + it 'renders the title or link' do + expect(response).to have_http_status(201) + expect(json_response["html"]).to include('Confidential title') + expect(json_response["html"]).to include('Hello world!') + .and include('data-name="tada"') + .and include('data-name="100"') + .and include("") + end + end + end end end end -- cgit v1.2.1 From 7f4452d4069b815612e53b7f20995137af608db2 Mon Sep 17 00:00:00 2001 From: Jan Provaznik Date: Sun, 30 Sep 2018 19:54:21 +0200 Subject: Preload project features in reference parser Preloading of project_features mitigates N+1 queries when checking references in other projects. When loading projects for resources referenced in comments it makes sense to include also associated project_features because in the following step (`can_read_reference?(user, projects[node], node)`) project features is used for checking permissions for the given project. --- changelogs/unreleased/load_project_features.yml | 5 +++++ lib/banzai/reference_parser/base_parser.rb | 2 +- spec/lib/banzai/reference_parser/commit_parser_spec.rb | 18 ++++++++++++++++++ spec/support/helpers/reference_parser_helpers.rb | 6 +++++- 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/load_project_features.yml diff --git a/changelogs/unreleased/load_project_features.yml b/changelogs/unreleased/load_project_features.yml new file mode 100644 index 00000000000..0cf7f0e3a74 --- /dev/null +++ b/changelogs/unreleased/load_project_features.yml @@ -0,0 +1,5 @@ +--- +title: Mitigate N+1 queries when parsing commit references in comments. +merge_request: +author: +type: performance diff --git a/lib/banzai/reference_parser/base_parser.rb b/lib/banzai/reference_parser/base_parser.rb index 3ab154a7b1c..334ba97bfb3 100644 --- a/lib/banzai/reference_parser/base_parser.rb +++ b/lib/banzai/reference_parser/base_parser.rb @@ -215,7 +215,7 @@ module Banzai # def projects_for_nodes(nodes) @projects_for_nodes ||= - grouped_objects_for_nodes(nodes, Project, 'data-project') + grouped_objects_for_nodes(nodes, Project.includes(:project_feature), 'data-project') end def can?(user, permission, subject = :global) diff --git a/spec/lib/banzai/reference_parser/commit_parser_spec.rb b/spec/lib/banzai/reference_parser/commit_parser_spec.rb index cca53a8b9b9..f558dea209f 100644 --- a/spec/lib/banzai/reference_parser/commit_parser_spec.rb +++ b/spec/lib/banzai/reference_parser/commit_parser_spec.rb @@ -120,4 +120,22 @@ describe Banzai::ReferenceParser::CommitParser do expect(subject.find_commits(project, %w{123})).to eq([]) end end + + context 'when checking commits on another projects' do + let(:control_links) do + [commit_link] + end + + let(:actual_links) do + control_links + [commit_link, commit_link] + end + + def commit_link + project = create(:project, :repository, :public) + + Nokogiri::HTML.fragment(%Q{}).children[0] + end + + it_behaves_like 'no project N+1 queries' + end end diff --git a/spec/support/helpers/reference_parser_helpers.rb b/spec/support/helpers/reference_parser_helpers.rb index c01897ed1a1..9f27502aa52 100644 --- a/spec/support/helpers/reference_parser_helpers.rb +++ b/spec/support/helpers/reference_parser_helpers.rb @@ -3,7 +3,7 @@ module ReferenceParserHelpers Nokogiri::HTML.fragment('').children[0] end - shared_examples 'no N+1 queries' do + shared_examples 'no project N+1 queries' do it 'avoids N+1 queries in #nodes_visible_to_user', :request_store do context = Banzai::RenderContext.new(project, user) @@ -19,6 +19,10 @@ module ReferenceParserHelpers expect(actual.count).to be <= control.count expect(actual.cached_count).to be <= control.cached_count end + end + + shared_examples 'no N+1 queries' do + it_behaves_like 'no project N+1 queries' it 'avoids N+1 queries in #records_for_nodes', :request_store do context = Banzai::RenderContext.new(project, user) -- cgit v1.2.1 From f6ff32d9bd7a9817bb74379a1f28954aa378559c Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Mon, 1 Oct 2018 10:32:09 +1300 Subject: Port Helm::Api EE extensions to CE We will need these utility level code in the future to help upgrade all helm applications. --- lib/gitlab/kubernetes/helm/api.rb | 18 +++++++++ spec/lib/gitlab/kubernetes/helm/api_spec.rb | 58 +++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/lib/gitlab/kubernetes/helm/api.rb b/lib/gitlab/kubernetes/helm/api.rb index 2dd74c68075..e21bc531444 100644 --- a/lib/gitlab/kubernetes/helm/api.rb +++ b/lib/gitlab/kubernetes/helm/api.rb @@ -17,6 +17,12 @@ module Gitlab kubeclient.create_pod(command.pod_resource) end + def update(command) + namespace.ensure_exists! + update_config_map(command) + kubeclient.create_pod(command.pod_resource) + end + ## # Returns Pod phase # @@ -36,6 +42,12 @@ module Gitlab kubeclient.delete_pod(pod_name, namespace.name) end + def get_config_map(config_map_name) + namespace.ensure_exists! + + kubeclient.get_config_map(config_map_name, namespace.name) + end + private attr_reader :kubeclient, :namespace @@ -46,6 +58,12 @@ module Gitlab end end + def update_config_map(command) + command.config_map_resource.tap do |config_map_resource| + kubeclient.update_config_map(config_map_resource) + end + end + def create_service_account(command) command.service_account_resource.tap do |service_account_resource| break unless service_account_resource diff --git a/spec/lib/gitlab/kubernetes/helm/api_spec.rb b/spec/lib/gitlab/kubernetes/helm/api_spec.rb index 25c3b37753d..9200724ed23 100644 --- a/spec/lib/gitlab/kubernetes/helm/api_spec.rb +++ b/spec/lib/gitlab/kubernetes/helm/api_spec.rb @@ -150,6 +150,43 @@ describe Gitlab::Kubernetes::Helm::Api do end end + describe '#update' do + let(:rbac) { false } + + let(:command) do + Gitlab::Kubernetes::Helm::UpgradeCommand.new( + application_name, + chart: 'chart-name', + files: files, + rbac: rbac + ) + end + + before do + allow(namespace).to receive(:ensure_exists!).once + + allow(client).to receive(:update_config_map).and_return(nil) + allow(client).to receive(:create_pod).and_return(nil) + end + + it 'ensures the namespace exists before creating the pod' do + expect(namespace).to receive(:ensure_exists!).once.ordered + expect(client).to receive(:create_pod).once.ordered + + subject.update(command) + end + + it 'updates the config map on kubeclient when one exists' do + resource = Gitlab::Kubernetes::ConfigMap.new( + application_name, files + ).generate + + expect(client).to receive(:update_config_map).with(resource).once + + subject.update(command) + end + end + describe '#status' do let(:phase) { Gitlab::Kubernetes::Pod::RUNNING } let(:pod) { Kubeclient::Resource.new(status: { phase: phase }) } # partial representation @@ -179,4 +216,25 @@ describe Gitlab::Kubernetes::Helm::Api do subject.delete_pod!(command.pod_name) end end + + describe '#get_config_map' do + before do + allow(namespace).to receive(:ensure_exists!).once + allow(client).to receive(:get_config_map).and_return(nil) + end + + it 'ensures the namespace exists before retrieving the config map' do + expect(namespace).to receive(:ensure_exists!).once + + subject.get_config_map('example-config-map-name') + end + + it 'gets the config map on kubeclient' do + expect(client).to receive(:get_config_map) + .with('example-config-map-name', namespace.name) + .once + + subject.get_config_map('example-config-map-name') + end + end end -- cgit v1.2.1 From 0400b4b39147a1aeedd09af3cf794f5845391737 Mon Sep 17 00:00:00 2001 From: Evan Read Date: Mon, 10 Sep 2018 13:56:04 +1000 Subject: Add more introductory information to Review Apps page Also includes other refactoring. --- .../img/continuous-delivery-review-apps.svg | 48 ++++++ .../review_apps/img/review_apps_preview_in_mr.png | Bin 11664 -> 29800 bytes doc/ci/review_apps/index.md | 163 +++++++++------------ 3 files changed, 120 insertions(+), 91 deletions(-) create mode 100644 doc/ci/review_apps/img/continuous-delivery-review-apps.svg diff --git a/doc/ci/review_apps/img/continuous-delivery-review-apps.svg b/doc/ci/review_apps/img/continuous-delivery-review-apps.svg new file mode 100644 index 00000000000..90ac763a01e --- /dev/null +++ b/doc/ci/review_apps/img/continuous-delivery-review-apps.svg @@ -0,0 +1,48 @@ + + + + review-apps-CD-outlined + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/ci/review_apps/img/review_apps_preview_in_mr.png b/doc/ci/review_apps/img/review_apps_preview_in_mr.png index 7d0923f198f..3e6506a6a3a 100644 Binary files a/doc/ci/review_apps/img/review_apps_preview_in_mr.png and b/doc/ci/review_apps/img/review_apps_preview_in_mr.png differ diff --git a/doc/ci/review_apps/index.md b/doc/ci/review_apps/index.md index 1b17f6ac5ea..64be011008e 100644 --- a/doc/ci/review_apps/index.md +++ b/doc/ci/review_apps/index.md @@ -1,95 +1,94 @@ -# Getting started with Review Apps +# Review Apps -> - [Introduced][ce-21971] in GitLab 8.12. Further additions were made in GitLab -> 8.13 and 8.14. -> - Inspired by [Heroku's Review Apps][heroku-apps] which itself was inspired by -> [Fourchette]. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/21971) in GitLab 8.12. Further additions were made in GitLab 8.13 and 8.14. +> - Inspired by [Heroku's Review Apps](https://devcenter.heroku.com/articles/github-integration-review-apps), which itself was inspired by [Fourchette](https://github.com/rainforestapp/fourchette). -The basis of Review Apps is the [dynamic environments] which allow you to create -a new environment (dynamically) for each one of your branches. +For a video introduction to Review Apps, see [8.14 Webcast: Review Apps & Time Tracking Beta (EE) - GitLab Release](https://www.youtube.com/watch?v=CteZol_7pxo). -A Review App can then be visible as a link when you visit the [merge request] -relevant to the branch. That way, you are able to see live all changes introduced -by the merge request changes. Reviewing anything, from performance to interface -changes, becomes much easier with a live environment and as such, Review Apps -can make a huge impact on your development flow. +## Overview -They mostly make sense to be used with web applications, but you can use them -any way you'd like. +Review Apps are a collaboration tool that takes the hard work out of providing an environment to showcase product changes. -## Overview +Review Apps: + +- Provide an automatic live preview of changes made in a feature branch by spinning up a dynamic environment for your merge requests. +- Allow designers and product manages to see your changes without needing to check out your branch and run your changes in a sandbox environment. +- Are fully integrated with the [GitLab DevOps LifeCycle](../../README.md#complete-devops-with-gitlab). +- Allow you to deploy your changes wherever you want. + +![Review Apps Workflow](img/continuous-delivery-review-apps.svg) + +Reviewing anything, from performance to interface changes, becomes much easier with a live environment and so Review Apps can make a large impact on your development flow. -Simply put, a Review App is a mapping of a branch with an environment as there -is a 1:1 relation between them. +## What are Review Apps? -Here's an example of what it looks like when viewing a merge request with a -dynamically set environment. +A Review App is a mapping of a branch with an [environment](../environments.md). The following is an example of a merge request with an environment set dynamically. ![Review App in merge request](img/review_apps_preview_in_mr.png) -In the image above you can see that the `add-new-line` branch was successfully -built and deployed under a dynamic environment and can be previewed with an -also dynamically URL. +In this example, you can see a branch was: + +- Successfully built. +- Deployed under a dynamic environment that can be reached by clicking on the **View app** button. + +## How do Review Apps work? + +The basis of Review Apps in GitLab is [dynamic environments](../environments.md#dynamic-environments), which allow you to dynamically create a new environment for each branch. + +Access to the Review App is made available as a link on the [merge request](../../user/project/merge_requests.md) relevant to the branch. Review Apps enable you to review all changes proposed by the merge request in live environment. -The details of the Review Apps implementation depend widely on your real -technology stack and on your deployment process. The simplest case is to -deploy a simple static HTML website, but it will not be that straightforward -when your app is using a database for example. To make a branch be deployed -on a temporary instance and booting up this instance with all required software -and services automatically on the fly is not a trivial task. However, it is -doable, especially if you use Docker, or at least a configuration management -tool like Chef, Puppet, Ansible or Salt. +## Use cases -## Prerequisites +Some supported use cases include the: -To get a better understanding of Review Apps, you must first learn how -environments and deployments work. The following docs will help you grasp that -knowledge: +- Simple case of deploying a simple static HTML website. +- More complicated case of an application that uses a database. Deploying a branch on a temporary instance and booting up this instance with all required software and services automatically on the fly is not a trivial task. However, it is possible, especially if you use Docker or a configuration management tool like Chef, Puppet, Ansible, or Salt. -1. First, learn about [environments][] and their role in the development workflow. -1. Then make a small stop to learn about [CI variables][variables] and how they - can be used in your CI jobs. -1. Next, explore the [`environment` syntax][yaml-env] as defined in `.gitlab-ci.yml`. - This will be your primary reference when you are finally comfortable with - how environments work. -1. Additionally, find out about [manual actions][] and how you can use them to - deploy to critical environments like production with the push of a button. -1. And as a last step, follow the [example tutorials](#examples) which will - guide you step by step to set up the infrastructure and make use of - Review Apps. +Review Apps usually make sense with web applications, but you can use them any way you'd like. -## Configuration +## Implementing Review Apps -The configuration of Review apps depends on your technology stack and your -infrastructure. Read the [dynamic environments] documentation to understand -how to define and create them. +Implementing Review Apps depends on your: -## Creating and destroying Review Apps +- Technology stack. +- Deployment process. -The creation and destruction of a Review App is defined in `.gitlab-ci.yml` -at a job level under the `environment` keyword. +### Prerequisite Knowledge -Check the [environments] documentation how to do so. +To get a better understanding of Review Apps, review documentation on how environments and deployments work. Before you implement your own Review Apps: -## A simple workflow +1. Learn about [environments](../environments.md) and their role in the development workflow. +1. Learn about [CI variables](../variables/README.md) and how they can be used in your CI jobs. +1. Explore the [`environment` syntax](../yaml/README.md#environment) as defined in `.gitlab-ci.yml`. This will become a primary reference. +1. Additionally, find out about [manual actions](../environments.md#manual-actions) and how you can use them to deploy to critical environments like production with the push of a button. +1. Follow the [example tutorials](#examples). These will guide you through setting up infrastructure and using Review Apps. -The process of adding Review Apps in your workflow would look like: +### Configuring dynamic environments + +Configuring Review Apps dynamic environments depends on your technology stack and infrastructure. + +For more information, see [dynamic environments](../environments.md#dynamic-environments) documentation to understand how to define and create them. + +### Creating and destroying Review Apps + +Creating and destroying Review Apps is defined in `.gitlab-ci.yml` at a job level under the `environment` keyword. + +For more information, see [Introduction to environments and deployments](../environments.md). + +### Adding Review Apps to your workflow + +The process of adding Review Apps in your workflow is as follows: 1. Set up the infrastructure to host and deploy the Review Apps. -1. [Install][install-runner] and [configure][conf-runner] a Runner that does - the deployment. -1. Set up a job in `.gitlab-ci.yml` that uses the predefined - [predefined CI environment variable][variables] `${CI_COMMIT_REF_NAME}` to - create dynamic environments and restrict it to run only on branches. -1. Optionally set a job that [manually stops][manual-env] the Review Apps. +1. [Install](https://docs.gitlab.com/runner/install/) and [configure](https://docs.gitlab.com/runner/commands/) a Runner to do deployment. +1. Set up a job in `.gitlab-ci.yml` that uses the predefined [predefined CI environment variable](../variables/README.md) `${CI_COMMIT_REF_NAME}` to create dynamic environments and restrict it to run only on branches. +1. Optionally, set a job that [manually stops](../environments.md#stopping-an-environment) the Review Apps. -From there on, you would follow the branched Git flow: +After adding Review Apps to your workflow, you follow the branched Git flow. That is: -1. Push a branch and let the Runner deploy the Review App based on the `script` - definition of the dynamic environment job. -1. Wait for the Runner to build and/or deploy your web app. -1. Click on the link that's present in the MR related to the branch and see the - changes live. +1. Push a branch and let the Runner deploy the Review App based on the `script` definition of the dynamic environment job. +1. Wait for the Runner to build and deploy your web application. +1. Click on the link that provided in the merge request related to the branch to see the changes live. ## Limitations @@ -97,27 +96,9 @@ Check the [environments limitations](../environments.md#limitations). ## Examples -A list of examples used with Review Apps can be found below: - -- [Use with NGINX][app-nginx] - Use NGINX and the shell executor of GitLab Runner - to deploy a simple HTML website. - -And below is a soon to be added examples list: - -- Use with Amazon S3 -- Use on Heroku with dpl -- Use with OpenShift/kubernetes - -[app-nginx]: https://gitlab.com/gitlab-examples/review-apps-nginx -[ce-21971]: https://gitlab.com/gitlab-org/gitlab-ce/issues/21971 -[dynamic environments]: ../environments.md#dynamic-environments -[environments]: ../environments.md -[fourchette]: https://github.com/rainforestapp/fourchette -[heroku-apps]: https://devcenter.heroku.com/articles/github-integration-review-apps -[manual actions]: ../environments.md#manual-actions -[merge request]: ../../user/project/merge_requests.md -[variables]: ../variables/README.md -[yaml-env]: ../yaml/README.md#environment -[install-runner]: https://docs.gitlab.com/runner/install/ -[conf-runner]: https://docs.gitlab.com/runner/commands/ -[manual-env]: ../environments.md#stopping-an-environment +The following are example projects that use Review Apps with: + +- [NGINX](https://gitlab.com/gitlab-examples/review-apps-nginx). +- [OpenShift](https://gitlab.com/gitlab-examples/review-apps-openshift). + +See also the video [Demo: Cloud Native Development with GitLab](https://www.youtube.com/watch?v=jfIyQEwrocw), which includes a Review Apps example. -- cgit v1.2.1 From c50fc090a5cc44304b14b0509c7e111d342b3bdc Mon Sep 17 00:00:00 2001 From: Mark Chao Date: Wed, 26 Sep 2018 11:47:24 +0800 Subject: Add Project#members_among to obtain only authorized users of the project --- app/models/project.rb | 12 ++++++++++++ spec/models/project_spec.rb | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/app/models/project.rb b/app/models/project.rb index 503fbc30768..59f088156c7 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1365,6 +1365,18 @@ class Project < ActiveRecord::Base end end + # Filters `users` to return only authorized users of the project + def members_among(users) + if users.is_a?(ActiveRecord::Relation) && !users.loaded? + authorized_users.merge(users) + else + return [] if users.empty? + + user_ids = authorized_users.where(users: { id: users.map(&:id) }).pluck(:id) + users.select { |user| user_ids.include?(user.id) } + end + end + def default_branch @default_branch ||= repository.root_ref if repository.exists? end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index afc9ea1917e..d15ba89efb5 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -3995,6 +3995,49 @@ describe Project do end end + context '#members_among' do + let(:users) { create_list(:user, 3) } + set(:group) { create(:group) } + set(:project) { create(:project, namespace: group) } + + before do + project.add_guest(users.first) + project.group.add_maintainer(users.last) + end + + context 'when users is an Array' do + it 'returns project members among the users' do + expect(project.members_among(users)).to eq([users.first, users.last]) + end + + it 'maintains input order' do + expect(project.members_among(users.reverse)).to eq([users.last, users.first]) + end + + it 'returns empty array if users is empty' do + result = project.members_among([]) + + expect(result).to be_empty + end + end + + context 'when users is a relation' do + it 'returns project members among the users' do + result = project.members_among(User.where(id: users.map(&:id))) + + expect(result).to be_a(ActiveRecord::Relation) + expect(result).to eq([users.first, users.last]) + end + + it 'returns empty relation if users is empty' do + result = project.members_among(User.none) + + expect(result).to be_a(ActiveRecord::Relation) + expect(result).to be_empty + end + end + end + def rugged_config Gitlab::GitalyClient::StorageSettings.allow_disk_access do project.repository.rugged.config -- cgit v1.2.1 From 76a1a7a29d3b680b9be98051b57d6e0a2a9c8d3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarka=20Ko=C5=A1anov=C3=A1?= Date: Mon, 1 Oct 2018 13:45:15 +0200 Subject: Extract status count key to a method --- app/finders/issuable_finder.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 251a559878a..fcb6ffaa993 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -128,7 +128,7 @@ class IssuableFinder labels_count = 1 if use_cte_for_search? finder.execute.reorder(nil).group(:state).count.each do |key, value| - counts[Array(key).last.to_sym] += value / labels_count + counts[count_key(key)] += value / labels_count end counts[:all] = counts.values.sum @@ -297,6 +297,10 @@ class IssuableFinder klass.all end + def count_key(value) + Array(value).last.to_sym + end + # rubocop: disable CodeReuse/ActiveRecord def by_scope(items) return items.none if current_user_related? && !current_user -- cgit v1.2.1 From 4552a9f9fb14b82ae9c0b6b8cf971b0517721a75 Mon Sep 17 00:00:00 2001 From: Lukas Eipert Date: Thu, 6 Sep 2018 16:36:05 +0200 Subject: Improve performance of LazyLoader by using IntersectionObserver Every browser which supports IntersectionObserver will now use it over observing scroll and resize events. Older browsers without support fall back on the previous behavior. Additionally the MutationObserver can be enabled and disabled manually via the helper method `startContentObserver` and `stopContentObserver`. This might prove useful on pages where we manipulate the DOM extensively. --- app/assets/javascripts/lazy_loader.js | 107 ++++++++++-- .../35476-lazy-image-intersectionobserver.yml | 6 + spec/javascripts/lazy_loader_spec.js | 185 +++++++++++++++++++-- 3 files changed, 266 insertions(+), 32 deletions(-) create mode 100644 changelogs/unreleased/35476-lazy-image-intersectionobserver.yml diff --git a/app/assets/javascripts/lazy_loader.js b/app/assets/javascripts/lazy_loader.js index bd2212edec7..61b4862b4e3 100644 --- a/app/assets/javascripts/lazy_loader.js +++ b/app/assets/javascripts/lazy_loader.js @@ -2,54 +2,114 @@ import _ from 'underscore'; export const placeholderImage = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; -const SCROLL_THRESHOLD = 300; +const SCROLL_THRESHOLD = 500; export default class LazyLoader { constructor(options = {}) { + this.intersectionObserver = null; this.lazyImages = []; this.observerNode = options.observerNode || '#content-body'; - const throttledScrollCheck = _.throttle(() => this.scrollCheck(), 300); - const debouncedElementsInView = _.debounce(() => this.checkElementsInView(), 300); - - window.addEventListener('scroll', throttledScrollCheck); - window.addEventListener('resize', debouncedElementsInView); - const scrollContainer = options.scrollContainer || window; - scrollContainer.addEventListener('load', () => this.loadCheck()); + scrollContainer.addEventListener('load', () => this.register()); + } + + static supportsIntersectionObserver() { + return 'IntersectionObserver' in window; } + searchLazyImages() { - const that = this; requestIdleCallback( () => { - that.lazyImages = [].slice.call(document.querySelectorAll('.lazy')); + const lazyImages = [].slice.call(document.querySelectorAll('.lazy')); - if (that.lazyImages.length) { - that.checkElementsInView(); + if (LazyLoader.supportsIntersectionObserver()) { + if (this.intersectionObserver) { + lazyImages.forEach(img => this.intersectionObserver.observe(img)); + } + } else if (lazyImages.length) { + this.lazyImages = lazyImages; + this.checkElementsInView(); } }, { timeout: 500 }, ); } + startContentObserver() { const contentNode = document.querySelector(this.observerNode) || document.querySelector('body'); - if (contentNode) { - const observer = new MutationObserver(() => this.searchLazyImages()); + this.mutationObserver = new MutationObserver(() => this.searchLazyImages()); - observer.observe(contentNode, { + this.mutationObserver.observe(contentNode, { childList: true, subtree: true, }); } } - loadCheck() { - this.searchLazyImages(); + + stopContentObserver() { + if (this.mutationObserver) { + this.mutationObserver.takeRecords(); + this.mutationObserver.disconnect(); + this.mutationObserver = null; + } + } + + unregister() { + this.stopContentObserver(); + if (this.intersectionObserver) { + this.intersectionObserver.takeRecords(); + this.intersectionObserver.disconnect(); + this.intersectionObserver = null; + } + if (this.throttledScrollCheck) { + window.removeEventListener('scroll', this.throttledScrollCheck); + } + if (this.debouncedElementsInView) { + window.removeEventListener('resize', this.debouncedElementsInView); + } + } + + register() { + if (LazyLoader.supportsIntersectionObserver()) { + this.startIntersectionObserver(); + } else { + this.startLegacyObserver(); + } this.startContentObserver(); + this.searchLazyImages(); } + + startIntersectionObserver = () => { + this.throttledElementsInView = _.throttle(() => this.checkElementsInView(), 300); + this.intersectionObserver = new IntersectionObserver(this.onIntersection, { + rootMargin: `${SCROLL_THRESHOLD}px 0px`, + thresholds: 0.1, + }); + }; + + onIntersection = entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + this.intersectionObserver.unobserve(entry.target); + this.lazyImages.push(entry.target); + } + }); + this.throttledElementsInView(); + }; + + startLegacyObserver() { + this.throttledScrollCheck = _.throttle(() => this.scrollCheck(), 300); + this.debouncedElementsInView = _.debounce(() => this.checkElementsInView(), 300); + window.addEventListener('scroll', this.throttledScrollCheck); + window.addEventListener('resize', this.debouncedElementsInView); + } + scrollCheck() { requestAnimationFrame(() => this.checkElementsInView()); } + checkElementsInView() { const scrollTop = window.pageYOffset; const visHeight = scrollTop + window.innerHeight + SCROLL_THRESHOLD; @@ -61,18 +121,29 @@ export default class LazyLoader { const imgTop = scrollTop + imgBoundRect.top; const imgBound = imgTop + imgBoundRect.height; - if (scrollTop < imgBound && visHeight > imgTop) { + if (scrollTop <= imgBound && visHeight >= imgTop) { requestAnimationFrame(() => { LazyLoader.loadImage(selectedImage); }); return false; } + /* + If we are scrolling fast, the img we watched intersecting could have left the view port. + So we are going watch for new intersections. + */ + if (LazyLoader.supportsIntersectionObserver()) { + if (this.intersectionObserver) { + this.intersectionObserver.observe(selectedImage); + } + return false; + } return true; } return false; }); } + static loadImage(img) { if (img.getAttribute('data-src')) { let imgUrl = img.getAttribute('data-src'); diff --git a/changelogs/unreleased/35476-lazy-image-intersectionobserver.yml b/changelogs/unreleased/35476-lazy-image-intersectionobserver.yml new file mode 100644 index 00000000000..c2c760c0ee0 --- /dev/null +++ b/changelogs/unreleased/35476-lazy-image-intersectionobserver.yml @@ -0,0 +1,6 @@ +--- +title: Improve lazy image loading performance by using IntersectionObserver where + available +merge_request: 21565 +author: +type: performance diff --git a/spec/javascripts/lazy_loader_spec.js b/spec/javascripts/lazy_loader_spec.js index c177d79b9e0..eac4756e8a9 100644 --- a/spec/javascripts/lazy_loader_spec.js +++ b/spec/javascripts/lazy_loader_spec.js @@ -1,57 +1,214 @@ import LazyLoader from '~/lazy_loader'; +import { TEST_HOST } from './test_constants'; let lazyLoader = null; +const execImmediately = callback => { + callback(); +}; + describe('LazyLoader', function() { preloadFixtures('issues/issue_with_comment.html.raw'); - beforeEach(function() { - loadFixtures('issues/issue_with_comment.html.raw'); - lazyLoader = new LazyLoader({ - observerNode: 'body', + describe('with IntersectionObserver disabled', () => { + beforeEach(function() { + loadFixtures('issues/issue_with_comment.html.raw'); + + lazyLoader = new LazyLoader({ + observerNode: 'foobar', + }); + + spyOn(LazyLoader, 'supportsIntersectionObserver').and.callFake(() => false); + + spyOn(LazyLoader, 'loadImage').and.callThrough(); + + spyOn(window, 'requestAnimationFrame').and.callFake(execImmediately); + spyOn(window, 'requestIdleCallback').and.callFake(execImmediately); + + // Doing everything that happens normally in onload + lazyLoader.register(); + }); + + afterEach(() => { + lazyLoader.unregister(); + }); + + it('should copy value from data-src to src for img 1', function(done) { + const img = document.querySelectorAll('img[data-src]')[0]; + const originalDataSrc = img.getAttribute('data-src'); + img.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).toHaveBeenCalled(); + expect(img.getAttribute('src')).toBe(originalDataSrc); + expect(img).toHaveClass('js-lazy-loaded'); + done(); + }, 50); + }); + + it('should lazy load dynamically added data-src images', function(done) { + const newImg = document.createElement('img'); + const testPath = `${TEST_HOST}/img/testimg.png`; + newImg.className = 'lazy'; + newImg.setAttribute('data-src', testPath); + document.body.appendChild(newImg); + newImg.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).toHaveBeenCalled(); + expect(newImg.getAttribute('src')).toBe(testPath); + expect(newImg).toHaveClass('js-lazy-loaded'); + done(); + }, 50); + }); + + it('should not alter normal images', function(done) { + const newImg = document.createElement('img'); + const testPath = `${TEST_HOST}/img/testimg.png`; + newImg.setAttribute('src', testPath); + document.body.appendChild(newImg); + newImg.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).not.toHaveBeenCalled(); + expect(newImg).not.toHaveClass('js-lazy-loaded'); + done(); + }, 50); + }); + + it('should not load dynamically added pictures if content observer is turned off', done => { + lazyLoader.stopContentObserver(); + + const newImg = document.createElement('img'); + const testPath = `${TEST_HOST}/img/testimg.png`; + newImg.className = 'lazy'; + newImg.setAttribute('data-src', testPath); + document.body.appendChild(newImg); + newImg.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).not.toHaveBeenCalled(); + expect(newImg).not.toHaveClass('js-lazy-loaded'); + done(); + }, 50); + }); + + it('should load dynamically added pictures if content observer is turned off and on again', done => { + lazyLoader.stopContentObserver(); + lazyLoader.startContentObserver(); + + const newImg = document.createElement('img'); + const testPath = `${TEST_HOST}/img/testimg.png`; + newImg.className = 'lazy'; + newImg.setAttribute('data-src', testPath); + document.body.appendChild(newImg); + newImg.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).toHaveBeenCalled(); + expect(newImg).toHaveClass('js-lazy-loaded'); + done(); + }, 50); }); - // Doing everything that happens normally in onload - lazyLoader.loadCheck(); }); - describe('behavior', function() { + + describe('with IntersectionObserver enabled', () => { + beforeEach(function() { + loadFixtures('issues/issue_with_comment.html.raw'); + + lazyLoader = new LazyLoader({ + observerNode: 'foobar', + }); + + spyOn(LazyLoader, 'loadImage').and.callThrough(); + + spyOn(window, 'requestAnimationFrame').and.callFake(execImmediately); + spyOn(window, 'requestIdleCallback').and.callFake(execImmediately); + + // Doing everything that happens normally in onload + lazyLoader.register(); + }); + + afterEach(() => { + lazyLoader.unregister(); + }); + it('should copy value from data-src to src for img 1', function(done) { const img = document.querySelectorAll('img[data-src]')[0]; const originalDataSrc = img.getAttribute('data-src'); img.scrollIntoView(); setTimeout(() => { + expect(LazyLoader.loadImage).toHaveBeenCalled(); expect(img.getAttribute('src')).toBe(originalDataSrc); - expect(document.getElementsByClassName('js-lazy-loaded').length).toBeGreaterThan(0); + expect(img).toHaveClass('js-lazy-loaded'); done(); - }, 100); + }, 50); }); it('should lazy load dynamically added data-src images', function(done) { const newImg = document.createElement('img'); - const testPath = '/img/testimg.png'; + const testPath = `${TEST_HOST}/img/testimg.png`; newImg.className = 'lazy'; newImg.setAttribute('data-src', testPath); document.body.appendChild(newImg); newImg.scrollIntoView(); setTimeout(() => { + expect(LazyLoader.loadImage).toHaveBeenCalled(); expect(newImg.getAttribute('src')).toBe(testPath); - expect(document.getElementsByClassName('js-lazy-loaded').length).toBeGreaterThan(0); + expect(newImg).toHaveClass('js-lazy-loaded'); done(); - }, 100); + }, 50); }); it('should not alter normal images', function(done) { const newImg = document.createElement('img'); - const testPath = '/img/testimg.png'; + const testPath = `${TEST_HOST}/img/testimg.png`; newImg.setAttribute('src', testPath); document.body.appendChild(newImg); newImg.scrollIntoView(); setTimeout(() => { + expect(LazyLoader.loadImage).not.toHaveBeenCalled(); + expect(newImg).not.toHaveClass('js-lazy-loaded'); + done(); + }, 50); + }); + + it('should not load dynamically added pictures if content observer is turned off', done => { + lazyLoader.stopContentObserver(); + + const newImg = document.createElement('img'); + const testPath = `${TEST_HOST}/img/testimg.png`; + newImg.className = 'lazy'; + newImg.setAttribute('data-src', testPath); + document.body.appendChild(newImg); + newImg.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).not.toHaveBeenCalled(); expect(newImg).not.toHaveClass('js-lazy-loaded'); done(); - }, 100); + }, 50); + }); + + it('should load dynamically added pictures if content observer is turned off and on again', done => { + lazyLoader.stopContentObserver(); + lazyLoader.startContentObserver(); + + const newImg = document.createElement('img'); + const testPath = `${TEST_HOST}/img/testimg.png`; + newImg.className = 'lazy'; + newImg.setAttribute('data-src', testPath); + document.body.appendChild(newImg); + newImg.scrollIntoView(); + + setTimeout(() => { + expect(LazyLoader.loadImage).toHaveBeenCalled(); + expect(newImg).toHaveClass('js-lazy-loaded'); + done(); + }, 50); }); }); }); -- cgit v1.2.1 From b18345fac49e3b0ef35a22f3d784aef9f6bf9209 Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Mon, 1 Oct 2018 10:53:08 -0300 Subject: Filter user sensitive data from discussions JSON --- app/serializers/discussion_entity.rb | 2 +- .../api/schemas/entities/note_user_entity.json | 21 +++++++++++++++++++++ spec/serializers/discussion_entity_spec.rb | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/api/schemas/entities/note_user_entity.json diff --git a/app/serializers/discussion_entity.rb b/app/serializers/discussion_entity.rb index ebe76c9fcda..b6786a0d597 100644 --- a/app/serializers/discussion_entity.rb +++ b/app/serializers/discussion_entity.rb @@ -27,7 +27,7 @@ class DiscussionEntity < Grape::Entity expose :resolved?, as: :resolved expose :resolved_by_push?, as: :resolved_by_push - expose :resolved_by + expose :resolved_by, using: NoteUserEntity expose :resolved_at expose :resolve_path, if: -> (d, _) { d.resolvable? } do |discussion| resolve_project_merge_request_discussion_path(discussion.project, discussion.noteable, discussion.id) diff --git a/spec/fixtures/api/schemas/entities/note_user_entity.json b/spec/fixtures/api/schemas/entities/note_user_entity.json new file mode 100644 index 00000000000..9b838054563 --- /dev/null +++ b/spec/fixtures/api/schemas/entities/note_user_entity.json @@ -0,0 +1,21 @@ +{ + "type": "object", + "required": [ + "id", + "state", + "avatar_url", + "path", + "name", + "username" + ], + "properties": { + "id": { "type": "integer" }, + "state": { "type": "string" }, + "avatar_url": { "type": "string" }, + "path": { "type": "string" }, + "name": { "type": "string" }, + "username": { "type": "string" }, + "status_tooltip_html": { "$ref": "../types/nullable_string.json" } + }, + "additionalProperties": false +} diff --git a/spec/serializers/discussion_entity_spec.rb b/spec/serializers/discussion_entity_spec.rb index 378540a35b6..0590304e832 100644 --- a/spec/serializers/discussion_entity_spec.rb +++ b/spec/serializers/discussion_entity_spec.rb @@ -36,6 +36,13 @@ describe DiscussionEntity do ) end + it 'resolved_by matches note_user_entity schema' do + Notes::ResolveService.new(note.project, user).execute(note) + + expect(subject[:resolved_by].with_indifferent_access) + .to match_schema('entities/note_user_entity') + end + context 'when is LegacyDiffDiscussion' do let(:project) { create(:project) } let(:merge_request) { create(:merge_request, source_project: project) } -- cgit v1.2.1 From f09303b00aa61825d2fed22aa04d8c6d1dace1b0 Mon Sep 17 00:00:00 2001 From: Mark Chao Date: Fri, 28 Sep 2018 17:54:32 +0800 Subject: Fix MR discussion not loaded issue Display `formatter` as the sole content of `position` object. This means `diff_file` data is not referenced, which is the caseu of "IOError: not opened for reading". --- app/assets/javascripts/diffs/store/utils.js | 5 +- app/assets/javascripts/notes/stores/getters.js | 4 +- .../unreleased/51958-fix-mr-discussion-loading.yml | 5 ++ lib/gitlab/diff/position.rb | 4 + .../diffs/mock_data/diff_discussions.js | 16 ++-- spec/javascripts/diffs/store/actions_spec.js | 9 +-- spec/javascripts/diffs/store/mutations_spec.js | 16 +--- spec/javascripts/diffs/store/utils_spec.js | 16 +--- spec/javascripts/notes/mock_data.js | 24 ++---- spec/lib/gitlab/diff/position_spec.rb | 88 ++++++++++++++-------- 10 files changed, 96 insertions(+), 91 deletions(-) create mode 100644 changelogs/unreleased/51958-fix-mr-discussion-loading.yml diff --git a/app/assets/javascripts/diffs/store/utils.js b/app/assets/javascripts/diffs/store/utils.js index 631e3de311e..8c13aaa1a7e 100644 --- a/app/assets/javascripts/diffs/store/utils.js +++ b/app/assets/javascripts/diffs/store/utils.js @@ -244,6 +244,7 @@ export function getDiffPositionByLineCode(diffFiles) { oldLine, newLine, lineCode, + positionType: 'text', }; } }); @@ -259,8 +260,8 @@ export function isDiscussionApplicableToLine({ discussion, diffPosition, latestD const { lineCode, ...diffPositionCopy } = diffPosition; if (discussion.original_position && discussion.position) { - const originalRefs = convertObjectPropsToCamelCase(discussion.original_position.formatter); - const refs = convertObjectPropsToCamelCase(discussion.position.formatter); + const originalRefs = convertObjectPropsToCamelCase(discussion.original_position); + const refs = convertObjectPropsToCamelCase(discussion.position); return _.isEqual(refs, diffPositionCopy) || _.isEqual(originalRefs, diffPositionCopy); } diff --git a/app/assets/javascripts/notes/stores/getters.js b/app/assets/javascripts/notes/stores/getters.js index d4babf1fab2..75832884711 100644 --- a/app/assets/javascripts/notes/stores/getters.js +++ b/app/assets/javascripts/notes/stores/getters.js @@ -126,8 +126,8 @@ export const unresolvedDiscussionsIdsByDiff = (state, getters) => const filenameComparison = a.diff_file.file_path.localeCompare(b.diff_file.file_path); // Get the line numbers, to compare within the same file - const aLines = [a.position.formatter.new_line, a.position.formatter.old_line]; - const bLines = [b.position.formatter.new_line, b.position.formatter.old_line]; + const aLines = [a.position.new_line, a.position.old_line]; + const bLines = [b.position.new_line, b.position.old_line]; return filenameComparison < 0 || (filenameComparison === 0 && diff --git a/changelogs/unreleased/51958-fix-mr-discussion-loading.yml b/changelogs/unreleased/51958-fix-mr-discussion-loading.yml new file mode 100644 index 00000000000..f80ee51291d --- /dev/null +++ b/changelogs/unreleased/51958-fix-mr-discussion-loading.yml @@ -0,0 +1,5 @@ +--- +title: Fix loading issue on some merge request discussion +merge_request: 21982 +author: +type: fixed diff --git a/lib/gitlab/diff/position.rb b/lib/gitlab/diff/position.rb index fc280f96ec1..f967494199e 100644 --- a/lib/gitlab/diff/position.rb +++ b/lib/gitlab/diff/position.rb @@ -69,6 +69,10 @@ module Gitlab JSON.generate(formatter.to_h, opts) end + def as_json(opts = nil) + to_h.as_json(opts) + end + def type formatter.line_age end diff --git a/spec/javascripts/diffs/mock_data/diff_discussions.js b/spec/javascripts/diffs/mock_data/diff_discussions.js index b29a22da7c2..0ad214ea4a4 100644 --- a/spec/javascripts/diffs/mock_data/diff_discussions.js +++ b/spec/javascripts/diffs/mock_data/diff_discussions.js @@ -2,15 +2,13 @@ export default { id: '6b232e05bea388c6b043ccc243ba505faac04ea8', reply_id: '6b232e05bea388c6b043ccc243ba505faac04ea8', position: { - formatter: { - old_line: null, - new_line: 2, - old_path: 'CHANGELOG', - new_path: 'CHANGELOG', - base_sha: 'e63f41fe459e62e1228fcef60d7189127aeba95a', - start_sha: 'd9eaefe5a676b820c57ff18cf5b68316025f7962', - head_sha: 'c48ee0d1bf3b30453f5b32250ce03134beaa6d13', - }, + old_line: null, + new_line: 2, + old_path: 'CHANGELOG', + new_path: 'CHANGELOG', + base_sha: 'e63f41fe459e62e1228fcef60d7189127aeba95a', + start_sha: 'd9eaefe5a676b820c57ff18cf5b68316025f7962', + head_sha: 'c48ee0d1bf3b30453f5b32250ce03134beaa6d13', }, line_code: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2', expanded: true, diff --git a/spec/javascripts/diffs/store/actions_spec.js b/spec/javascripts/diffs/store/actions_spec.js index 05b39bad6ea..30cd6a09a0c 100644 --- a/spec/javascripts/diffs/store/actions_spec.js +++ b/spec/javascripts/diffs/store/actions_spec.js @@ -145,12 +145,8 @@ describe('DiffsStoreActions', () => { }, fileHash: 'ABC', resolvable: true, - position: { - formatter: diffPosition, - }, - original_position: { - formatter: diffPosition, - }, + position: diffPosition, + original_position: diffPosition, }; const discussions = reduceDiscussionsToLineCodes([singleDiscussion]); @@ -175,6 +171,7 @@ describe('DiffsStoreActions', () => { oldLine: 5, oldPath: 'file2', lineCode: 'ABC_1_1', + positionType: 'text', }, }, }, diff --git a/spec/javascripts/diffs/store/mutations_spec.js b/spec/javascripts/diffs/store/mutations_spec.js index 9a5d8dfbd15..26bf63c4b99 100644 --- a/spec/javascripts/diffs/store/mutations_spec.js +++ b/spec/javascripts/diffs/store/mutations_spec.js @@ -193,24 +193,16 @@ describe('DiffsStoreMutations', () => { line_code: 'ABC_1', diff_discussion: true, resolvable: true, - original_position: { - formatter: diffPosition, - }, - position: { - formatter: diffPosition, - }, + original_position: diffPosition, + position: diffPosition, }, { id: 2, line_code: 'ABC_1', diff_discussion: true, resolvable: true, - original_position: { - formatter: diffPosition, - }, - position: { - formatter: diffPosition, - }, + original_position: diffPosition, + position: diffPosition, }, ]; diff --git a/spec/javascripts/diffs/store/utils_spec.js b/spec/javascripts/diffs/store/utils_spec.js index 897cd1483aa..85009a5838c 100644 --- a/spec/javascripts/diffs/store/utils_spec.js +++ b/spec/javascripts/diffs/store/utils_spec.js @@ -333,20 +333,12 @@ describe('DiffsStoreUtils', () => { const discussions = { upToDateDiscussion1: { - original_position: { - formatter: diffPosition, - }, - position: { - formatter: wrongDiffPosition, - }, + original_position: diffPosition, + position: wrongDiffPosition, }, outDatedDiscussion1: { - original_position: { - formatter: wrongDiffPosition, - }, - position: { - formatter: wrongDiffPosition, - }, + original_position: wrongDiffPosition, + position: wrongDiffPosition, }, }; diff --git a/spec/javascripts/notes/mock_data.js b/spec/javascripts/notes/mock_data.js index 1f030e5af28..9a0e7f34a9c 100644 --- a/spec/javascripts/notes/mock_data.js +++ b/spec/javascripts/notes/mock_data.js @@ -1177,10 +1177,8 @@ export const discussion1 = { file_path: 'about.md', }, position: { - formatter: { - new_line: 50, - old_line: null, - }, + new_line: 50, + old_line: null, }, notes: [ { @@ -1197,10 +1195,8 @@ export const resolvedDiscussion1 = { file_path: 'about.md', }, position: { - formatter: { - new_line: 50, - old_line: null, - }, + new_line: 50, + old_line: null, }, notes: [ { @@ -1217,10 +1213,8 @@ export const discussion2 = { file_path: 'README.md', }, position: { - formatter: { - new_line: null, - old_line: 20, - }, + new_line: null, + old_line: 20, }, notes: [ { @@ -1237,10 +1231,8 @@ export const discussion3 = { file_path: 'README.md', }, position: { - formatter: { - new_line: 21, - old_line: null, - }, + new_line: 21, + old_line: null, }, notes: [ { diff --git a/spec/lib/gitlab/diff/position_spec.rb b/spec/lib/gitlab/diff/position_spec.rb index 677eb373d22..2d94356f386 100644 --- a/spec/lib/gitlab/diff/position_spec.rb +++ b/spec/lib/gitlab/diff/position_spec.rb @@ -5,6 +5,34 @@ describe Gitlab::Diff::Position do let(:project) { create(:project, :repository) } + let(:args_for_img) do + { + old_path: "files/any.img", + new_path: "files/any.img", + base_sha: nil, + head_sha: nil, + start_sha: nil, + width: 100, + height: 100, + x: 1, + y: 100, + position_type: "image" + } + end + + let(:args_for_text) do + { + old_path: "files/ruby/popen.rb", + new_path: "files/ruby/popen.rb", + old_line: nil, + new_line: 14, + base_sha: nil, + head_sha: nil, + start_sha: nil, + position_type: "text" + } + end + describe "position for an added text file" do let(:commit) { project.commit("2ea1f3dec713d940208fb5ce4a38765ecb5d3f73") } @@ -529,53 +557,49 @@ describe Gitlab::Diff::Position do end end + describe "#as_json" do + shared_examples "diff position json" do + let(:diff_position) { described_class.new(args) } + + it "returns the position as JSON" do + expect(diff_position.as_json).to eq(args.stringify_keys) + end + end + + context "for text positon" do + let(:args) { args_for_text } + + it_behaves_like "diff position json" + end + + context "for image positon" do + let(:args) { args_for_img } + + it_behaves_like "diff position json" + end + end + describe "#to_json" do shared_examples "diff position json" do + let(:diff_position) { described_class.new(args) } + it "returns the position as JSON" do - expect(JSON.parse(diff_position.to_json)).to eq(hash.stringify_keys) + expect(JSON.parse(diff_position.to_json)).to eq(args.stringify_keys) end it "works when nested under another hash" do - expect(JSON.parse(JSON.generate(pos: diff_position))).to eq('pos' => hash.stringify_keys) + expect(JSON.parse(JSON.generate(pos: diff_position))).to eq('pos' => args.stringify_keys) end end context "for text positon" do - let(:hash) do - { - old_path: "files/ruby/popen.rb", - new_path: "files/ruby/popen.rb", - old_line: nil, - new_line: 14, - base_sha: nil, - head_sha: nil, - start_sha: nil, - position_type: "text" - } - end - - let(:diff_position) { described_class.new(hash) } + let(:args) { args_for_text } it_behaves_like "diff position json" end context "for image positon" do - let(:hash) do - { - old_path: "files/any.img", - new_path: "files/any.img", - base_sha: nil, - head_sha: nil, - start_sha: nil, - width: 100, - height: 100, - x: 1, - y: 100, - position_type: "image" - } - end - - let(:diff_position) { described_class.new(hash) } + let(:args) { args_for_img } it_behaves_like "diff position json" end -- cgit v1.2.1 From 145b4601e132d4cfd85659b07574f3472ef94edb Mon Sep 17 00:00:00 2001 From: Lukas Eipert Date: Mon, 1 Oct 2018 16:39:22 +0200 Subject: Add yarn integrity hashes yarn >= 1.10.0 adds sha512 integrity checks to the yarn.lock file. For more details see https://github.com/yarnpkg/yarn/pull/5042. The behaviour is backwards compatible. --- yarn.lock | 1162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1162 insertions(+) diff --git a/yarn.lock b/yarn.lock index 33849642705..20b587d1fc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,18 +5,21 @@ "@babel/code-frame@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz#bd71d9b192af978df915829d39d4094456439a0c" + integrity sha1-vXHZsZKvl435FYKdOdQJRFZDmgw= dependencies: "@babel/highlight" "7.0.0-beta.51" "@babel/code-frame@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" "@babel/generator@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" + integrity sha1-bHV1/952HQdIXgS67cA5LG2eMPY= dependencies: "@babel/types" "7.0.0-beta.51" jsesc "^2.5.1" @@ -27,6 +30,7 @@ "@babel/generator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" + integrity sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q== dependencies: "@babel/types" "^7.0.0" jsesc "^2.5.1" @@ -37,6 +41,7 @@ "@babel/helper-function-name@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz#21b4874a227cf99ecafcc30a90302da5a2640561" + integrity sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE= dependencies: "@babel/helper-get-function-arity" "7.0.0-beta.51" "@babel/template" "7.0.0-beta.51" @@ -45,6 +50,7 @@ "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== dependencies: "@babel/helper-get-function-arity" "^7.0.0" "@babel/template" "^7.1.0" @@ -53,30 +59,35 @@ "@babel/helper-get-function-arity@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz#3281b2d045af95c172ce91b20825d85ea4676411" + integrity sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE= dependencies: "@babel/types" "7.0.0-beta.51" "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== dependencies: "@babel/types" "^7.0.0" "@babel/helper-split-export-declaration@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz#8a6c3f66c4d265352fc077484f9f6e80a51ab978" + integrity sha1-imw/ZsTSZTUvwHdIT59ugKUauXg= dependencies: "@babel/types" "7.0.0-beta.51" "@babel/helper-split-export-declaration@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== dependencies: "@babel/types" "^7.0.0" "@babel/highlight@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d" + integrity sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0= dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -85,6 +96,7 @@ "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -93,14 +105,17 @@ "@babel/parser@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" + integrity sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY= "@babel/parser@^7.0.0", "@babel/parser@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.0.tgz#a7cd42cb3c12aec52e24375189a47b39759b783e" + integrity sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg== "@babel/template@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.51.tgz#9602a40aebcf357ae9677e2532ef5fc810f5fbff" + integrity sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8= dependencies: "@babel/code-frame" "7.0.0-beta.51" "@babel/parser" "7.0.0-beta.51" @@ -110,6 +125,7 @@ "@babel/template@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.0.tgz#58cc9572e1bfe24fe1537fdf99d839d53e517e22" + integrity sha512-yZ948B/pJrwWGY6VxG6XRFsVTee3IQ7bihq9zFpM00Vydu6z5Xwg0C3J644kxI9WOTzd+62xcIsQ+AT1MGhqhA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.1.0" @@ -118,6 +134,7 @@ "@babel/traverse@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.51.tgz#981daf2cec347a6231d3aa1d9e1803b03aaaa4a8" + integrity sha1-mB2vLOw0emIx06odnhgDsDqqpKg= dependencies: "@babel/code-frame" "7.0.0-beta.51" "@babel/generator" "7.0.0-beta.51" @@ -133,6 +150,7 @@ "@babel/traverse@^7.0.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.0.tgz#503ec6669387efd182c3888c4eec07bcc45d91b2" + integrity sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.0.0" @@ -147,6 +165,7 @@ "@babel/types@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.51.tgz#d802b7b543b5836c778aa691797abf00f3d97ea9" + integrity sha1-2AK3tUO1g2x3iqaReXq/APPZfqk= dependencies: esutils "^2.0.2" lodash "^4.17.5" @@ -155,6 +174,7 @@ "@babel/types@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" + integrity sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -163,10 +183,12 @@ "@gitlab-org/gitlab-svgs@^1.23.0", "@gitlab-org/gitlab-svgs@^1.29.0": version "1.29.0" resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.29.0.tgz#03b65b513f9099bbda6ecf94d673a2952f8c6c70" + integrity sha512-sCl6nP3ph36+8P3nrw9VanAR648rgOUEBlEoLPHkhKm79xB1dUkXGBtI0uaSJVgbJx40M1/Ts8HSdMv+PF3EIg== "@gitlab-org/gitlab-ui@^1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-ui/-/gitlab-ui-1.7.1.tgz#e9cce86cb7e34311405e705c1de674276b453f17" + integrity sha512-X12W39lFnWmfmYcHBokrauKvp6VLW9u0rFdgBXWlnrRL2hBShnyeBsBXKLMGUGnofMtgYv3iYO/rFW9IB79lFg== dependencies: "@gitlab-org/gitlab-svgs" "^1.23.0" bootstrap-vue "^2.0.0-rc.11" @@ -175,14 +197,17 @@ "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== "@types/events@*": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + integrity sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA== "@types/glob@^5": version "5.0.35" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.35.tgz#1ae151c802cece940443b5ac246925c85189f32a" + integrity sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg== dependencies: "@types/events" "*" "@types/minimatch" "*" @@ -191,22 +216,27 @@ "@types/jquery@^2.0.40": version "2.0.48" resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-2.0.48.tgz#3e90d8cde2d29015e5583017f7830cb3975b2eef" + integrity sha512-nNLzUrVjaRV/Ds1eHZLYTd7IZxs38cwwLSaqMJj8OTXY8xNUbxSK69bi9cMLvQ7dm/IBeQ1wHwQ0S1uYa0rd2w== "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": version "10.5.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.2.tgz#f19f05314d5421fe37e74153254201a7bf00a707" + integrity sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q== "@types/parse5@^5": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.0.tgz#9ae2106efc443d7c1e26570aa8247828c9c80f11" + integrity sha512-J5D3z703XTDIGQFYXsnU9uRCW9e9mMEFO0Kpe6kykyiboqziru/RlZ0hM2P+PKTG4NHG1SjLrqae/NrV2iJApQ== "@vue/component-compiler-utils@^2.0.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.2.0.tgz#bbbb7ed38a9a8a7c93abe7ef2e54a90a04b631b4" + integrity sha512-pS4zlcdD7BvedyB+IfiTfrbi6C977UMIfulSk8r6uL0BU46ZE2+fUj/zbSNSfVxeaj9ElmnSni5OMwF9np+b+w== dependencies: consolidate "^0.15.1" hash-sum "^1.0.2" @@ -221,6 +251,7 @@ "@webassemblyjs/ast@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" + integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== dependencies: "@webassemblyjs/helper-module-context" "1.7.6" "@webassemblyjs/helper-wasm-bytecode" "1.7.6" @@ -230,38 +261,46 @@ "@webassemblyjs/floating-point-hex-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" + integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== "@webassemblyjs/helper-api-error@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" + integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== "@webassemblyjs/helper-buffer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" + integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== "@webassemblyjs/helper-code-frame@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" + integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== dependencies: "@webassemblyjs/wast-printer" "1.7.6" "@webassemblyjs/helper-fsm@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" + integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== "@webassemblyjs/helper-module-context@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" + integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== dependencies: mamacro "^0.0.3" "@webassemblyjs/helper-wasm-bytecode@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" + integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== "@webassemblyjs/helper-wasm-section@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" + integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -271,22 +310,26 @@ "@webassemblyjs/ieee754@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" + integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" + integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== dependencies: "@xtuc/long" "4.2.1" "@webassemblyjs/utf8@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" + integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== "@webassemblyjs/wasm-edit@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" + integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -300,6 +343,7 @@ "@webassemblyjs/wasm-gen@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" + integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-wasm-bytecode" "1.7.6" @@ -310,6 +354,7 @@ "@webassemblyjs/wasm-opt@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" + integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -319,6 +364,7 @@ "@webassemblyjs/wasm-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" + integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-api-error" "1.7.6" @@ -330,6 +376,7 @@ "@webassemblyjs/wast-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" + integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/floating-point-hex-parser" "1.7.6" @@ -342,6 +389,7 @@ "@webassemblyjs/wast-printer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" + integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/wast-parser" "1.7.6" @@ -350,18 +398,22 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== abbrev@1, abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= dependencies: mime-types "~2.1.18" negotiator "0.6.1" @@ -369,34 +421,41 @@ accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: acorn-dynamic-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== dependencies: acorn "^5.0.0" acorn-jsx@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" + integrity sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== dependencies: acorn "^5.0.3" acorn@^5.0.0, acorn@^5.0.3, acorn@^5.6.0, acorn@^5.6.2, acorn@^5.7.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= ajv-errors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -406,50 +465,61 @@ ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.3: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" ansi-colors@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" + integrity sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg== ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= ansi-escapes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + integrity sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ== ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" @@ -457,16 +527,19 @@ anymatch@^2.0.0: append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + integrity sha1-126/jKlNJ24keja61EpLdKthGZE= dependencies: default-require-extensions "^1.0.0" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + integrity sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0= dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -474,70 +547,86 @@ are-we-there-yet@~1.1.2: argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= array-find@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" + integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-flatten@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= array-slice@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -546,48 +635,58 @@ asn1.js@^4.0.0: assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= dependencies: util "0.10.3" assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== async@1.x, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= async@^2.0.0, async@^2.1.4, async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== dependencies: lodash "^4.17.10" atob@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" + integrity sha1-GcenYEc3dEaPILLS0DNyrX1Mv10= autosize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/autosize/-/autosize-4.0.0.tgz#7a0599b1ba84d73bd7589b0d9da3870152c69237" + integrity sha1-egWZsbqE1zvXWJsNnaOHAVLGkjc= axios-mock-adapter@^1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.15.0.tgz#fbc06825d8302c95c3334d21023bba996255d45d" + integrity sha1-+8BoJdgwLJXDM00hAju6mWJV1F0= dependencies: deep-equal "^1.0.1" axios@^0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d" + integrity sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0= dependencies: follow-redirects "^1.2.5" is-buffer "^1.1.5" @@ -595,6 +694,7 @@ axios@^0.17.1: babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -603,6 +703,7 @@ babel-code-frame@^6.26.0: babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: babel-code-frame "^6.26.0" babel-generator "^6.26.0" @@ -627,6 +728,7 @@ babel-core@^6.26.0, babel-core@^6.26.3: babel-eslint@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -638,6 +740,7 @@ babel-eslint@^9.0.0: babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: babel-messages "^6.23.0" babel-runtime "^6.26.0" @@ -651,6 +754,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0: babel-helper-bindify-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA= dependencies: babel-runtime "^6.22.0" babel-traverse "^6.24.1" @@ -659,6 +763,7 @@ babel-helper-bindify-decorators@^6.24.1: babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= dependencies: babel-helper-explode-assignable-expression "^6.24.1" babel-runtime "^6.22.0" @@ -667,6 +772,7 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -676,6 +782,7 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.26.0" @@ -685,6 +792,7 @@ babel-helper-define-map@^6.24.1: babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= dependencies: babel-runtime "^6.22.0" babel-traverse "^6.24.1" @@ -693,6 +801,7 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-helper-explode-class@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes= dependencies: babel-helper-bindify-decorators "^6.24.1" babel-runtime "^6.22.0" @@ -702,6 +811,7 @@ babel-helper-explode-class@^6.24.1: babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= dependencies: babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" @@ -712,6 +822,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -719,6 +830,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -726,6 +838,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -733,6 +846,7 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" @@ -741,6 +855,7 @@ babel-helper-regex@^6.24.1: babel-helper-remap-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -751,6 +866,7 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= dependencies: babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" @@ -762,6 +878,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -769,6 +886,7 @@ babel-helpers@^6.24.1: babel-loader@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" + integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -777,18 +895,21 @@ babel-loader@^7.1.5: babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= dependencies: babel-runtime "^6.22.0" babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= dependencies: babel-runtime "^6.22.0" babel-plugin-istanbul@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.0.1.tgz#2ce7bf211f0d9480ff7fd294bd05e2fa555e31ea" + integrity sha512-MQXE+9sTKevc0S6pfYUdpF5aA9mktCg9Jh9hIl/RriGEuUbUqPOK94VBBAlHsz88yIoQSRfPeblA3cPuudMs6Q== dependencies: find-up "^3.0.0" istanbul-lib-instrument "^2.2.0" @@ -797,42 +918,52 @@ babel-plugin-istanbul@^5.0.1: babel-plugin-rewire@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz#822562d72ed2c84e47c0f95ee232c920853e9d89" + integrity sha512-JBZxczHw3tScS+djy6JPLMjblchGhLI89ep15H3SyjujIzlxo5nr6Yjo7AXotdeVczeBmWs0tF8PgJWDdgzAkQ== babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= babel-plugin-syntax-async-generators@^6.5.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= babel-plugin-syntax-decorators@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs= babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= babel-plugin-transform-async-generator-functions@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= dependencies: babel-helper-remap-async-to-generator "^6.24.1" babel-plugin-syntax-async-generators "^6.5.0" @@ -841,6 +972,7 @@ babel-plugin-transform-async-generator-functions@^6.24.1: babel-plugin-transform-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= dependencies: babel-helper-remap-async-to-generator "^6.24.1" babel-plugin-syntax-async-functions "^6.8.0" @@ -849,6 +981,7 @@ babel-plugin-transform-async-to-generator@^6.24.1: babel-plugin-transform-class-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= dependencies: babel-helper-function-name "^6.24.1" babel-plugin-syntax-class-properties "^6.8.0" @@ -858,6 +991,7 @@ babel-plugin-transform-class-properties@^6.24.1: babel-plugin-transform-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0= dependencies: babel-helper-explode-class "^6.24.1" babel-plugin-syntax-decorators "^6.13.0" @@ -868,6 +1002,7 @@ babel-plugin-transform-decorators@^6.24.1: babel-plugin-transform-define@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-1.3.0.tgz#94c5f9459c810c738cc7c50cbd44a31829d6f319" + integrity sha1-lMX5RZyBDHOMx8UMvUSjGCnW8xk= dependencies: lodash "4.17.4" traverse "0.6.6" @@ -875,18 +1010,21 @@ babel-plugin-transform-define@^1.3.0: babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= dependencies: babel-runtime "^6.26.0" babel-template "^6.26.0" @@ -897,6 +1035,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= dependencies: babel-helper-define-map "^6.24.1" babel-helper-function-name "^6.24.1" @@ -911,6 +1050,7 @@ babel-plugin-transform-es2015-classes@^6.24.1: babel-plugin-transform-es2015-computed-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -918,12 +1058,14 @@ babel-plugin-transform-es2015-computed-properties@^6.24.1: babel-plugin-transform-es2015-destructuring@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -931,12 +1073,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.24.1: babel-plugin-transform-es2015-for-of@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -945,12 +1089,14 @@ babel-plugin-transform-es2015-function-name@^6.24.1: babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" @@ -959,6 +1105,7 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1: babel-plugin-transform-es2015-modules-commonjs@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + integrity sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo= dependencies: babel-plugin-transform-strict-mode "^6.24.1" babel-runtime "^6.26.0" @@ -968,6 +1115,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1: babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -976,6 +1124,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1: babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" @@ -984,6 +1133,7 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1: babel-plugin-transform-es2015-object-super@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" @@ -991,6 +1141,7 @@ babel-plugin-transform-es2015-object-super@^6.24.1: babel-plugin-transform-es2015-parameters@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= dependencies: babel-helper-call-delegate "^6.24.1" babel-helper-get-function-arity "^6.24.1" @@ -1002,6 +1153,7 @@ babel-plugin-transform-es2015-parameters@^6.24.1: babel-plugin-transform-es2015-shorthand-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -1009,12 +1161,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.24.1: babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-sticky-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -1023,18 +1177,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.24.1: babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-typeof-symbol@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -1043,6 +1200,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1: babel-plugin-transform-exponentiation-operator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= dependencies: babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" babel-plugin-syntax-exponentiation-operator "^6.8.0" @@ -1051,6 +1209,7 @@ babel-plugin-transform-exponentiation-operator@^6.24.1: babel-plugin-transform-object-rest-spread@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" + integrity sha1-h11ryb52HFiirj/u5dxIldjH+SE= dependencies: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.22.0" @@ -1058,12 +1217,14 @@ babel-plugin-transform-object-rest-spread@^6.22.0: babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= dependencies: regenerator-transform "^0.10.0" babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -1071,6 +1232,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-polyfill@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + integrity sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0= dependencies: babel-runtime "^6.22.0" core-js "^2.4.0" @@ -1079,6 +1241,7 @@ babel-polyfill@6.23.0: babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-transform-es2015-arrow-functions "^6.22.0" @@ -1108,12 +1271,14 @@ babel-preset-es2015@^6.24.1: babel-preset-es2016@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" + integrity sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s= dependencies: babel-plugin-transform-exponentiation-operator "^6.24.1" babel-preset-es2017@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" + integrity sha1-WXvq37n38gi8/YoS6bKym4svFNE= dependencies: babel-plugin-syntax-trailing-function-commas "^6.22.0" babel-plugin-transform-async-to-generator "^6.24.1" @@ -1121,6 +1286,7 @@ babel-preset-es2017@^6.24.1: babel-preset-latest@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz#677de069154a7485c2d25c577c02f624b85b85e8" + integrity sha1-Z33gaRVKdIXC0lxXfAL2JLhbheg= dependencies: babel-preset-es2015 "^6.24.1" babel-preset-es2016 "^6.24.1" @@ -1129,6 +1295,7 @@ babel-preset-latest@^6.24.1: babel-preset-stage-2@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE= dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-plugin-transform-class-properties "^6.24.1" @@ -1138,6 +1305,7 @@ babel-preset-stage-2@^6.24.1: babel-preset-stage-3@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= dependencies: babel-plugin-syntax-trailing-function-commas "^6.22.0" babel-plugin-transform-async-generator-functions "^6.24.1" @@ -1148,6 +1316,7 @@ babel-preset-stage-3@^6.24.1: babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -1160,6 +1329,7 @@ babel-register@^6.26.0: babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -1167,6 +1337,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -1177,6 +1348,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -1191,6 +1363,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -1200,30 +1373,37 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26 babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= base64-js@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + integrity sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w== base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -1236,16 +1416,19 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= dependencies: callsite "1.0.0" bfj@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" + integrity sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ== dependencies: bluebird "^3.5.1" check-types "^7.3.0" @@ -1255,18 +1438,22 @@ bfj@^6.1.1: big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + integrity sha1-RqoXUftqL5PuXmibsQh9SxTGwgU= binaryextensions@2: version "2.1.1" resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" + integrity sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA== blackst0ne-mermaid@^7.1.0-fixed: version "7.1.0-fixed" resolved "https://registry.yarnpkg.com/blackst0ne-mermaid/-/blackst0ne-mermaid-7.1.0-fixed.tgz#3707b3a113d78610e3068e18a588f46b4688de49" + integrity sha1-NwezoRPXhhDjBo4YpYj0a0aI3kk= dependencies: d3 "3.5.17" dagre-d3-renderer "^0.4.24" @@ -1278,18 +1465,22 @@ blackst0ne-mermaid@^7.1.0-fixed: blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= bluebird@^3.1.1, bluebird@^3.3.0, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== body-parser@1.18.2, body-parser@^1.16.1: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= dependencies: bytes "3.0.0" content-type "~1.0.4" @@ -1305,6 +1496,7 @@ body-parser@1.18.2, body-parser@^1.16.1: bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -1316,6 +1508,7 @@ bonjour@^3.5.0: bootstrap-vue@^2.0.0-rc.11: version "2.0.0-rc.11" resolved "https://registry.yarnpkg.com/bootstrap-vue/-/bootstrap-vue-2.0.0-rc.11.tgz#47aaa6d2a8d390477de75e636d8ea652b1d03f59" + integrity sha512-LxR+oL8yKr1DVoWUWTX+XhiT0xaTMH6142u2VSFDm4tewTH8HIrzN2YIl7HLZrw2DIuE9bRMIdWJqqn3aQe7Hw== dependencies: bootstrap "^4.1.1" lodash.get "^4.4.2" @@ -1327,10 +1520,12 @@ bootstrap-vue@^2.0.0-rc.11: bootstrap@4.1.1, bootstrap@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.1.1.tgz#3aec85000fa619085da8d2e4983dfd67cf2114cb" + integrity sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg== boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -1343,6 +1538,7 @@ boxen@^1.2.1: brace-expansion@^1.1.7, brace-expansion@^1.1.8: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1350,12 +1546,14 @@ brace-expansion@^1.1.7, brace-expansion@^1.1.8: braces@^0.1.2: version "0.1.5" resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= dependencies: expand-range "^0.1.0" braces@^2.3.0, braces@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + integrity sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -1373,10 +1571,12 @@ braces@^2.3.0, braces@^2.3.1: brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + integrity sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -1388,6 +1588,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo= dependencies: browserify-aes "^1.0.4" browserify-des "^1.0.0" @@ -1396,6 +1597,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0= dependencies: cipher-base "^1.0.1" des.js "^1.0.0" @@ -1404,6 +1606,7 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" randombytes "^2.0.1" @@ -1411,6 +1614,7 @@ browserify-rsa@^4.0.0: browserify-sign@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= dependencies: bn.js "^4.1.1" browserify-rsa "^4.0.0" @@ -1423,24 +1627,29 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + integrity sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA== buffer-indexof@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982" + integrity sha1-9U9kfE9OJSKLqmVqLlfkPV8nCYI= buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: version "4.9.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1449,22 +1658,27 @@ buffer@^4.3.0: builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= bytes@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" + integrity sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo= bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1483,6 +1697,7 @@ cacache@^10.0.4: cacache@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1502,6 +1717,7 @@ cacache@^11.2.0: cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -1516,6 +1732,7 @@ cache-base@^1.0.1: cache-loader@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5" + integrity sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw== dependencies: loader-utils "^1.1.0" mkdirp "^0.5.1" @@ -1525,6 +1742,7 @@ cache-loader@^1.2.2: cacheable-request@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= dependencies: clone-response "1.0.2" get-stream "3.0.0" @@ -1537,28 +1755,34 @@ cacheable-request@^2.1.1: caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= dependencies: callsites "^0.2.0" callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + integrity sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0= chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1569,6 +1793,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.3: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -1577,26 +1802,32 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= chardet@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.5.0.tgz#fe3ac73c00c3d865ffcc02a0682e2c20b6a06029" + integrity sha512-9ZTaoBaePSCFvNlNGrsyI8ZVACP2svUtq0DkM7t4K2ClAa96sqOIRjAzDTc8zXzFt1cZR46rRzLTiHFSJ+Qw0g== "charenc@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= chart.js@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-1.0.2.tgz#ad57d2229cfd8ccf5955147e8121b4911e69dfe7" + integrity sha1-rVfSIpz9jM9ZVRR+gSG0kR5p3+c= check-types@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.3.0.tgz#468f571a4435c24248f5fd0cb0e8d87c3c341e7d" + integrity sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0= chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: anymatch "^2.0.0" async-each "^1.0.0" @@ -1616,16 +1847,19 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= chrome-trace-event@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== dependencies: tslib "^1.9.0" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -1633,14 +1867,17 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== circular-json@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.5.tgz#64182ef359042d37cd8e767fc9de878b1e9447d3" + integrity sha512-13YaR6kiz0kBNmIVM87Io8Hp7bWOo4r61vkEANy8iH9R9bc6avud/1FT0SBpqR1RpIQADOh/Q+yHZDA1iL6ysA== class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -1650,24 +1887,29 @@ class-utils@^0.3.5: classlist-polyfill@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz#935bc2dfd9458a876b279617514638bcaa964a2e" + integrity sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4= cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + integrity sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao= clipboard@^1.5.5, clipboard@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b" + integrity sha1-Ng1taUbpmnof7zleQrqStem1oWs= dependencies: good-listener "^1.2.2" select "^1.1.2" @@ -1676,6 +1918,7 @@ clipboard@^1.5.5, clipboard@^1.7.1: cliui@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + integrity sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -1684,24 +1927,29 @@ cliui@^4.0.0: clone-response@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: mimic-response "^1.0.0" code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= codesandbox-api@^0.0.18: version "0.0.18" resolved "https://registry.yarnpkg.com/codesandbox-api/-/codesandbox-api-0.0.18.tgz#56b96b37533f80d20c21861e5e477d3557e613ca" + integrity sha512-DHLR8QQpMplNDF9GDbV8EevwmF9mlMBQwiWB8bZBnP2NQQbklthqjpBwNjah8qlDgfD7vQNNcwT8uIZ24WZb7Q== codesandbox-import-util-types@^1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/codesandbox-import-util-types/-/codesandbox-import-util-types-1.2.11.tgz#68e812f21d6b309e9a52eec5cf027c3e63b4c703" + integrity sha512-n1PC/OQ0tcD9o6N5TStBB/A7tKOggUjuhnNxUU5GnVol8vmKMMLvmC6tK+8iDovQb2X2+xoDCBnl5BBgZ5OcIQ== codesandbox-import-utils@^1.2.3: version "1.2.11" resolved "https://registry.yarnpkg.com/codesandbox-import-utils/-/codesandbox-import-utils-1.2.11.tgz#b88423a4a7c785175c784c84e87f5950820280e1" + integrity sha512-KPuf7tR/SMPSRfqjWbTrYvIaW6Yt9Ajt/1FB64RsOv4BLjBNo6CwLCCPoRHYcrAKSafpWkghTZ2Bffyz7EX7AA== dependencies: codesandbox-import-util-types "^1.2.11" istextorbinary "^2.2.1" @@ -1710,6 +1958,7 @@ codesandbox-import-utils@^1.2.3: collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -1717,60 +1966,73 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= colors@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= combine-lists@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= dependencies: lodash "^4.5.0" commander@2, commander@^2.18.0: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= compressible@~2.0.10: version "2.0.11" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" + integrity sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo= dependencies: mime-db ">= 1.29.0 < 2" compression-webpack-plugin@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-2.0.0.tgz#46476350c1eb27f783dccc79ac2f709baa2cffbc" + integrity sha512-bDgd7oTUZC8EkRx8j0sjyCfeiO+e5sFcfgaFcjVhfQf5lLya7oY2BczxcJ7IUuVjz5m6fy8IECFmVFew3xLk8Q== dependencies: cacache "^11.2.0" find-cache-dir "^2.0.0" @@ -1782,6 +2044,7 @@ compression-webpack-plugin@^2.0.0: compression@^1.5.2: version "1.7.0" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.0.tgz#030c9f198f1643a057d776a738e922da4373012d" + integrity sha1-AwyfGY8WQ6BX13anOOki2kNzAS0= dependencies: accepts "~1.3.3" bytes "2.5.0" @@ -1794,10 +2057,12 @@ compression@^1.5.2: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -1807,6 +2072,7 @@ concat-stream@^1.5.0: configstore@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" + integrity sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw== dependencies: dot-prop "^4.1.0" graceful-fs "^4.1.2" @@ -1818,10 +2084,12 @@ configstore@^3.0.0: connect-history-api-fallback@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + integrity sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk= connect@^3.6.0: version "3.6.6" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= dependencies: debug "2.6.9" finalhandler "1.1.0" @@ -1831,50 +2099,61 @@ connect@^3.6.0: console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= dependencies: date-now "^0.1.4" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== dependencies: bluebird "^3.1.1" constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -1886,22 +2165,27 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== core-js@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30= dependencies: bn.js "^4.1.0" elliptic "^6.0.0" @@ -1909,12 +2193,14 @@ create-ecdh@^4.0.0: create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: capture-stack-trace "^1.0.0" create-hash@^1.1.0, create-hash@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0= dependencies: cipher-base "^1.0.1" inherits "^2.0.1" @@ -1924,6 +2210,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.6" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -1935,12 +2222,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: cropper@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cropper/-/cropper-2.3.0.tgz#607461d4e7aa7a7fe15a26834b14b7f0c2801562" + integrity sha1-YHRh1Oeqen/hWiaDSxS38MKAFWI= dependencies: jquery ">= 1.9.1" cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -1949,6 +2238,7 @@ cross-spawn@^5.0.1: cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -1959,10 +2249,12 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: "crypt@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -1979,10 +2271,12 @@ crypto-browserify@^3.11.0: crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= css-loader@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" + integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" @@ -2000,10 +2294,12 @@ css-loader@^1.0.0: css-selector-parser@^1.3: version "1.3.0" resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.3.0.tgz#5f1ad43e2d8eefbfdc304fcd39a521664943e3eb" + integrity sha1-XxrUPi2O77/cME/NOaUhZklD4+s= css-selector-tokenizer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY= dependencies: cssesc "^0.1.0" fastparse "^1.1.1" @@ -2012,32 +2308,39 @@ css-selector-tokenizer@^0.7.0: cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: array-find-index "^1.0.1" custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= d3-array@1, d3-array@1.2.1, d3-array@^1.2.0, d3-array@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc" + integrity sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw== d3-axis@1.0.8, d3-axis@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa" + integrity sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo= d3-brush@1.0.4, d3-brush@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4" + integrity sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q= dependencies: d3-dispatch "1" d3-drag "1" @@ -2048,6 +2351,7 @@ d3-brush@1.0.4, d3-brush@^1.0.4: d3-chord@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.4.tgz#7dec4f0ba886f713fe111c45f763414f6f74ca2c" + integrity sha1-fexPC6iG9xP+ERxF92NBT290yiw= dependencies: d3-array "1" d3-path "1" @@ -2055,18 +2359,22 @@ d3-chord@1.0.4: d3-collection@1, d3-collection@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2" + integrity sha1-NC39EoN8kJdPM/HMCnha6lcNzcI= d3-color@1, d3-color@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b" + integrity sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs= d3-dispatch@1, d3-dispatch@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz#46e1491eaa9b58c358fce5be4e8bed626e7871f8" + integrity sha1-RuFJHqqbWMNY/OW+TovtYm54cfg= d3-drag@1, d3-drag@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.1.tgz#df8dd4c502fb490fc7462046a8ad98a5c479282d" + integrity sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ== dependencies: d3-dispatch "1" d3-selection "1" @@ -2074,6 +2382,7 @@ d3-drag@1, d3-drag@1.2.1: d3-dsv@1, d3-dsv@1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.0.8.tgz#907e240d57b386618dc56468bacfe76bf19764ae" + integrity sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A== dependencies: commander "2" iconv-lite "0.4" @@ -2082,10 +2391,12 @@ d3-dsv@1, d3-dsv@1.0.8: d3-ease@1, d3-ease@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e" + integrity sha1-aL+8NJM4o4DETYrMT7wzBKotjA4= d3-force@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.1.0.tgz#cebf3c694f1078fcc3d4daf8e567b2fbd70d4ea3" + integrity sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg== dependencies: d3-collection "1" d3-dispatch "1" @@ -2095,46 +2406,56 @@ d3-force@1.1.0: d3-format@1, d3-format@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.1.tgz#4e19ecdb081a341dafaf5f555ee956bcfdbf167f" + integrity sha512-U4zRVLDXW61bmqoo+OJ/V687e1T5nVd3TAKAJKgtpZ/P1JsMgyod0y9br+mlQOryTAACdiXI3wCjuERHFNp91w== d3-geo@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.9.1.tgz#157e3b0f917379d0f73bebfff3be537f49fa7356" + integrity sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA== dependencies: d3-array "1" d3-hierarchy@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz#a1c845c42f84a206bcf1c01c01098ea4ddaa7a26" + integrity sha1-ochFxC+Eoga88cAcAQmOpN2qeiY= d3-interpolate@1, d3-interpolate@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6" + integrity sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A== dependencies: d3-color "1" d3-path@1, d3-path@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764" + integrity sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q= d3-polygon@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.3.tgz#16888e9026460933f2b179652ad378224d382c62" + integrity sha1-FoiOkCZGCTPysXllKtN4Ik04LGI= d3-quadtree@1, d3-quadtree@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.3.tgz#ac7987e3e23fe805a990f28e1b50d38fcb822438" + integrity sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg= d3-queue@3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/d3-queue/-/d3-queue-3.0.7.tgz#c93a2e54b417c0959129d7d73f6cf7d4292e7618" + integrity sha1-yTouVLQXwJWRKdfXP2z31Ckudhg= d3-random@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.0.tgz#6642e506c6fa3a648595d2b2469788a8d12529d3" + integrity sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM= d3-request@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/d3-request/-/d3-request-1.0.6.tgz#a1044a9ef4ec28c824171c9379fae6d79474b19f" + integrity sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w== dependencies: d3-collection "1" d3-dispatch "1" @@ -2144,6 +2465,7 @@ d3-request@1.0.6: d3-scale@1.0.7, d3-scale@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" + integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== dependencies: d3-array "^1.2.0" d3-collection "1" @@ -2156,30 +2478,36 @@ d3-scale@1.0.7, d3-scale@^1.0.7: d3-selection@1, d3-selection@1.2.0, d3-selection@^1.1.0, d3-selection@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.2.0.tgz#1b8ec1c7cedadfb691f2ba20a4a3cfbeb71bbc88" + integrity sha512-xW2Pfcdzh1gOaoI+LGpPsLR2VpBQxuFoxvrvguK8ZmrJbPIVvfNG6pU6GNfK41D6Qz15sj61sbW/AFYuukwaLQ== d3-shape@1.2.0, d3-shape@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777" + integrity sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c= dependencies: d3-path "1" d3-time-format@2, d3-time-format@2.1.1, d3-time-format@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31" + integrity sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw== dependencies: d3-time "1" d3-time@1, d3-time@1.0.8, d3-time@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84" + integrity sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ== d3-timer@1, d3-timer@1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531" + integrity sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA== d3-transition@1, d3-transition@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039" + integrity sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ== dependencies: d3-color "1" d3-dispatch "1" @@ -2191,10 +2519,12 @@ d3-transition@1, d3-transition@1.1.1: d3-voronoi@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c" + integrity sha1-Fodmfo8TotFYyAwUgMWinLDYlzw= d3-zoom@1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.7.1.tgz#02f43b3c3e2db54f364582d7e4a236ccc5506b63" + integrity sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ== dependencies: d3-dispatch "1" d3-drag "1" @@ -2205,10 +2535,12 @@ d3-zoom@1.7.1: d3@3.5.17: version "3.5.17" resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" + integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g= d3@4.12.2: version "4.12.2" resolved "https://registry.yarnpkg.com/d3/-/d3-4.12.2.tgz#12f775564c6a9de229f63db03446e2cb7bb56c8f" + integrity sha512-aKAlpgTmpuGeEpezB+GvPpX1x+gCMs/PHpuse6sCpkgw4Un3ZeqUobIc87eIy9adcl+wxPAnEyKyO5oulH3MOw== dependencies: d3-array "1.2.1" d3-axis "1.0.8" @@ -2244,6 +2576,7 @@ d3@4.12.2: dagre-d3-renderer@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/dagre-d3-renderer/-/dagre-d3-renderer-0.4.24.tgz#b36ce2fe4ea20de43e7698627c6ede2a9f15ec45" + integrity sha512-QCrYq80NTyKph+m/+kNeEq2exw5HPo/x7XprJem3wDGJbEAJDKXI2pJpqe0R4k6AsjWVd5NMVL0X7feF24Zh6Q== dependencies: d3 "3.5.17" dagre-layout "^0.8.0" @@ -2253,6 +2586,7 @@ dagre-d3-renderer@^0.4.24: dagre-layout@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/dagre-layout/-/dagre-layout-0.8.0.tgz#7147b6afb655602f855158dfea171db9aa98d4ff" + integrity sha512-vK4WiR6h3whkoW9aM/FCjZTTx10V2YnLOLEj2+uvOQmiEjGmUvkme+Qrjj/7Tq0+AI54yFHT/tbbqM9AadsK4A== dependencies: graphlib "^2.1.1" lodash "^4.17.4" @@ -2260,78 +2594,94 @@ dagre-layout@^0.8.0: date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= dateformat@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= debug@2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw= dependencies: ms "2.0.0" debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== dependencies: ms "^2.1.1" debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" decamelize@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== dependencies: xregexp "4.0.0" deckar01-task_list@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/deckar01-task_list/-/deckar01-task_list-2.0.0.tgz#7f7a595430d21b3036ed5dfbf97d6b65de18e2c9" + integrity sha1-f3pZVDDSGzA27V37+X1rZd4Y4sk= decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + integrity sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8= deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= default-gateway@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== dependencies: execa "^0.10.0" ip-regex "^2.1.0" @@ -2339,30 +2689,35 @@ default-gateway@^2.6.0: default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= dependencies: strip-bom "^2.0.0" define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" @@ -2370,6 +2725,7 @@ define-property@^2.0.2: del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -2382,6 +2738,7 @@ del@^2.0.2: del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= dependencies: globby "^6.1.0" is-path-cwd "^1.0.0" @@ -2393,22 +2750,27 @@ del@^3.0.0: delegate@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.1.2.tgz#1e1bc6f5cadda6cb6cbf7e6d05d0bcdd5712aebe" + integrity sha1-HhvG9crdpstsv35tBdC83VcSrr4= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@1.1.1, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -2416,32 +2778,39 @@ des.js@^1.0.0: destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= dependencies: repeating "^2.0.0" detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + integrity sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc= di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= diff@^3.2.0, diff@^3.4.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diffie-hellman@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4= dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" @@ -2450,10 +2819,12 @@ diffie-hellman@^5.0.0: dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.0.1: version "1.2.2" resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" + integrity sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -2461,12 +2832,14 @@ dns-packet@^1.0.1: dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= dependencies: buffer-indexof "^1.0.0" doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -2474,16 +2847,19 @@ doctrine@1.5.0: doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" document-register-element@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.3.0.tgz#fb3babb523c74662be47be19c6bc33e71990d940" + integrity sha1-+zurtSPHRmK+R74Zxrwz5xmQ2UA= dom-serialize@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= dependencies: custom-event "~1.0.0" ent "~2.2.0" @@ -2493,6 +2869,7 @@ dom-serialize@^2.2.0: dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= dependencies: domelementtype "~1.1.1" entities "~1.1.1" @@ -2500,24 +2877,29 @@ dom-serializer@0: domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw= domelementtype@1, domelementtype@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= domhandler@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + integrity sha1-iS5HAAqZvlW783dP/qBWHYh5wlk= dependencies: domelementtype "1" domutils@^1.5.1: version "1.6.2" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + integrity sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8= dependencies: dom-serializer "0" domelementtype "1" @@ -2525,24 +2907,29 @@ domutils@^1.5.1: dot-prop@^4.1.0, dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== dependencies: is-obj "^1.0.0" dropzone@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dropzone/-/dropzone-4.2.0.tgz#fbe7acbb9918e0706489072ef663effeef8a79f3" + integrity sha1-++esu5kY4HBkiQcu9mPv/u+KefM= duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.4.2, duplexify@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e" + integrity sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -2552,18 +2939,22 @@ duplexify@^3.4.2, duplexify@^3.5.3: editions@^1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" + integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= ejs@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -2576,30 +2967,36 @@ elliptic@^6.0.0: emoji-unicode-version@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/emoji-unicode-version/-/emoji-unicode-version-0.2.1.tgz#0ebf3666b5414097971d34994e299fce75cdbafc" + integrity sha1-Dr82ZrVBQJeXHTSZTimfznXNuvw= emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= dependencies: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -2616,6 +3013,7 @@ engine.io-client@~3.2.0: engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + integrity sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" @@ -2626,6 +3024,7 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: engine.io@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" + integrity sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -2637,6 +3036,7 @@ engine.io@~3.2.0: enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" @@ -2645,6 +3045,7 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: enhanced-resolve@~0.9.0: version "0.9.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= dependencies: graceful-fs "^4.1.2" memory-fs "^0.2.0" @@ -2653,26 +3054,31 @@ enhanced-resolve@~0.9.0: ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= errno@^0.1.3, errno@^0.1.4: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-abstract@^1.6.1: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -2683,6 +3089,7 @@ es-abstract@^1.6.1: es-to-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= dependencies: is-callable "^1.1.1" is-date-object "^1.0.1" @@ -2691,18 +3098,22 @@ es-to-primitive@^1.1.1: es6-promise@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= dependencies: esprima "^2.7.1" estraverse "^1.9.1" @@ -2714,6 +3125,7 @@ escodegen@1.8.x: eslint-config-airbnb-base@^13.1.0: version "13.1.0" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz#b5a1b480b80dfad16433d6c4ad84e6605052c05c" + integrity sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw== dependencies: eslint-restricted-globals "^0.1.1" object.assign "^4.1.0" @@ -2722,6 +3134,7 @@ eslint-config-airbnb-base@^13.1.0: eslint-import-resolver-node@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== dependencies: debug "^2.6.9" resolve "^1.5.0" @@ -2729,6 +3142,7 @@ eslint-import-resolver-node@^0.3.1: eslint-import-resolver-webpack@^0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.10.1.tgz#4cbceed2c0c43e488a74775c30861e58e00fb290" + integrity sha512-RN49nnyQpBCP3TqVhct+duJjH8kaVg08fFevWvA+4Cr1xeN7OFQRse4wMvzBto9/4VmOJWvqPfdmNTEG3jc8SQ== dependencies: array-find "^1.0.0" debug "^2.6.8" @@ -2744,6 +3158,7 @@ eslint-import-resolver-webpack@^0.10.1: eslint-module-utils@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= dependencies: debug "^2.6.8" pkg-dir "^1.0.0" @@ -2751,6 +3166,7 @@ eslint-module-utils@^2.2.0: eslint-plugin-filenames@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz#7094f00d7aefdd6999e3ac19f72cea058e590cf7" + integrity sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w== dependencies: lodash.camelcase "4.3.0" lodash.kebabcase "4.1.1" @@ -2760,12 +3176,14 @@ eslint-plugin-filenames@^1.3.2: eslint-plugin-html@4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-4.0.5.tgz#e8ec7e16485124460f3bff312016feb0a54d9659" + integrity sha512-yULqYldzhYXTwZEaJXM30HhfgJdtTzuVH3LeoANybESHZ5+2ztLD72BsB2wR124/kk/PvQqZofDFSdNIk+kykw== dependencies: htmlparser2 "^3.8.2" eslint-plugin-import@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== dependencies: contains-path "^0.1.0" debug "^2.6.8" @@ -2781,24 +3199,29 @@ eslint-plugin-import@^2.14.0: eslint-plugin-jasmine@^2.10.1: version "2.10.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.10.1.tgz#5733b709e751f4bc40e31e1c16989bd2cdfbec97" + integrity sha1-VzO3CedR9LxA4x4cFpib0s377Jc= eslint-plugin-promise@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== eslint-plugin-vue@^5.0.0-beta.3: version "5.0.0-beta.3" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.0.0-beta.3.tgz#f3fa9f109b76e20fc1e45a71ce7c6d567118924e" + integrity sha512-EOQo3ax4CIM6Itcl522p4cGlSBgR/KZBJo2Xc29PWknbYH/DRZorGutF8NATUpbZ4HYOG+Gcyd1nL08iyYF3Tg== dependencies: vue-eslint-parser "^3.2.1" eslint-restricted-globals@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" + integrity sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc= eslint-scope@3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -2806,6 +3229,7 @@ eslint-scope@3.7.1: eslint-scope@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -2813,14 +3237,17 @@ eslint-scope@^4.0.0: eslint-utils@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== eslint@~5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.6.0.tgz#b6f7806041af01f71b3f1895cbb20971ea4b6223" + integrity sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.5.3" @@ -2864,6 +3291,7 @@ eslint@~5.6.0: espree@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" + integrity sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg== dependencies: acorn "^5.6.0" acorn-jsx "^4.1.1" @@ -2871,46 +3299,56 @@ espree@^4.0.0: esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== dependencies: estraverse "^4.0.0" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= eve-raphael@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/eve-raphael/-/eve-raphael-0.5.0.tgz#17c754b792beef3fa6684d79cf5a47c63c4cda30" + integrity sha1-F8dUt5K+7z+maE15z1pHxjxM2jA= event-stream@~3.3.0: version "3.3.4" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= dependencies: duplexer "~0.1.1" from "~0" @@ -2923,20 +3361,24 @@ event-stream@~3.3.0: eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= eventsource@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= dependencies: original ">=0.0.5" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" @@ -2944,6 +3386,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== dependencies: cross-spawn "^6.0.0" get-stream "^3.0.0" @@ -2956,6 +3399,7 @@ execa@^0.10.0: execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -2968,6 +3412,7 @@ execa@^0.7.0: expand-braces@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= dependencies: array-slice "^0.2.3" array-unique "^0.2.1" @@ -2976,6 +3421,7 @@ expand-braces@^0.1.1: expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -2988,6 +3434,7 @@ expand-brackets@^2.1.4: expand-range@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= dependencies: is-number "^0.1.1" repeat-string "^0.2.2" @@ -2995,6 +3442,7 @@ expand-range@^0.1.0: exports-loader@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.7.0.tgz#84881c784dea6036b8e1cd1dac3da9b6409e21a5" + integrity sha512-RKwCrO4A6IiKm0pG3c9V46JxIHcDplwwGJn6+JJ1RcVnh/WSGJa0xkmk5cRVtgOPzCAtTMGj2F7nluh9L0vpSA== dependencies: loader-utils "^1.1.0" source-map "0.5.0" @@ -3002,6 +3450,7 @@ exports-loader@^0.7.0: express@^4.16.2, express@^4.16.3: version "4.16.3" resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= dependencies: accepts "~1.3.5" array-flatten "1.1.1" @@ -3037,12 +3486,14 @@ express@^4.16.2, express@^4.16.3: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -3050,10 +3501,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= external-editor@^2.0.1: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== dependencies: chardet "^0.4.0" iconv-lite "^0.4.17" @@ -3062,6 +3515,7 @@ external-editor@^2.0.1: external-editor@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.0.tgz#dc35c48c6f98a30ca27a20e9687d7f3c77704bb6" + integrity sha512-mpkfj0FEdxrIhOC04zk85X7StNtr0yXnG7zCb+8ikO8OJi2jsHh5YGoknNTyXgsbHOf1WOOcVU3kPFWT2WgCkQ== dependencies: chardet "^0.5.0" iconv-lite "^0.4.22" @@ -3070,6 +3524,7 @@ external-editor@^3.0.0: extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -3083,44 +3538,53 @@ extglob@^2.0.4: fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= dependencies: websocket-driver ">=0.5.1" faye-websocket@~0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= dependencies: websocket-driver ">=0.5.1" figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" @@ -3128,6 +3592,7 @@ file-entry-cache@^2.0.0: file-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" + integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== dependencies: loader-utils "^1.0.2" schema-utils "^1.0.0" @@ -3135,6 +3600,7 @@ file-loader@^2.0.0: fileset@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= dependencies: glob "^7.0.3" minimatch "^3.0.3" @@ -3142,10 +3608,12 @@ fileset@^2.0.2: filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -3155,6 +3623,7 @@ fill-range@^4.0.0: finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= dependencies: debug "2.6.9" encodeurl "~1.0.1" @@ -3167,6 +3636,7 @@ finalhandler@1.1.0: finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== dependencies: debug "2.6.9" encodeurl "~1.0.2" @@ -3179,6 +3649,7 @@ finalhandler@1.1.1: find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= dependencies: commondir "^1.0.1" make-dir "^1.0.0" @@ -3187,6 +3658,7 @@ find-cache-dir@^1.0.0: find-cache-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== dependencies: commondir "^1.0.1" make-dir "^1.0.0" @@ -3195,10 +3667,12 @@ find-cache-dir@^2.0.0: find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -3206,18 +3680,21 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" flat-cache@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + integrity sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y= dependencies: circular-json "^0.3.1" del "^2.0.2" @@ -3227,6 +3704,7 @@ flat-cache@^1.2.1: flush-write-stream@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + integrity sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc= dependencies: inherits "^2.0.1" readable-stream "^2.0.4" @@ -3234,34 +3712,41 @@ flush-write-stream@^1.0.0: follow-redirects@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf" + integrity sha512-FrMqZ/FONtHnbqO651UPpfRUVukIEwJhXMfdr/JWAmrDbeYBu773b1J6gdWDyRIj4hvvzQEHoEOTrdR8o6KLYA== dependencies: debug "^3.1.0" for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= formdata-polyfill@^3.0.11: version "3.0.11" resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-3.0.11.tgz#c82b4b4bea3356c0a6752219e54ce1edb2a7fb5b" + integrity sha512-lDyjdlptnGL1Fk7q+hketv31EN9rWaVC/SLz1tRaUktGrsCijyueIcjn7Tw3xKEdCjS5SeBrWp5aNLWUQq+QLg== forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -3269,22 +3754,26 @@ from2@^2.1.0, from2@^2.1.1: from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= fs-access@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= dependencies: null-check "^1.0.0" fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: minipass "^2.2.1" fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -3294,10 +3783,12 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" @@ -3305,18 +3796,22 @@ fsevents@^1.2.2: function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= fuzzaldrin-plus@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fuzzaldrin-plus/-/fuzzaldrin-plus-0.5.0.tgz#ef5f26f0c2fc7e9e9a16ea149a802d6cb4804b1e" + integrity sha1-718m8ML8fp6aFuoUmoAtbLSASx4= gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -3330,18 +3825,22 @@ gauge@~2.7.3: get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U= get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= gettext-extractor-vue@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/gettext-extractor-vue/-/gettext-extractor-vue-4.0.1.tgz#69d2737eb8f1938803ffcf9317133ed59fb2372f" + integrity sha512-UnkWVO5jQQrs17L7HSlKj3O7U8C4+AQFzE05MK/I+JkMZdQdB6JMjA0IK0c4GObSlkgx4aiCCG6zWqIBnDR95w== dependencies: bluebird "^3.5.1" glob "^7.1.2" @@ -3350,6 +3849,7 @@ gettext-extractor-vue@^4.0.1: gettext-extractor@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/gettext-extractor/-/gettext-extractor-3.3.2.tgz#d5172ba8d175678bd40a5abe7f908fa2a9d9473b" + integrity sha1-1RcrqNF1Z4vUClq+f5CPoqnZRzs= dependencies: "@types/glob" "^5" "@types/parse5" "^5" @@ -3362,6 +3862,7 @@ gettext-extractor@^3.3.2: glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -3369,6 +3870,7 @@ glob-parent@^3.1.0: "glob@5 - 7", glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3380,6 +3882,7 @@ glob-parent@^3.1.0: glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= dependencies: inflight "^1.0.4" inherits "2" @@ -3390,24 +3893,29 @@ glob@^5.0.15: global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= dependencies: ini "^1.3.4" global-modules-path@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.1.0.tgz#923ec524e8726bb0c1a4ed4b8e21e1ff80c88bbb" + integrity sha512-3DrmGj2TP+96cABk9TfMp6f3knH/Y46dqvWznTU3Tf6/bDGLDAn15tFluQ7BcloykOcdY16U0WGq0BQblYOxJQ== globals@^11.1.0, globals@^11.7.0: version "11.7.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -3419,6 +3927,7 @@ globby@^5.0.0: globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -3429,12 +3938,14 @@ globby@^6.1.0: good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= dependencies: delegate "^3.1.2" got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" duplexer3 "^0.1.4" @@ -3451,6 +3962,7 @@ got@^6.7.1: got@^8.0.3: version "8.3.0" resolved "https://registry.yarnpkg.com/got/-/got-8.3.0.tgz#6ba26e75f8a6cc4c6b3eb1fe7ce4fec7abac8533" + integrity sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ== dependencies: "@sindresorhus/is" "^0.7.0" cacheable-request "^2.1.1" @@ -3473,16 +3985,19 @@ got@^8.0.3: graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= graphlib@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.1.tgz#42352c52ba2f4d035cb566eb91f7395f76ebc951" + integrity sha1-QjUsUrovTQNctWbrkfc5X3bryVE= dependencies: lodash "^4.11.1" gzip-size@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" + integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== dependencies: duplexer "^0.1.1" pify "^3.0.0" @@ -3490,10 +4005,12 @@ gzip-size@^5.0.0: handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= handlebars@^4.0.1, handlebars@^4.0.3: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== dependencies: async "^2.5.0" optimist "^0.6.1" @@ -3504,48 +4021,58 @@ handlebars@^4.0.1, handlebars@^4.0.3: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-binary2@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" + integrity sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg= dependencies: isarray "2.0.1" has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-symbol-support-x@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.3.0.tgz#588bd6927eaa0e296afae24160659167fc2be4f8" + integrity sha512-kLtS+N9qwz+Buc6TUfcW5iGb59hLLr5qfxTACi/0uGpH1u5NMNWsdU57KoYRBywvPykeRmu5qfB5x0chpDSWlg== has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-to-string-tag-x@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.3.0.tgz#78e3d98c3c0ec9413e970eb8d766249a1e13058f" + integrity sha512-Fu9Nwv8/VNJMvKjkldzXHO+yeX+TCelwUQ9dGW2LrAfHfHi6zVqQt+Qjilf0qGHvpl6Fap6o8aDhWhMt5hY/1g== dependencies: has-symbol-support-x "^1.3.0" has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -3554,6 +4081,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -3562,10 +4090,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -3573,18 +4103,21 @@ has-values@^1.0.0: has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg= dependencies: function-bind "^1.0.2" hash-base@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + integrity sha1-ZuodhW206KVHDK32/OI65SRO8uE= dependencies: inherits "^2.0.1" hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -3592,10 +4125,12 @@ hash-base@^3.0.0: hash-sum@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.0" @@ -3603,10 +4138,12 @@ hash.js@^1.0.0, hash.js@^1.0.3: he@^1.1.0, he@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -3615,6 +4152,7 @@ hmac-drbg@^1.0.0: home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" @@ -3622,14 +4160,17 @@ home-or-tmp@^2.0.0: hoopy@^0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== hosted-git-info@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" + integrity sha1-eg0JeGPYhsD6u9zTe/F1jYvs+KU= hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= dependencies: inherits "^2.0.1" obuf "^1.0.0" @@ -3639,10 +4180,12 @@ hpack.js@^2.1.6: html-entities@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" + integrity sha1-QZSMr4XOgv7Tbk5qDtNxpmZDeeI= htmlparser2@^3.8.2, htmlparser2@^3.9.0: version "3.9.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= dependencies: domelementtype "^1.3.0" domhandler "^2.3.0" @@ -3654,14 +4197,17 @@ htmlparser2@^3.8.2, htmlparser2@^3.9.0: http-cache-semantics@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= http-errors@1.6.2, http-errors@~1.6.1, http-errors@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= dependencies: depd "1.1.1" inherits "2.0.3" @@ -3671,6 +4217,7 @@ http-errors@1.6.2, http-errors@~1.6.1, http-errors@~1.6.2: http-proxy-middleware@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== dependencies: http-proxy "^1.16.2" is-glob "^4.0.0" @@ -3680,6 +4227,7 @@ http-proxy-middleware@~0.18.0: http-proxy@^1.13.0, http-proxy@^1.16.2: version "1.16.2" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + integrity sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I= dependencies: eventemitter3 "1.x.x" requires-port "1.x.x" @@ -3687,64 +4235,78 @@ http-proxy@^1.13.0, http-proxy@^1.16.2: https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= iconv-lite@0.4, iconv-lite@^0.4.17, iconv-lite@^0.4.22, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= icss-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= dependencies: postcss "^6.0.1" ieee754@^1.1.4: version "1.1.11" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.11.tgz#c16384ffe00f5b7835824e67b6f2bd44a5229455" + integrity sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg== iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== dependencies: minimatch "^3.0.4" ignore@^3.3.7: version "3.3.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + integrity sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg== ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== dependencies: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" @@ -3752,6 +4314,7 @@ import-local@^1.0.0: import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" @@ -3759,6 +4322,7 @@ import-local@^2.0.0: imports-loader@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz#030ea51b8ca05977c40a3abfd9b4088fe0be9a69" + integrity sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ== dependencies: loader-utils "^1.0.2" source-map "^0.6.1" @@ -3766,18 +4330,22 @@ imports-loader@^0.8.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -3785,18 +4353,22 @@ inflight@^1.0.4: inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" + integrity sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c= dependencies: ansi-escapes "^1.1.0" chalk "^1.0.0" @@ -3815,6 +4387,7 @@ inquirer@3.0.6: inquirer@^6.0.0, inquirer@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -3833,6 +4406,7 @@ inquirer@^6.0.0, inquirer@^6.1.0: internal-ip@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" + integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== dependencies: default-gateway "^2.6.0" ipaddr.js "^1.5.2" @@ -3840,10 +4414,12 @@ internal-ip@^3.0.1: interpret@^1.0.0, interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= dependencies: from2 "^2.1.1" p-is-promise "^1.1.0" @@ -3851,80 +4427,96 @@ into-stream@^3.1.0: invariant@^2.2.0, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.8.0, ipaddr.js@^1.5.2: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -3933,6 +4525,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -3941,48 +4534,57 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: is-extglob "^2.1.1" is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= dependencies: global-dirs "^0.1.0" is-path-inside "^1.0.0" @@ -3990,134 +4592,163 @@ is-installed-globally@^0.1.0: is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= is-odd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + integrity sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ== dependencies: is-number "^4.0.0" is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= is-path-in-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + integrity sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw= dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + integrity sha1-/AbloWg/vaE95mev9xe7wQpI838= dependencies: path-is-inside "^1.0.1" is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= dependencies: has "^1.0.1" is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-symbol@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== dependencies: has-symbols "^1.0.0" is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + integrity sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE= isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= istanbul-api@^1.3.1: version "1.3.7" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" + integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== dependencies: async "^2.1.4" fileset "^2.0.2" @@ -4134,20 +4765,24 @@ istanbul-api@^1.3.1: istanbul-lib-coverage@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== istanbul-lib-coverage@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" + integrity sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA== istanbul-lib-hook@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" + integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== dependencies: append-transform "^0.4.0" istanbul-lib-instrument@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" + integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -4160,6 +4795,7 @@ istanbul-lib-instrument@^1.10.2: istanbul-lib-instrument@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz#b287cbae2b5f65f3567b05e2e29b275eaf92d25e" + integrity sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q== dependencies: "@babel/generator" "7.0.0-beta.51" "@babel/parser" "7.0.0-beta.51" @@ -4172,6 +4808,7 @@ istanbul-lib-instrument@^2.2.0: istanbul-lib-report@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== dependencies: istanbul-lib-coverage "^1.2.1" mkdirp "^0.5.1" @@ -4181,6 +4818,7 @@ istanbul-lib-report@^1.1.5: istanbul-lib-source-maps@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" + integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== dependencies: debug "^3.1.0" istanbul-lib-coverage "^1.2.1" @@ -4191,12 +4829,14 @@ istanbul-lib-source-maps@^1.2.6: istanbul-reports@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== dependencies: handlebars "^4.0.3" istanbul@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= dependencies: abbrev "1.0.x" async "1.x" @@ -4216,6 +4856,7 @@ istanbul@^0.4.5: istextorbinary@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" + integrity sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw== dependencies: binaryextensions "2" editions "^1.3.3" @@ -4224,6 +4865,7 @@ istextorbinary@^2.2.1: isurl@^1.0.0-alpha5: version "1.0.0" resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== dependencies: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" @@ -4231,50 +4873,61 @@ isurl@^1.0.0-alpha5: jasmine-core@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.9.0.tgz#bfbb56defcd30789adec5a3fbba8504233289c72" + integrity sha1-v7tW3vzTB4mt7Fo/u6hQQjMonHI= jasmine-diff@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8" + integrity sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg= dependencies: diff "^3.2.0" jasmine-jquery@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/jasmine-jquery/-/jasmine-jquery-2.1.1.tgz#d4095e646944a26763235769ab018d9f30f0d47b" + integrity sha1-1AleZGlEomdjI1dpqwGNnzDw1Hs= jed@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/jed/-/jed-1.1.1.tgz#7a549bbd9ffe1585b0cd0a191e203055bee574b4" + integrity sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ= jquery-ujs@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jquery-ujs/-/jquery-ujs-1.2.2.tgz#6a8ef1020e6b6dda385b90a4bddc128c21c56397" + integrity sha1-ao7xAg5rbdo4W5CkvdwSjCHFY5c= dependencies: jquery ">=1.8.0" jquery.waitforimages@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jquery.waitforimages/-/jquery.waitforimages-2.2.0.tgz#63f23131055a1b060dc913e6d874bcc9b9e6b16b" + integrity sha1-Y/IxMQVaGwYNyRPm2HS8ybnmsWs= "jquery@>= 1.9.1", jquery@>=1.8.0, jquery@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" + integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg== js-cookie@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.3.tgz#48071625217ac9ecfab8c343a13d42ec09ff0526" + integrity sha1-SAcWJSF6yez6uMNDoT1C7An/BSY= js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4282,46 +4935,57 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0: jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= jszip-utils@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/jszip-utils/-/jszip-utils-0.0.2.tgz#457d5cbca60a1c2e0706e9da2b544e8e7bc50bf8" + integrity sha1-RX1cvKYKHC4HBunaK1ROjnvFC/g= jszip@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.3.tgz#8a920403b2b1651c0fc126be90192d9080957c37" + integrity sha1-ipIEA7KxZRwPwSa+kBktkICVfDc= dependencies: core-js "~2.3.0" es6-promise "~3.0.2" @@ -4332,6 +4996,7 @@ jszip@^3.1.3: karma-chrome-launcher@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== dependencies: fs-access "^1.0.0" which "^1.2.1" @@ -4339,6 +5004,7 @@ karma-chrome-launcher@^2.2.0: karma-coverage-istanbul-reporter@^1.4.2: version "1.4.3" resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.3.tgz#3b5dff4664fa5b8d5196b9889e3f61c1fa2b80d9" + integrity sha1-O13/RmT6W41RlrmInj9hwforgNk= dependencies: istanbul-api "^1.3.1" minimatch "^3.0.4" @@ -4346,10 +5012,12 @@ karma-coverage-istanbul-reporter@^1.4.2: karma-jasmine@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3" + integrity sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM= karma-junit-reporter@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/karma-junit-reporter/-/karma-junit-reporter-1.2.0.tgz#4f9c40cedfb1a395f8aef876abf96189917c6396" + integrity sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y= dependencies: path-is-absolute "^1.0.0" xmlbuilder "8.2.2" @@ -4357,6 +5025,7 @@ karma-junit-reporter@^1.2.0: karma-mocha-reporter@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" + integrity sha1-FRIAlejtgZGG5HoLAS8810GJVWA= dependencies: chalk "^2.1.0" log-symbols "^2.1.0" @@ -4365,12 +5034,14 @@ karma-mocha-reporter@^2.2.5: karma-sourcemap-loader@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= dependencies: graceful-fs "^4.1.2" karma-webpack@^4.0.0-beta.0: version "4.0.0-rc.2" resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-4.0.0-rc.2.tgz#4c194e94789842af7f0ffa0de77ee7715739c7c1" + integrity sha512-Wuiq/xFBsbJMsHhYy5SYXxSp7Q0b8uzAG8+Siuo56ntoi5GluPE5LK3Mzl2UtD4k1leFwL6IeIE6Q+tk4F6k9Q== dependencies: async "^2.0.0" loader-utils "^1.1.0" @@ -4381,6 +5052,7 @@ karma-webpack@^4.0.0-beta.0: karma@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/karma/-/karma-3.0.0.tgz#6da83461a8a28d8224575c3b5b874e271b4730c3" + integrity sha512-ZTjyuDXVXhXsvJ1E4CnZzbCjSxD6sEdzEsFYogLuZM0yqvg/mgz+O+R1jb0J7uAQeuzdY8kJgx6hSNXLwFuHIQ== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -4413,60 +5085,71 @@ karma@^3.0.0: katex@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/katex/-/katex-0.9.0.tgz#26a7d082c21d53725422d2d71da9b2d8455fbd4a" + integrity sha512-lp3x90LT1tDZBW2tjLheJ98wmRMRjUHwk4QpaswT9bhqoQZ+XA4cPcjcQBxgOQNwaOSt6ZeL/a6GKQ1of3LFxQ== dependencies: match-at "^0.1.1" keyv@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== dependencies: json-buffer "3.0.0" killable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + integrity sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms= kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= dependencies: package-json "^4.0.0" lazy-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= dependencies: set-getter "^0.1.0" lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -4474,12 +5157,14 @@ levn@^0.3.0, levn@~0.3.0: lie@~3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= dependencies: immediate "~3.0.5" load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -4489,6 +5174,7 @@ load-json-file@^2.0.0: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -4498,10 +5184,12 @@ load-json-file@^4.0.0: loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -4510,6 +5198,7 @@ loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -4517,6 +5206,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" @@ -4524,64 +5214,79 @@ locate-path@^3.0.0: lodash.camelcase@4.3.0, lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= lodash.kebabcase@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" + integrity sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU= lodash.snakecase@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= lodash.startcase@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= lodash.upperfirst@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= lodash@4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= lodash@^4.11.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== log-symbols@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: chalk "^2.0.1" log4js@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.5.tgz#b80146bfebad68b430d4f3569556d8a6edfef303" + integrity sha512-IX5c3G/7fuTtdr0JjOT2OIR12aTESVhsH6cEsijloYwKgcPRlO6DgOU72v0UFhWcoV1HN6+M3dwT89qVPLXm0w== dependencies: circular-json "^0.5.5" date-format "^1.2.0" @@ -4592,16 +5297,19 @@ log4js@^3.0.0: loglevel@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" + integrity sha1-lbOD+Ro8J1b9SrCTZn5DCRYfK80= loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loud-rejection@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" @@ -4609,14 +5317,17 @@ loud-rejection@^1.6.0: lowercase-keys@1.0.0, lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + integrity sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0= lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -4624,48 +5335,58 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= make-dir@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + integrity sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw== dependencies: pify "^3.0.0" mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== map-age-cleaner@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" + integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" marked@^0.3.12: version "0.3.12" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.12.tgz#7cf25ff2252632f3fe2406bde258e94eee927519" + integrity sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA== match-at@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540" + integrity sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q== md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= dependencies: hash-base "^3.0.0" inherits "^2.0.1" @@ -4673,10 +5394,12 @@ md5.js@^1.3.4: media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= mem@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^1.0.0" @@ -4685,10 +5408,12 @@ mem@^4.0.0: memory-fs@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA= memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -4696,20 +5421,24 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== dependencies: source-map "^0.6.1" methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -4728,6 +5457,7 @@ micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" @@ -4735,58 +5465,71 @@ miller-rabin@^4.0.0: "mime-db@>= 1.29.0 < 2", mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== mime-types@~2.1.15, mime-types@~2.1.18: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== dependencies: mime-db "~1.33.0" mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== mime@^2.0.3, mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + integrity sha1-5md4PZLonb00KBi1IwudYqZyrRg= mimic-response@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + integrity sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4= minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M= minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@1.2.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + integrity sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -4794,12 +5537,14 @@ minipass@^2.2.1, minipass@^2.3.3: minizlib@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== dependencies: minipass "^2.2.1" mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -4815,6 +5560,7 @@ mississippi@^2.0.0: mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -4830,6 +5576,7 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -4837,28 +5584,34 @@ mixin-deep@^1.2.0: mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" moment@2.x, moment@^2.18.1: version "2.19.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe" + integrity sha512-Rf6jiHPEfxp9+dlzxPTmRHbvoFXsh2L/U8hOupUMpnuecHQmI6cF6lUbJl3QqKPko1u6ujO+FxtcajLVfLpAtA== monaco-editor-webpack-plugin@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.5.4.tgz#6781a130e3e1379bb8f4cd190132f4af6dcd2c16" + integrity sha512-9YmWYQdZoAoZ1RLy/uvoDbCcb0EKy5O2qoMQn+UIVQxk+VTCXfJDgANczDIWko+UOzg0MY0P+sA8bl4XI14RJg== monaco-editor@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.14.3.tgz#7cc4a4096a3821f52fea9b10489b527ef3034e22" + integrity sha512-RhaO4xXmWn/p0WrkEOXe4PoZj6xOcvDYjoAh0e1kGUrQnP1IOpc0m86Ceuaa2CLEMDINqKijBSmqhvBQnsPLHQ== mousetrap@^1.4.6: version "1.4.6" resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.4.6.tgz#eaca72e22e56d5b769b7555873b688c3332e390a" + integrity sha1-6spy4i5W1bdpt1VYc7aIwzMuOQo= move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -4870,18 +5623,22 @@ move-concurrently@^1.0.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= multicast-dns@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" + integrity sha1-bn3oalcIcqsXBYrepxYLvsqBTd4= dependencies: dns-packet "^1.0.1" thunky "^0.1.0" @@ -4889,14 +5646,17 @@ multicast-dns@^6.0.1: mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== nanomatch@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + integrity sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -4914,10 +5674,12 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + integrity sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -4926,18 +5688,22 @@ needle@^2.2.0: negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= neo-async@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" + integrity sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g== nice-try@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + integrity sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA== node-fetch@1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + integrity sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ= dependencies: encoding "^0.1.11" is-stream "^1.0.1" @@ -4945,10 +5711,12 @@ node-fetch@1.6.3: node-forge@0.6.33: version "0.6.33" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" + integrity sha1-RjgRh59XPUUVWtap9D3ClujoXrw= "node-libs-browser@^1.0.0 || ^2.0.0", node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -4977,6 +5745,7 @@ node-forge@0.6.33: node-pre-gyp@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + integrity sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -4992,6 +5761,7 @@ node-pre-gyp@^0.10.0: nodemon@^1.18.4: version "1.18.4" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.4.tgz#873f65fdb53220eb166180cf106b1354ac5d714d" + integrity sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg== dependencies: chokidar "^2.0.2" debug "^3.1.0" @@ -5007,12 +5777,14 @@ nodemon@^1.18.4: nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: abbrev "1" nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" @@ -5020,12 +5792,14 @@ nopt@^4.0.1: nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= dependencies: abbrev "1" normalize-package-data@^2.3.2: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -5035,12 +5809,14 @@ normalize-package-data@^2.3.2: normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-url@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== dependencies: prepend-http "^2.0.0" query-string "^5.0.1" @@ -5049,10 +5825,12 @@ normalize-url@2.0.1: npm-bundled@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + integrity sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow== npm-packlist@^1.1.6: version "1.1.10" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + integrity sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -5060,12 +5838,14 @@ npm-packlist@^1.1.6: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -5075,22 +5855,27 @@ npmlog@^4.0.2: null-check@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -5099,16 +5884,19 @@ object-copy@^0.1.0: object-keys@^1.0.11, object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" function-bind "^1.1.1" @@ -5118,6 +5906,7 @@ object.assign@^4.1.0: object.entries@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" + integrity sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8= dependencies: define-properties "^1.1.2" es-abstract "^1.6.1" @@ -5127,38 +5916,45 @@ object.entries@^1.0.4: object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" obuf@^1.0.0, obuf@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" + integrity sha1-EEEktsYCxnlogaBCVB0220OlJk4= on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" opencollective@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/opencollective/-/opencollective-1.0.3.tgz#aee6372bc28144583690c3ca8daecfc120dd0ef1" + integrity sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE= dependencies: babel-polyfill "6.23.0" chalk "1.1.3" @@ -5170,10 +5966,12 @@ opencollective@^1.0.3: opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== opn@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + integrity sha1-erwi5kTf9jsKltWrfyeQwPAavJU= dependencies: object-assign "^4.0.1" pinkie-promise "^2.0.0" @@ -5181,12 +5979,14 @@ opn@4.0.2: opn@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225" + integrity sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ== dependencies: is-wsl "^1.1.0" optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -5194,6 +5994,7 @@ optimist@^0.6.1: optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -5205,20 +6006,24 @@ optionator@^0.8.1, optionator@^0.8.2: original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + integrity sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs= dependencies: url-parse "1.0.x" os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== dependencies: execa "^0.10.0" lcid "^2.0.0" @@ -5227,10 +6032,12 @@ os-locale@^3.0.0: os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -5238,64 +6045,77 @@ osenv@^0.1.4: p-cancelable@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-is-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + integrity sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng== dependencies: p-try "^1.0.0" p-limit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== dependencies: p-try "^2.0.0" p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-map@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" + integrity sha1-BfXkrpegaDcbwqXMhr+9vBnErno= p-timeout@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -5305,10 +6125,12 @@ package-json@^4.0.0: pako@~1.0.2, pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -5317,6 +6139,7 @@ parallel-transform@^1.1.0: parse-asn1@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + integrity sha1-N8T5t+06tlx0gXtfJICTf7+XxxI= dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -5327,12 +6150,14 @@ parse-asn1@^5.0.0: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -5340,86 +6165,104 @@ parse-json@^4.0.0: parse5@^5: version "5.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.0.0.tgz#4d02710d44f3c3846197a11e205d4ef17842b81a" + integrity sha512-0ywuiUOnpWWeil5grH2rxjyTJoeQVwyBuO2si6QIU9dWtj2npjuyK1HaY1RbLnVfDhEbhyAPNUBKRK0Xj2xE0w== parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= dependencies: better-assert "~1.0.0" parseuri@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= dependencies: better-assert "~1.0.0" parseurl@~1.3.1, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= dependencies: through "~2.3" pbkdf2@^3.0.3: version "3.0.14" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + integrity sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -5430,60 +6273,72 @@ pbkdf2@^3.0.3: pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pikaday@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/pikaday/-/pikaday-1.6.1.tgz#b91bcb9b8539cedd8d6d08e4e7465e12095671b0" + integrity sha512-B+pxVcSGuzLblMe4dnhCF3dnI2zkyj5GAqanGX9cVcOk90fp2ULo1OZFUPRXQXUE5tmcimnk1tPOFs8tUHQetQ== optionalDependencies: moment "2.x" pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkg-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= dependencies: find-up "^1.0.0" pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== pofile@^1: version "1.0.11" resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.0.11.tgz#35aff58c17491d127a07336d5522ebc9df57c954" + integrity sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg== popper.js@^1.12.9, popper.js@^1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" + integrity sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU= portfinder@^1.0.9: version "1.0.13" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + integrity sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek= dependencies: async "^1.5.2" debug "^2.2.0" @@ -5492,16 +6347,19 @@ portfinder@^1.0.9: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-modules-extract-imports@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" + integrity sha1-ZhQOzs447wa/DT41XWm/WdFB6oU= dependencies: postcss "^6.0.1" postcss-modules-local-by-default@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" @@ -5509,6 +6367,7 @@ postcss-modules-local-by-default@^1.2.0: postcss-modules-scope@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" @@ -5516,6 +6375,7 @@ postcss-modules-scope@^1.1.0: postcss-modules-values@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= dependencies: icss-replace-symbols "^1.1.0" postcss "^6.0.1" @@ -5523,6 +6383,7 @@ postcss-modules-values@^1.3.0: postcss-selector-parser@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= dependencies: dot-prop "^4.1.1" indexes-of "^1.0.1" @@ -5531,10 +6392,12 @@ postcss-selector-parser@^3.1.1: postcss-value-parser@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.20, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== dependencies: chalk "^2.4.1" source-map "^0.6.1" @@ -5543,56 +6406,69 @@ postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.20, postcss@^6.0.23: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= prettier@1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" + integrity sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU= prettier@1.13.7: version "1.13.7" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" + integrity sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w== prismjs@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.6.0.tgz#118d95fb7a66dba2272e343b345f5236659db365" + integrity sha1-EY2V+3pm26InLjQ7NF9SNmWds2U= optionalDependencies: clipboard "^1.5.5" private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= proxy-addr@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== dependencies: forwarded "~0.1.2" ipaddr.js "1.8.0" @@ -5600,26 +6476,31 @@ proxy-addr@~2.0.3: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= ps-tree@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= dependencies: event-stream "~3.3.0" pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= pstree.remy@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.0.tgz#f2af27265bd3e5b32bbfcc10e80bac55ba78688b" + integrity sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q== dependencies: ps-tree "^1.1.0" public-encrypt@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY= dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" @@ -5630,6 +6511,7 @@ public-encrypt@^4.0.0: pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -5637,6 +6519,7 @@ pump@^2.0.0, pump@^2.0.1: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -5644,6 +6527,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + integrity sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA== dependencies: duplexify "^3.5.3" inherits "^2.0.3" @@ -5652,22 +6536,27 @@ pumpify@^1.3.3: punycode@1.3.2, punycode@^1.2.4: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qjobs@^1.1.4: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== dependencies: decode-uri-component "^0.2.0" object-assign "^4.1.0" @@ -5676,28 +6565,34 @@ query-string@^5.0.1: querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@0.0.x: version "0.0.4" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + integrity sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw= querystringify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + integrity sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs= randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -5705,20 +6600,24 @@ randomfill@^1.0.3: range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= raphael@^2.2.7: version "2.2.7" resolved "https://registry.yarnpkg.com/raphael/-/raphael-2.2.7.tgz#231b19141f8d086986d8faceb66f8b562ee2c810" + integrity sha1-IxsZFB+NCGmG2PrOtm+LVi7iyBA= dependencies: eve-raphael "0.5.0" raven-js@^3.22.1: version "3.22.1" resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.22.1.tgz#1117f00dfefaa427ef6e1a7d50bbb1fb998a24da" + integrity sha512-2Y8czUl5a9usbvXbpV8a+GPAiDXjxQjaHImZL0TyJWI5k5jV/6o+wceaBAg9g6RpO9OOJp0/w2mMs6pBoqOyDA== raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= dependencies: bytes "3.0.0" http-errors "1.6.2" @@ -5728,10 +6627,12 @@ raw-body@2.3.2: raw-loader@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: version "1.2.5" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" + integrity sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0= dependencies: deep-extend "~0.4.0" ini "~1.3.0" @@ -5741,6 +6642,7 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= dependencies: find-up "^2.0.0" read-pkg "^2.0.0" @@ -5748,6 +6650,7 @@ read-pkg-up@^2.0.0: read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: find-up "^3.0.0" read-pkg "^3.0.0" @@ -5755,6 +6658,7 @@ read-pkg-up@^4.0.0: read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -5763,6 +6667,7 @@ read-pkg@^2.0.0: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" @@ -5771,6 +6676,7 @@ read-pkg@^3.0.0: "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -5783,6 +6689,7 @@ read-pkg@^3.0.0: readable-stream@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -5794,6 +6701,7 @@ readable-stream@~2.0.6: readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= dependencies: graceful-fs "^4.1.2" minimatch "^3.0.2" @@ -5803,18 +6711,22 @@ readdirp@^2.0.0: regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + integrity sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA= regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== dependencies: babel-runtime "^6.18.0" babel-types "^6.19.0" @@ -5823,6 +6735,7 @@ regenerator-transform@^0.10.0: regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -5830,10 +6743,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexpp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" + integrity sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA== regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -5842,6 +6757,7 @@ regexpu-core@^1.0.0: regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -5850,6 +6766,7 @@ regexpu-core@^2.0.0: registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" safe-buffer "^5.0.1" @@ -5857,52 +6774,63 @@ registry-auth-token@^3.0.1: registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= dependencies: rc "^1.0.1" regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= dependencies: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= repeat-string@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" @@ -5910,44 +6838,53 @@ require-uncached@^1.0.3: requires-port@1.0.x, requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.0.0" resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== dependencies: path-parse "^1.0.5" responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: lowercase-keys "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -5955,20 +6892,24 @@ restore-cursor@^2.0.0: ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== rfdc@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + integrity sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc= dependencies: hash-base "^2.0.0" inherits "^2.0.1" @@ -5976,50 +6917,60 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= rxjs@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.1.tgz#246cebec189a6cbc143a3ef9f62d6f4c91813ca1" + integrity sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g== dependencies: tslib "^1.9.0" safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sanitize-html@^1.16.1: version "1.16.3" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.16.3.tgz#96c1b44a36ff7312e1c22a14b05274370ac8bd56" + integrity sha512-XpAJGnkMfNM7AzXLRw225blBB/pE4dM4jzRn98g4r88cfxwN6g+5IsRmCAh/gbhYGm6u6i97zsatMOM7Lr8wyw== dependencies: htmlparser2 "^3.9.0" lodash.clonedeep "^4.5.0" @@ -6032,10 +6983,12 @@ sanitize-html@^1.16.1: sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.4, schema-utils@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + integrity sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA== dependencies: ajv "^6.1.0" ajv-keywords "^3.1.0" @@ -6043,6 +6996,7 @@ schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.4, schema-utils@^0.4 schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" ajv-errors "^1.0.0" @@ -6051,34 +7005,41 @@ schema-utils@^1.0.0: select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= select2@3.5.2-browserify: version "3.5.2-browserify" resolved "https://registry.yarnpkg.com/select2/-/select2-3.5.2-browserify.tgz#dc4dafda38d67a734e8a97a46f0d3529ae05391d" + integrity sha1-3E2v2jjWenNOipekbw01Ka4FOR0= select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= selfsigned@^1.9.1: version "1.10.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" + integrity sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI= dependencies: node-forge "0.6.33" semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= dependencies: semver "^5.0.3" "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== dependencies: debug "2.6.9" depd "~1.1.2" @@ -6097,10 +7058,12 @@ send@0.16.2: serialize-javascript@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + integrity sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU= serve-index@^1.7.2: version "1.9.0" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7" + integrity sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc= dependencies: accepts "~1.3.3" batch "0.6.1" @@ -6113,6 +7076,7 @@ serve-index@^1.7.2: serve-static@1.13.2: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -6122,20 +7086,24 @@ serve-static@1.13.2: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-getter@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= dependencies: to-object-path "^0.3.0" set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -6145,6 +7113,7 @@ set-value@^0.4.3: set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -6154,18 +7123,22 @@ set-value@^2.0.0: setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.10" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + integrity sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -6173,6 +7146,7 @@ sha.js@^2.4.0, sha.js@^2.4.8: sha1@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg= dependencies: charenc ">= 0.0.1" crypt ">= 0.0.1" @@ -6180,30 +7154,36 @@ sha1@^1.1.1: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== dependencies: is-fullwidth-code-point "^2.0.0" smooshpack@^0.0.48: version "0.0.48" resolved "https://registry.yarnpkg.com/smooshpack/-/smooshpack-0.0.48.tgz#6fbeaaf59226a1fe500f56aa17185eed377d2823" + integrity sha512-BmaIr6fK6w7WBCI4V7tcZIg78WeE6X56zrhGSNk5vXavT1bQPXH+brZFq6Hwi833upY/yusG2FMVkf7TZsVv/w== dependencies: codesandbox-api "^0.0.18" codesandbox-import-utils "^1.2.3" @@ -6212,6 +7192,7 @@ smooshpack@^0.0.48: snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -6220,12 +7201,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" + integrity sha1-4StUh/re0+PeoKyR6UAL91tAE3A= dependencies: base "^0.11.1" debug "^2.2.0" @@ -6239,10 +7222,12 @@ snapdragon@^0.8.1: socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" @@ -6262,6 +7247,7 @@ socket.io-client@2.1.1: socket.io-parser@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" @@ -6270,6 +7256,7 @@ socket.io-parser@~3.2.0: socket.io@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: debug "~3.1.0" engine.io "~3.2.0" @@ -6281,6 +7268,7 @@ socket.io@2.1.1: sockjs-client@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" + integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= dependencies: debug "^2.6.6" eventsource "0.1.6" @@ -6292,6 +7280,7 @@ sockjs-client@1.1.5: sockjs@0.3.19: version "0.3.19" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== dependencies: faye-websocket "^0.10.0" uuid "^3.0.1" @@ -6299,20 +7288,24 @@ sockjs@0.3.19: sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= dependencies: is-plain-obj "^1.0.0" sortablejs@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.7.0.tgz#80a2b2370abd568e1cec8c271131ef30a904fa28" + integrity sha1-gKKyNwq9Vo4c7IwnETHvMKkE+ig= source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== source-map-resolve@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + integrity sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A== dependencies: atob "^2.0.0" decode-uri-component "^0.2.0" @@ -6323,48 +7316,58 @@ source-map-resolve@^0.5.0: source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== dependencies: source-map "^0.5.6" source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.0.tgz#0fe96503ac86a5adb5de63f4e412ae4872cdbe86" + integrity sha1-D+llA6yGpa213mP05BKuSHLNvoY= source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= dependencies: amdefine ">=0.0.4" spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A= dependencies: spdx-license-ids "^1.0.2" spdx-expression-parse@~1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw= spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc= spdy-transport@^2.0.18: version "2.0.20" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" + integrity sha1-c15yBUxIayNU/onnAiVgBKOazk0= dependencies: debug "^2.6.8" detect-node "^2.0.3" @@ -6377,6 +7380,7 @@ spdy-transport@^2.0.18: spdy@^3.4.1: version "3.4.7" resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= dependencies: debug "^2.6.8" handle-thing "^1.2.5" @@ -6388,26 +7392,31 @@ spdy@^3.4.1: split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split@0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= dependencies: through "2" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sql.js@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/sql.js/-/sql.js-0.4.0.tgz#23be9635520eb0ff43a741e7e830397266e88445" + integrity sha1-I76WNVIOsP9Dp0Hn6DA5cmbohEU= srcset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" + integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= dependencies: array-uniq "^1.0.2" number-is-nan "^1.0.0" @@ -6415,18 +7424,21 @@ srcset@^1.0.0: ssri@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52" + integrity sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ== dependencies: safe-buffer "^5.1.1" ssri@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -6434,18 +7446,22 @@ static-extend@^0.1.1: "statuses@>= 1.3.1 < 2", statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= stickyfilljs@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/stickyfilljs/-/stickyfilljs-2.0.5.tgz#d229e372d2199ddf5d283bbe34ac1f7d2529c2fc" + integrity sha512-KGKdqKbv1jXit54ltFPIWw/XVeuSrJmTUS8viT1Pmdpp1Jyv3SMpFmhvPBdddX9FHDlHbm9s8cPAhPviBaBVpA== stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= dependencies: inherits "~2.0.1" readable-stream "^2.0.2" @@ -6453,12 +7469,14 @@ stream-browserify@^2.0.1: stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= dependencies: duplexer "~0.1.1" stream-each@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + integrity sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -6466,6 +7484,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.2" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" + integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -6476,10 +7495,12 @@ stream-http@^2.7.2: stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= streamroller@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== dependencies: date-format "^1.2.0" debug "^3.1.0" @@ -6489,10 +7510,12 @@ streamroller@0.7.0: strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -6501,6 +7524,7 @@ string-width@^1.0.1, string-width@^1.0.2: string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -6508,46 +7532,55 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= style-loader@^0.23.0: version "0.23.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" + integrity sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ== dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" @@ -6555,26 +7588,31 @@ style-loader@^0.23.0: supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^3.1.0, supports-color@^3.1.2: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= dependencies: has-flag "^1.0.0" supports-color@^5.1.0, supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" svg4everybody@2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/svg4everybody/-/svg4everybody-2.1.9.tgz#5bd9f6defc133859a044646d4743fabc28db7e2d" + integrity sha1-W9n23vwTOFmgRGRtR0P6vCjbfi0= table@^4.0.3: version "4.0.3" resolved "http://registry.npmjs.org/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== dependencies: ajv "^6.0.1" ajv-keywords "^3.0.0" @@ -6586,14 +7624,17 @@ table@^4.0.3: tapable@^0.1.8: version "0.1.10" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= tapable@^1.0.0, tapable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== tar@^4: version "4.4.4" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" + integrity sha512-mq9ixIYfNF9SK0IS/h2HKMu8Q2iaCuhDDsZhdEag/FHv8fOaYld4vN7ouMgcSSt5WKZzPs8atclTcJm36OTh4w== dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" @@ -6606,12 +7647,14 @@ tar@^4: term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" test-exclude@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.0.0.tgz#cdce7cece785e0e829cd5c2b27baf18bc583cfb7" + integrity sha512-bO3Lj5+qFa9YLfYW2ZcXMOV1pmQvw+KS/DpjqhyX6Y6UZ8zstpZJ+mA2ERkXfpOqhxsJlQiLeVXD3Smsrs6oLw== dependencies: arrify "^1.0.1" minimatch "^3.0.4" @@ -6621,26 +7664,32 @@ test-exclude@^5.0.0: text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= textextensions@2: version "2.2.0" resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" + integrity sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA== three-orbit-controls@^82.1.0: version "82.1.0" resolved "https://registry.yarnpkg.com/three-orbit-controls/-/three-orbit-controls-82.1.0.tgz#11a7f33d0a20ecec98f098b37780f6537374fab4" + integrity sha1-EafzPQog7OyY8Jizd4D2U3N0+rQ= three-stl-loader@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/three-stl-loader/-/three-stl-loader-1.0.4.tgz#6b3319a31e3b910aab1883d19b00c81a663c3e03" + integrity sha1-azMZox47kQqrGIPRmwDIGmY8PgM= three@^0.84.0: version "0.84.0" resolved "https://registry.yarnpkg.com/three/-/three-0.84.0.tgz#95be85a55a0fa002aa625ed559130957dcffd918" + integrity sha1-lb6FpVoPoAKqYl7VWRMJV9z/2Rg= through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= dependencies: readable-stream "^2.1.5" xtend "~4.0.1" @@ -6648,62 +7697,75 @@ through2@^2.0.0: through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" + integrity sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4= timeago.js@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/timeago.js/-/timeago.js-3.0.2.tgz#32a67e7c0d887ea42ca588d3aae26f77de5e76cc" + integrity sha1-MqZ+fA2IfqQspYjTquJvd95edsw= dependencies: "@types/jquery" "^2.0.40" timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== dependencies: setimmediate "^1.0.4" tiny-emitter@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" + integrity sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow== tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -6711,6 +7773,7 @@ to-regex-range@^2.1.0: to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" @@ -6720,38 +7783,46 @@ to-regex@^3.0.1, to-regex@^3.0.2: touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" traverse@0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= tryer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz#027b69fa823225e551cace3ef03b11f6ab37c1d7" + integrity sha1-Antp+oIyJeVRys4+8DsR9qs3wdc= tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== dependencies: media-typer "0.3.0" mime-types "~2.1.18" @@ -6759,14 +7830,17 @@ type-is@~1.6.15, type-is@~1.6.16: typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== dependencies: commander "~2.13.0" source-map "~0.6.1" @@ -6774,6 +7848,7 @@ uglify-es@^3.3.4: uglify-js@^3.1.4: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -6781,6 +7856,7 @@ uglify-js@^3.1.4: uglifyjs-webpack-plugin@^1.2.4: version "1.2.5" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641" + integrity sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw== dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -6794,20 +7870,24 @@ uglifyjs-webpack-plugin@^1.2.4: ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== undefsafe@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" + integrity sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY= dependencies: debug "^2.2.0" underscore@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.0.tgz#31dbb314cfcc88f169cd3692d9149d81a00a73e4" + integrity sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A== union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -6817,32 +7897,38 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-filename@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= dependencies: imurmurhash "^0.1.4" unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= dependencies: crypto-random-string "^1.0.0" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -6850,14 +7936,17 @@ unset-value@^1.0.0: unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== update-notifier@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" + integrity sha1-TognpruRUUCrCTVZ1wFOPruDdFE= dependencies: boxen "^1.2.1" chalk "^2.0.1" @@ -6872,20 +7961,24 @@ update-notifier@^2.3.0: uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= url-loader@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + integrity sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg== dependencies: loader-utils "^1.1.0" mime "^2.0.3" @@ -6894,18 +7987,21 @@ url-loader@^1.1.1: url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: prepend-http "^1.0.1" url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: prepend-http "^2.0.0" url-parse@1.0.x: version "1.0.5" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + integrity sha1-CFSGBCKv3P7+tsllxmLUgAFpkns= dependencies: querystringify "0.0.x" requires-port "1.0.x" @@ -6913,6 +8009,7 @@ url-parse@1.0.x: url-parse@^1.1.8: version "1.1.9" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" + integrity sha1-xn8dd11R8KGJEd17P/rSe7nlvRk= dependencies: querystringify "~1.0.0" requires-port "1.0.x" @@ -6920,10 +8017,12 @@ url-parse@^1.1.8: url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" @@ -6931,6 +8030,7 @@ url@^0.11.0: use@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" + integrity sha1-riig1y+TvyJCKhii43mZMRLeyOg= dependencies: define-property "^0.2.5" isobject "^3.0.0" @@ -6939,6 +8039,7 @@ use@^2.0.0: useragent@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" + integrity sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4= dependencies: lru-cache "2.2.x" tmp "0.0.x" @@ -6946,28 +8047,34 @@ useragent@2.2.1: util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= uuid@^3.0.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== v8-compile-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" + integrity sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg== validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w= dependencies: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" @@ -6975,24 +8082,29 @@ validate-npm-package-license@^3.0.1: vary@~1.1.1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= visibilityjs@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/visibilityjs/-/visibilityjs-1.2.4.tgz#bff8663da62c8c10ad4ee5ae6a1ae6fac4259d63" + integrity sha1-v/hmPaYsjBCtTuWuahrm+sQlnWM= vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= dependencies: indexof "0.0.1" void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= vue-eslint-parser@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-3.2.2.tgz#47c971ee4c39b0ee7d7f5e154cb621beb22f7a34" + integrity sha512-dprI6ggKCTwV22r+i8dtUGquiOCn063xyDmb7BV/BjG5Oc/m5EoMNrWevpvTcrlGuFZmYVPs5fgsu8UIxmMKzg== dependencies: debug "^3.1.0" eslint-scope "^4.0.0" @@ -7004,14 +8116,17 @@ vue-eslint-parser@^3.2.1: vue-functional-data-merge@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/vue-functional-data-merge/-/vue-functional-data-merge-2.0.6.tgz#f08055adfb92458debcf2ad10c3aa712277f7fc2" + integrity sha512-eivElFOJwhXJopKlq71/8onDxOKK4quPwWGFF9yIVjpU2sNzxISRpufu18bh674ivSADuEAPU2OhT+vrH0E9Mg== vue-hot-reload-api@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz#97976142405d13d8efae154749e88c4e358cf926" + integrity sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA== vue-loader@^15.4.2: version "15.4.2" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.4.2.tgz#812bb26e447dd3b84c485eb634190d914ce125e2" + integrity sha512-nVV27GNIA9MeoD8yQ3dkUzwlAaAsWeYSWZHsu/K04KCD339lW0Jv2sJWsjj3721SP7sl2lYdPmjcHgkWQSp5bg== dependencies: "@vue/component-compiler-utils" "^2.0.0" hash-sum "^1.0.2" @@ -7022,16 +8137,19 @@ vue-loader@^15.4.2: vue-resource@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/vue-resource/-/vue-resource-1.5.0.tgz#ba0c6ef7af2eeace03cf24a91f529471be974c72" + integrity sha512-em+Ihe+duUWQv4uKO8aFTGK+e/lvNtk5EBEmWaBYcfQzBmHhKR4jJAeVIHcG6otugmsme/DmYrOEPfbss+2XfQ== dependencies: got "^8.0.3" vue-router@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.1.tgz#d9b05ad9c7420ba0f626d6500d693e60092cc1e9" + integrity sha512-vLLoY452L+JBpALMP5UHum9+7nzR9PeIBCghU9ZtJ1eWm6ieUI8Zb/DI3MYxH32bxkjzYV1LRjNv4qr8d+uX/w== vue-style-loader@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.0.tgz#7588bd778e2c9f8d87bfc3c5a4a039638da7a863" + integrity sha512-IsSiXDrLW2QIjyBsCqa35e45l5AceMbJ2jO8DxoEQv75xu/UmtXkSC0ybESq/LpbmmIW47MAWDQvErUw+Hrz/A== dependencies: hash-sum "^1.0.2" loader-utils "^1.0.2" @@ -7039,6 +8157,7 @@ vue-style-loader@^4.1.0: vue-template-compiler@^2.5.0, vue-template-compiler@^2.5.17: version "2.5.17" resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.17.tgz#52a4a078c327deb937482a509ae85c06f346c3cb" + integrity sha512-63uI4syCwtGR5IJvZM0LN5tVsahrelomHtCxvRkZPJ/Tf3ADm1U1wG6KWycK3qCfqR+ygM5vewUvmJ0REAYksg== dependencies: de-indent "^1.0.2" he "^1.1.0" @@ -7046,22 +8165,27 @@ vue-template-compiler@^2.5.0, vue-template-compiler@^2.5.17: vue-template-es2015-compiler@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18" + integrity sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg== vue-virtual-scroll-list@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/vue-virtual-scroll-list/-/vue-virtual-scroll-list-1.2.5.tgz#bcbd010f7cdb035eba8958ebf807c6214d9a167a" + integrity sha1-vL0BD3zbA166iVjr+AfGIU2aFno= vue@^2.5.16, vue@^2.5.17: version "2.5.17" resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.17.tgz#0f8789ad718be68ca1872629832ed533589c6ada" + integrity sha512-mFbcWoDIJi0w0Za4emyLiW72Jae0yjANHbCVquMKijcavBGypqlF7zHRgMa5k4sesdv7hv2rB4JPdZfR+TPfhQ== vuex@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2" + integrity sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w== watchpack@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" + integrity sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA== dependencies: chokidar "^2.0.2" graceful-fs "^4.1.2" @@ -7070,12 +8194,14 @@ watchpack@^1.5.0: wbuf@^1.1.0, wbuf@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" + integrity sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4= dependencies: minimalistic-assert "^1.0.0" webpack-bundle-analyzer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.2.tgz#22f19ea6d1b5a15fd7a90baae0bc0f39bd1e4d48" + integrity sha512-cZG4wSQtKrSpk5RJ33dxiaAyo8bP0V+JvycAyIDFEiDIhw4LHhhVKhn40YT1w6TR9E4scHA00LnIoBtTA13Mow== dependencies: acorn "^5.7.3" bfj "^6.1.1" @@ -7093,6 +8219,7 @@ webpack-bundle-analyzer@^3.0.2: webpack-cli@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" + integrity sha512-p5NeKDtYwjZozUWq6kGNs9w+Gtw/CPvyuXjXn2HMdz8Tie+krjEg8oAtonvIyITZdvpF7XG9xDHwscLr2c+ugQ== dependencies: chalk "^2.4.1" cross-spawn "^6.0.5" @@ -7109,6 +8236,7 @@ webpack-cli@^3.1.0: webpack-dev-middleware@3.2.0, webpack-dev-middleware@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" + integrity sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA== dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" @@ -7121,6 +8249,7 @@ webpack-dev-middleware@3.2.0, webpack-dev-middleware@^3.2.0: webpack-dev-server@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz#eb7a95945d1108170f902604fb3b939533d9daeb" + integrity sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -7154,6 +8283,7 @@ webpack-dev-server@^3.1.8: webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: ansi-colors "^3.0.0" uuid "^3.3.2" @@ -7161,6 +8291,7 @@ webpack-log@^2.0.0: webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" @@ -7168,10 +8299,12 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.2.0: webpack-stats-plugin@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.2.1.tgz#1f5bac13fc25d62cbb5fd0ff646757dc802b8595" + integrity sha512-OYMZLpZrK/qLA79NE4kC4DCt85h/5ipvWJcsefKe9MMw0qU4/ck/IJg+4OmWA+5EfrZZpHXDq92IptfYDWVfkw== webpack@^4.19.1: version "4.19.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" + integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-module-context" "1.7.6" @@ -7201,46 +8334,55 @@ webpack@^4.19.1: websocket-driver@>=0.5.1: version "0.6.5" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= dependencies: websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" + integrity sha1-domUmcGEtu91Q3fC27DNbLVdKec= which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@^1.1.1, which@^1.2.1, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + integrity sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w== dependencies: string-width "^1.0.2" widest-line@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + integrity sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM= dependencies: string-width "^2.1.1" wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= worker-farm@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" + integrity sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ== dependencies: errno "^0.1.4" xtend "^4.0.1" @@ -7248,6 +8390,7 @@ worker-farm@^1.5.2: worker-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-2.0.0.tgz#45fda3ef76aca815771a89107399ee4119b430ac" + integrity sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw== dependencies: loader-utils "^1.0.0" schema-utils "^0.4.0" @@ -7255,6 +8398,7 @@ worker-loader@^2.0.0: wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -7262,10 +8406,12 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -7274,18 +8420,21 @@ write-file-atomic@^2.0.0: write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= dependencies: mkdirp "^0.5.1" ws@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" + integrity sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w== dependencies: async-limiter "~1.0.0" ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== dependencies: async-limiter "~1.0.0" safe-buffer "~5.1.0" @@ -7294,52 +8443,64 @@ ws@~3.3.1: xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= xmlbuilder@8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" + integrity sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M= xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= xmlhttprequest@1: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= xterm@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/xterm/-/xterm-3.5.0.tgz#ba3f464bc5730c9d259ebe62131862224db9ddcc" + integrity sha512-IpG3P3gkT0/xDPS0j3igpk92JYlUajaEHk3/EQSUeIRJmPiF2lyham3Xt/GD3o98uOrRluvowjNj0AFeYK+AXQ== "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" yargs@12.0.2, yargs@^12.0.1: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== dependencies: cliui "^4.0.0" decamelize "^2.0.0" @@ -7357,3 +8518,4 @@ yargs@12.0.2, yargs@^12.0.1: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= -- cgit v1.2.1 From 4fbca2a346dc4c2c2c57e6a5bc3d13a8c3eeb23e Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Mon, 24 Sep 2018 12:30:49 -0300 Subject: Make single diff patch limit configurable - Creates a new column to hold the single patch limit value on application_settings - Allows updating this value through the application_settings API - Calculates single diff patch collapsing limit based on diff_max_patch_bytes column - Updates diff limit documentation - Adds documentation (with warning) as of how one can update this limit --- app/helpers/application_settings_helper.rb | 3 +- app/models/application_setting.rb | 9 +++- .../application_settings/_diff_limits.html.haml | 16 ++++++ .../admin/application_settings/show.html.haml | 11 ++++ .../osw-configurable-single-diff-file-limit.yml | 5 ++ ...diff_max_patch_bytes_to_application_settings.rb | 25 +++++++++ db/schema.rb | 3 +- doc/administration/index.md | 1 + doc/development/diffs.md | 27 ++++------ doc/user/admin_area/diff_limits.md | 21 ++++++++ lib/gitlab/git/diff.rb | 62 +++++++++++----------- lib/gitlab/git/diff_collection.rb | 2 +- locale/gitlab.pot | 6 +++ spec/models/application_setting_spec.rb | 15 ++++++ spec/requests/api/settings_spec.rb | 4 +- 15 files changed, 158 insertions(+), 52 deletions(-) create mode 100644 app/views/admin/application_settings/_diff_limits.html.haml create mode 100644 changelogs/unreleased/osw-configurable-single-diff-file-limit.yml create mode 100644 db/migrate/20180924141949_add_diff_max_patch_bytes_to_application_settings.rb create mode 100644 doc/user/admin_area/diff_limits.md diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb index c9a5431d18e..15cbfeea609 100644 --- a/app/helpers/application_settings_helper.rb +++ b/app/helpers/application_settings_helper.rb @@ -254,7 +254,8 @@ module ApplicationSettingsHelper :user_default_internal_regex, :user_oauth_applications, :version_check_enabled, - :web_ide_clientside_preview_enabled + :web_ide_clientside_preview_enabled, + :diff_max_patch_bytes ] end diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 5f835a8da75..65a2f760f93 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -182,6 +182,12 @@ class ApplicationSetting < ActiveRecord::Base numericality: { less_than_or_equal_to: :gitaly_timeout_default }, if: :gitaly_timeout_default + validates :diff_max_patch_bytes, + presence: true, + numericality: { only_integer: true, + greater_than_or_equal_to: Gitlab::Git::Diff::DEFAULT_MAX_PATCH_BYTES, + less_than_or_equal_to: Gitlab::Git::Diff::MAX_PATCH_BYTES_UPPER_BOUND } + validates :user_default_internal_regex, js_regex: true, allow_nil: true SUPPORTED_KEY_TYPES.each do |type| @@ -293,7 +299,8 @@ class ApplicationSetting < ActiveRecord::Base user_default_external: false, user_default_internal_regex: nil, user_show_add_ssh_key_message: true, - usage_stats_set_by_user_id: nil + usage_stats_set_by_user_id: nil, + diff_max_patch_bytes: Gitlab::Git::Diff::DEFAULT_MAX_PATCH_BYTES } end diff --git a/app/views/admin/application_settings/_diff_limits.html.haml b/app/views/admin/application_settings/_diff_limits.html.haml new file mode 100644 index 00000000000..408e569fe07 --- /dev/null +++ b/app/views/admin/application_settings/_diff_limits.html.haml @@ -0,0 +1,16 @@ += form_for @application_setting, url: admin_application_settings_path(anchor: 'js-merge-request-settings'), html: { class: 'fieldset-form' } do |f| + = form_errors(@application_setting) + + %fieldset + .form-group + = f.label :diff_max_patch_bytes, 'Maximum diff patch size (Bytes)', class: 'label-light' + = f.number_field :diff_max_patch_bytes, class: 'form-control' + %span.form-text.text-muted + Diff files surpassing this limit will be presented as 'too large' + and won't be expandable. + + = link_to icon('question-circle'), + help_page_path('user/admin_area/diff_limits', + anchor: 'maximum-diff-patch-size') + + = f.submit _('Save changes'), class: 'btn btn-success' diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml index e2043183a97..761555c4189 100644 --- a/app/views/admin/application_settings/show.html.haml +++ b/app/views/admin/application_settings/show.html.haml @@ -24,6 +24,17 @@ .settings-content = render 'account_and_limit' +%section.settings.as-diff-limits.no-animate#js-merge-request-settings{ class: ('expanded' if expanded_by_default?) } + .settings-header + %h4 + = _('Diff limits') + %button.btn.js-settings-toggle{ type: 'button' } + = expanded_by_default? ? _('Collapse') : _('Expand') + %p + = _('Diff content limits') + .settings-content + = render 'diff_limits' + %section.settings.as-signup.no-animate#js-signup-settings{ class: ('expanded' if expanded_by_default?) } .settings-header %h4 diff --git a/changelogs/unreleased/osw-configurable-single-diff-file-limit.yml b/changelogs/unreleased/osw-configurable-single-diff-file-limit.yml new file mode 100644 index 00000000000..55a4b305885 --- /dev/null +++ b/changelogs/unreleased/osw-configurable-single-diff-file-limit.yml @@ -0,0 +1,5 @@ +--- +title: Make single diff patch limit configurable +merge_request: 21886 +author: +type: added diff --git a/db/migrate/20180924141949_add_diff_max_patch_bytes_to_application_settings.rb b/db/migrate/20180924141949_add_diff_max_patch_bytes_to_application_settings.rb new file mode 100644 index 00000000000..084dfc65ce5 --- /dev/null +++ b/db/migrate/20180924141949_add_diff_max_patch_bytes_to_application_settings.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddDiffMaxPatchBytesToApplicationSettings < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_column_with_default(:application_settings, + :diff_max_patch_bytes, + :integer, + default: 100.kilobytes, + allow_null: false) + end + + def down + remove_column(:application_settings, :diff_max_patch_bytes) + end +end diff --git a/db/schema.rb b/db/schema.rb index f92d8005dfb..2e0152af81d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180917172041) do +ActiveRecord::Schema.define(version: 20180924141949) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -171,6 +171,7 @@ ActiveRecord::Schema.define(version: 20180917172041) do t.boolean "user_show_add_ssh_key_message", default: true, null: false t.integer "usage_stats_set_by_user_id" t.integer "receive_max_input_size" + t.integer "diff_max_patch_bytes", default: 102400, null: false end create_table "audit_events", force: :cascade do |t| diff --git a/doc/administration/index.md b/doc/administration/index.md index 702d8e554a8..d713247983b 100644 --- a/doc/administration/index.md +++ b/doc/administration/index.md @@ -47,6 +47,7 @@ Learn how to install, configure, update, and maintain your GitLab instance. - [Enforcing Terms of Service](../user/admin_area/settings/terms.md) - [Third party offers](../user/admin_area/settings/third_party_offers.md) - [Compliance](compliance.md): A collection of features from across the application that you may configure to help ensure that your GitLab instance and DevOps workflow meet compliance standards. +- [Diff limits](../user/admin_area/diff_limits.md): Configure the diff rendering size limits of branch comparison pages. #### Customizing GitLab's appearance diff --git a/doc/development/diffs.md b/doc/development/diffs.md index 5e8e8cc7541..4adae5dabe2 100644 --- a/doc/development/diffs.md +++ b/doc/development/diffs.md @@ -2,13 +2,10 @@ Currently we rely on different sources to present diffs, these include: -- Rugged gem - Gitaly service - Database (through `merge_request_diff_files`) - Redis (cached highlighted diffs) -We're constantly moving Rugged calls to Gitaly and the progress can be followed through [Gitaly repo](https://gitlab.com/gitlab-org/gitaly). - ## Architecture overview ### Merge request diffs @@ -19,8 +16,9 @@ we fetch the comparison information using `Gitlab::Git::Compare`, which fetches The diffs fetching process _limits_ single file diff sizes and the overall size of the whole diff through a series of constant values. Raw diff files are then persisted on `merge_request_diff_files` table. -Even though diffs higher than 10kb are collapsed (`Gitlab::Git::Diff::COLLAPSE_LIMIT`), we still keep them on Postgres. However, diff files over _safety limits_ -(see the [Diff limits section](#diff-limits)) are _not_ persisted. +Even though diffs larger than 10% of the value of `ApplicationSettings#diff_max_patch_bytes` are collapsed, +we still keep them on Postgres. However, diff files larger than defined _safety limits_ +(see the [Diff limits section](#diff-limits)) are _not_ persisted in the database. In order to present diffs information on the Merge Request diffs page, we: @@ -102,23 +100,20 @@ Gitaly will only return the safe amount of data to be persisted on `merge_reques Limits that act onto each diff file of a collection. Files number, lines number and files size are considered. -```ruby -Gitlab::Git::Diff::COLLAPSE_LIMIT = 10.kilobytes -``` +#### Expandable patches (collapsed) -File diff will be collapsed (but be expandable) if it is larger than 10 kilobytes. +Diff patches are collapsed when surpassing 10% of the value set in `ApplicationSettings#diff_max_patch_bytes`. +That is, it's equivalent to 10kb if the maximum allowed value is 100kb. +The diff will still be persisted and expandable if the patch size doesn't +surpass `ApplicationSettings#diff_max_patch_bytes`. *Note:* Although this nomenclature (Collapsing) is also used on Gitaly, this limit is only used on GitLab (hardcoded - not sent to Gitaly). Gitaly will only return `Diff.Collapsed` (RPC) when surpassing collection limits. -```ruby -Gitlab::Git::Diff::SIZE_LIMIT = 100.kilobytes -``` - -File diff will not be rendered if it's larger than 100 kilobytes. +#### Not expandable patches (too large) -*Note:* This limit is currently hardcoded and applied on Gitaly and the RPC returns `Diff.TooLarge` when this limit is surpassed. -Although we're still also applying it on GitLab, we should remove the redundancy from GitLab once we're confident with the Gitaly integration. +The patch not be rendered if it's larger than `ApplicationSettings#diff_max_patch_bytes`. +Users will see a `This source diff could not be displayed because it is too large` message. ```ruby Commit::DIFF_SAFE_LINES = Gitlab::Git::DiffCollection::DEFAULT_LIMITS[:max_lines] = 5000 diff --git a/doc/user/admin_area/diff_limits.md b/doc/user/admin_area/diff_limits.md new file mode 100644 index 00000000000..9205860ef1f --- /dev/null +++ b/doc/user/admin_area/diff_limits.md @@ -0,0 +1,21 @@ +# Diff limits administration + +NOTE: **Note:** +Merge requests and branch comparison views will be affected. + +CAUTION: **Caution:** +These settings are currently under experimental state. They'll +increase the resource consumption of your instance and should +be edited mindfully. + +1. Access **Admin area > Settings > General** +1. Expand **Diff limits** + +### Maximum diff patch size + +This is the content size each diff file (patch) is allowed to reach before +it's collapsed, without the possibility of being expanded. A link redirecting +to the blob view will be presented for the patches that surpass this limit. + +Patches surpassing 10% of this content size will be automatically collapsed, +but expandable (a link to expand the diff will be presented). diff --git a/lib/gitlab/git/diff.rb b/lib/gitlab/git/diff.rb index f6b51dc3982..0d96211f4d4 100644 --- a/lib/gitlab/git/diff.rb +++ b/lib/gitlab/git/diff.rb @@ -19,13 +19,17 @@ module Gitlab alias_method :expanded?, :expanded - SERIALIZE_KEYS = %i(diff new_path old_path a_mode b_mode new_file renamed_file deleted_file too_large).freeze + # The default maximum content size to display a diff patch. + # + # If this value ever changes, make sure to create a migration to update + # current records, and default of `ApplicationSettings#diff_max_patch_bytes`. + DEFAULT_MAX_PATCH_BYTES = 100.kilobytes - # The maximum size of a diff to display. - SIZE_LIMIT = 100.kilobytes + # This is a limitation applied on the source (Gitaly), therefore we don't allow + # persisting limits over that. + MAX_PATCH_BYTES_UPPER_BOUND = 500.kilobytes - # The maximum size before a diff is collapsed. - COLLAPSE_LIMIT = 10.kilobytes + SERIALIZE_KEYS = %i(diff new_path old_path a_mode b_mode new_file renamed_file deleted_file too_large).freeze class << self def between(repo, head, base, options = {}, *paths) @@ -105,6 +109,26 @@ module Gitlab def binary_message(old_path, new_path) "Binary files #{old_path} and #{new_path} differ\n" end + + # Returns the limit of bytes a single diff file can reach before it + # appears as 'collapsed' for end-users. + # By convention, it's 10% of the persisted `diff_max_patch_bytes`. + # + # Example: If we have 100k for the `diff_max_patch_bytes`, it will be 10k by + # default. + # + # Patches surpassing this limit should still be persisted in the database. + def patch_safe_limit_bytes + patch_hard_limit_bytes / 10 + end + + # Returns the limit for a single diff file (patch). + # + # Patches surpassing this limit shouldn't be persisted in the database + # and will be presented as 'too large' for end-users. + def patch_hard_limit_bytes + Gitlab::CurrentSettings.diff_max_patch_bytes + end end def initialize(raw_diff, expanded: true) @@ -150,7 +174,7 @@ module Gitlab def too_large? if @too_large.nil? - @too_large = @diff.bytesize >= SIZE_LIMIT + @too_large = @diff.bytesize >= self.class.patch_hard_limit_bytes else @too_large end @@ -168,7 +192,7 @@ module Gitlab def collapsed? return @collapsed if defined?(@collapsed) - @collapsed = !expanded && @diff.bytesize >= COLLAPSE_LIMIT + @collapsed = !expanded && @diff.bytesize >= self.class.patch_safe_limit_bytes end def collapse! @@ -219,30 +243,6 @@ module Gitlab collapse! end end - - # If the patch surpasses any of the diff limits it calls the appropiate - # prune method and returns true. Otherwise returns false. - def prune_large_patch(patch) - size = 0 - - patch.each_hunk do |hunk| - hunk.each_line do |line| - size += line.content.bytesize - - if size >= SIZE_LIMIT - too_large! - return true # rubocop:disable Cop/AvoidReturnFromBlocks - end - end - end - - if !expanded && size >= COLLAPSE_LIMIT - collapse! - return true - end - - false - end end end end diff --git a/lib/gitlab/git/diff_collection.rb b/lib/gitlab/git/diff_collection.rb index 20dce8d0e06..47ebca7c4a2 100644 --- a/lib/gitlab/git/diff_collection.rb +++ b/lib/gitlab/git/diff_collection.rb @@ -19,7 +19,7 @@ module Gitlab limits[:safe_max_files] = [limits[:max_files], DEFAULT_LIMITS[:max_files]].min limits[:safe_max_lines] = [limits[:max_lines], DEFAULT_LIMITS[:max_lines]].min limits[:safe_max_bytes] = limits[:safe_max_files] * 5.kilobytes # Average 5 KB per file - limits[:max_patch_bytes] = Gitlab::Git::Diff::SIZE_LIMIT + limits[:max_patch_bytes] = Gitlab::Git::Diff.patch_hard_limit_bytes OpenStruct.new(limits) end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 1b66786a890..05e734b7375 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -2289,6 +2289,12 @@ msgstr "" msgid "Details" msgstr "" +msgid "Diff content limits" +msgstr "" + +msgid "Diff limits" +msgstr "" + msgid "Diffs|No file name available" msgstr "" diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb index 9647c1b9f63..dcfc80daa57 100644 --- a/spec/models/application_setting_spec.rb +++ b/spec/models/application_setting_spec.rb @@ -592,4 +592,19 @@ describe ApplicationSetting do it { is_expected.to eq(result) } end end + + context 'diff limit settings' do + describe '#diff_max_patch_bytes' do + context 'validations' do + it { is_expected.to validate_presence_of(:diff_max_patch_bytes) } + + it do + is_expected.to validate_numericality_of(:diff_max_patch_bytes) + .only_integer + .is_greater_than_or_equal_to(Gitlab::Git::Diff::DEFAULT_MAX_PATCH_BYTES) + .is_less_than_or_equal_to(Gitlab::Git::Diff::MAX_PATCH_BYTES_UPPER_BOUND) + end + end + end + end end diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb index 3e0f47b84a1..e379bd9785a 100644 --- a/spec/requests/api/settings_spec.rb +++ b/spec/requests/api/settings_spec.rb @@ -66,7 +66,8 @@ describe API::Settings, 'Settings' do enforce_terms: true, terms: 'Hello world!', performance_bar_allowed_group_path: group.full_path, - instance_statistics_visibility_private: true + instance_statistics_visibility_private: true, + diff_max_patch_bytes: 150_000 expect(response).to have_gitlab_http_status(200) expect(json_response['default_projects_limit']).to eq(3) @@ -92,6 +93,7 @@ describe API::Settings, 'Settings' do expect(json_response['terms']).to eq('Hello world!') expect(json_response['performance_bar_allowed_group_id']).to eq(group.id) expect(json_response['instance_statistics_visibility_private']).to be(true) + expect(json_response['diff_max_patch_bytes']).to eq(150_000) end end -- cgit v1.2.1 From 9b2e17ac71ee446da0f34dada41401803af816c7 Mon Sep 17 00:00:00 2001 From: Tiago Botelho Date: Mon, 1 Oct 2018 12:15:31 +0100 Subject: Adds WebIDE commits to UsagePing Implements UsageCounters model to track feature usage counters and makes easy to extend for future counters --- app/models/usage_counters.rb | 42 ++++++++++++++++++++++ .../45016-add-web-ide-commits-to-usage-ping.yml | 5 +++ db/migrate/20180929102611_create_usage_counters.rb | 13 +++++++ db/schema.rb | 8 ++++- lib/api/commits.rb | 3 ++ lib/gitlab/usage_data.rb | 5 +++ spec/factories/usage_counters.rb | 6 ++++ spec/lib/gitlab/import_export/all_models.yml | 3 ++ spec/lib/gitlab/usage_data_spec.rb | 1 + spec/models/usage_counters_spec.rb | 31 ++++++++++++++++ spec/requests/api/commits_spec.rb | 6 ++++ .../usage_counters_increment_service_spec.rb | 27 ++++++++++++++ 12 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 app/models/usage_counters.rb create mode 100644 changelogs/unreleased/45016-add-web-ide-commits-to-usage-ping.yml create mode 100644 db/migrate/20180929102611_create_usage_counters.rb create mode 100644 spec/factories/usage_counters.rb create mode 100644 spec/models/usage_counters_spec.rb create mode 100644 spec/services/projects/usage_counters_increment_service_spec.rb diff --git a/app/models/usage_counters.rb b/app/models/usage_counters.rb new file mode 100644 index 00000000000..90f9c2a976e --- /dev/null +++ b/app/models/usage_counters.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +class UsageCounters < ActiveRecord::Base + RECORD_LIMIT = 1.freeze + BY = 1.freeze + BLACKLIST_ATTRIBUTES = %w(id created_at updated_at).freeze + + validate :ensure_only_one, on: :create + + default_value_for :web_ide_commits, 0 + + # This method supports concurrency so that several + # requests are able to increment the counter without + # us having inconsistent data + def increment_counters(attrs) + # We want to be able to use the service to increment + # both a single and multiple counters + attrs = Array(attrs) + + attrs_with_by = + attrs.each_with_object({}) do |attr, hsh| + hsh[attr] = BY + end + + self.class.update_counters(id, attrs_with_by) + end + + # Every attribute in this table except the blacklisted + # attributes is a counter + def totals + attributes.except(*BLACKLIST_ATTRIBUTES).symbolize_keys + end + + private + + # We only want one UsageCounters per instance + def ensure_only_one + return unless UsageCounters.count >= RECORD_LIMIT + + errors.add(:base, 'There can only be one usage counters record per instance') + end +end diff --git a/changelogs/unreleased/45016-add-web-ide-commits-to-usage-ping.yml b/changelogs/unreleased/45016-add-web-ide-commits-to-usage-ping.yml new file mode 100644 index 00000000000..a7f24742588 --- /dev/null +++ b/changelogs/unreleased/45016-add-web-ide-commits-to-usage-ping.yml @@ -0,0 +1,5 @@ +--- +title: Adds Web IDE commits to usage ping +merge_request: 22007 +author: +type: added diff --git a/db/migrate/20180929102611_create_usage_counters.rb b/db/migrate/20180929102611_create_usage_counters.rb new file mode 100644 index 00000000000..f17486bb513 --- /dev/null +++ b/db/migrate/20180929102611_create_usage_counters.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class CreateUsageCounters < ActiveRecord::Migration + DOWNTIME = false + + def change + create_table :usage_counters do |t| + t.integer :web_ide_commits + + t.timestamps_with_timezone null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index f92d8005dfb..fb57f2452d7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180917172041) do +ActiveRecord::Schema.define(version: 20180929102611) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -2080,6 +2080,12 @@ ActiveRecord::Schema.define(version: 20180917172041) do add_index "uploads", ["model_id", "model_type"], name: "index_uploads_on_model_id_and_model_type", using: :btree add_index "uploads", ["uploader", "path"], name: "index_uploads_on_uploader_and_path", using: :btree + create_table "usage_counters", force: :cascade do |t| + t.integer "web_ide_commits" + t.datetime_with_timezone "created_at", null: false + t.datetime_with_timezone "updated_at", null: false + end + create_table "user_agent_details", force: :cascade do |t| t.string "user_agent", null: false t.string "ip_address", null: false diff --git a/lib/api/commits.rb b/lib/api/commits.rb index 5aeffc8fb99..e16dd29d138 100644 --- a/lib/api/commits.rb +++ b/lib/api/commits.rb @@ -108,6 +108,9 @@ module API if result[:status] == :success commit_detail = user_project.repository.commit(result[:result]) + + UsageCounters.first_or_create.increment_counters(:web_ide_commits) if find_user_from_warden + present commit_detail, with: Entities::CommitDetail else render_api_error!(result[:message], 400) diff --git a/lib/gitlab/usage_data.rb b/lib/gitlab/usage_data.rb index f7d8ee571cd..afab36e89dd 100644 --- a/lib/gitlab/usage_data.rb +++ b/lib/gitlab/usage_data.rb @@ -10,6 +10,7 @@ module Gitlab .merge(features_usage_data) .merge(components_usage_data) .merge(cycle_analytics_usage_data) + .merge(usage_counters) end def to_json(force_refresh: false) @@ -106,6 +107,10 @@ module Gitlab } end + def usage_counters + UsageCounters.first_or_create.totals + end + def components_usage_data { gitlab_pages: { enabled: Gitlab.config.pages.enabled, version: Gitlab::Pages::VERSION }, diff --git a/spec/factories/usage_counters.rb b/spec/factories/usage_counters.rb new file mode 100644 index 00000000000..23277fd741e --- /dev/null +++ b/spec/factories/usage_counters.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :usage_counters, class: 'UsageCounters' do + end +end diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index ec2bdbe22e1..b2a0afcb827 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -330,3 +330,6 @@ resource_label_events: - merge_request - epic - label +usage_counters: +- project +- web_ide_commits diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb index 1ec1fe10744..d669c42ab4a 100644 --- a/spec/lib/gitlab/usage_data_spec.rb +++ b/spec/lib/gitlab/usage_data_spec.rb @@ -46,6 +46,7 @@ describe Gitlab::UsageData do git database avg_cycle_analytics + web_ide_commits )) end diff --git a/spec/models/usage_counters_spec.rb b/spec/models/usage_counters_spec.rb new file mode 100644 index 00000000000..0adbfe3cef7 --- /dev/null +++ b/spec/models/usage_counters_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe UsageCounters do + let!(:usage_counters) { create(:usage_counters) } + + describe 'maximum number of records' do + it 'allows for one single record to be created' do + expect do + described_class.create! + end.to raise_error(ActiveRecord::RecordInvalid, 'Validation failed: There can only be one usage counters record per instance') + end + end + + describe '#totals' do + subject { usage_counters.totals } + + it 'returns counters' do + is_expected.to include(web_ide_commits: 0) + end + end + + describe '#increment_counters' do + it 'increments specified counters by 1' do + expect do + usage_counters.increment_counters(:web_ide_commits) + end.to change { usage_counters.reload.web_ide_commits }.from(0).to(1) + end + end +end diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb index f3fb88474a4..aebc24dd9a2 100644 --- a/spec/requests/api/commits_spec.rb +++ b/spec/requests/api/commits_spec.rb @@ -278,6 +278,12 @@ describe API::Commits do } end + it 'does not increment the usage counters using access token authentication' do + post api(url, user), valid_c_params + + expect_any_instance_of(::UsageCounters).not_to receive(:increment_counters) + end + it 'a new file in project repo' do post api(url, user), valid_c_params diff --git a/spec/services/projects/usage_counters_increment_service_spec.rb b/spec/services/projects/usage_counters_increment_service_spec.rb new file mode 100644 index 00000000000..d82a7337665 --- /dev/null +++ b/spec/services/projects/usage_counters_increment_service_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Projects::UsageCountersIncrementService do + let(:project) { create(:usage_counters) } + + subject(:service) { described_class.new(project) } + + context '#execute' do + context 'when single attribute is passed' do + it 'increments attribute' do + expect do + service.execute(:web_ide_commits) + end.to change { project.usage_counters.reload.web_ide_commits }.from(0).to(1) + end + end + + context 'when array is passed' do + it 'increments specified attributes' do + expect do + service.execute(%i(web_ide_commits)) + end.to change { project.usage_counters.reload.web_ide_commits }.from(0).to(1) + end + end + end +end -- cgit v1.2.1 From 10534e31622242ee6d6ad4d5502e1f2808979b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eva=20Kadlecova=CC=81?= Date: Sun, 30 Sep 2018 11:31:01 +0200 Subject: Filter issues without an Assignee via the API --- app/finders/issuable_finder.rb | 6 +++--- changelogs/unreleased/41205-fix-filtering-issues.yml | 5 +++++ spec/finders/issues_finder_spec.rb | 8 ++++++++ spec/requests/api/issues_spec.rb | 9 +++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 changelogs/unreleased/41205-fix-filtering-issues.yml diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 251a559878a..0209a1397b9 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -236,16 +236,16 @@ class IssuableFinder # rubocop: enable CodeReuse/ActiveRecord def assignee_id? - params[:assignee_id].present? && params[:assignee_id] != NONE + params[:assignee_id].present? && params[:assignee_id].to_s != NONE end def assignee_username? - params[:assignee_username].present? && params[:assignee_username] != NONE + params[:assignee_username].present? && params[:assignee_username].to_s != NONE end def no_assignee? # Assignee_id takes precedence over assignee_username - params[:assignee_id] == NONE || params[:assignee_username] == NONE + params[:assignee_id].to_s == NONE || params[:assignee_username].to_s == NONE end # rubocop: disable CodeReuse/ActiveRecord diff --git a/changelogs/unreleased/41205-fix-filtering-issues.yml b/changelogs/unreleased/41205-fix-filtering-issues.yml new file mode 100644 index 00000000000..ef1a11aad08 --- /dev/null +++ b/changelogs/unreleased/41205-fix-filtering-issues.yml @@ -0,0 +1,5 @@ +--- +title: Filter issues without an Assignee via the API +merge_request: 22009 +author: Eva Kadlecová +type: fixed diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb index 07a2fa86dd7..d78451112ec 100644 --- a/spec/finders/issues_finder_spec.rb +++ b/spec/finders/issues_finder_spec.rb @@ -56,6 +56,14 @@ describe IssuesFinder do end end + context 'filtering by no assignee' do + let(:params) { { assignee_id: 0 } } + + it 'returns issues not assign to any assignee' do + expect(issues).to contain_exactly(issue4) + end + end + context 'filtering by group_id' do let(:params) { { group_id: group.id } } diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb index f64815feffa..1e2e13a723c 100644 --- a/spec/requests/api/issues_spec.rb +++ b/spec/requests/api/issues_spec.rb @@ -168,6 +168,15 @@ describe API::Issues do expect(first_issue['id']).to eq(issue2.id) end + it 'returns issues with no assignee' do + issue2 = create(:issue, author: user2, project: project) + + get api('/issues', user), assignee_id: 0, scope: 'all' + + expect_paginated_array_response(size: 1) + expect(first_issue['id']).to eq(issue2.id) + end + it 'returns issues reacted by the authenticated user by the given emoji' do issue2 = create(:issue, project: project, author: user, assignees: [user]) award_emoji = create(:award_emoji, awardable: issue2, user: user2, name: 'star') -- cgit v1.2.1 From 96faeb330860d8f6c509947e9f683c337ccdb6f8 Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Mon, 1 Oct 2018 14:33:01 -0300 Subject: Add changelog --- changelogs/unreleased/security-osw-user-info-leak-discussions.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/security-osw-user-info-leak-discussions.yml diff --git a/changelogs/unreleased/security-osw-user-info-leak-discussions.yml b/changelogs/unreleased/security-osw-user-info-leak-discussions.yml new file mode 100644 index 00000000000..5acbb80fc3d --- /dev/null +++ b/changelogs/unreleased/security-osw-user-info-leak-discussions.yml @@ -0,0 +1,5 @@ +--- +title: Filter user sensitive data from discussions JSON +merge_request: 2536 +author: +type: security -- cgit v1.2.1 From 2ca4cb756c487cb6c3bd75b18c6e794d28663293 Mon Sep 17 00:00:00 2001 From: George Tsiolis Date: Mon, 1 Oct 2018 23:31:46 +0300 Subject: Add missing changelog type [ci skip] --- doc/development/changelog.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/development/changelog.md b/doc/development/changelog.md index 9e0c81b3d60..f06d40d1dbb 100644 --- a/doc/development/changelog.md +++ b/doc/development/changelog.md @@ -110,7 +110,8 @@ At this point the script would ask you to select the category of the change (map 4. New deprecation 5. Feature removal 6. Security fix -7. Other +7. Performance improvement +8. Other ``` The entry filename is based on the name of the current Git branch. If you run -- cgit v1.2.1 From 3317c4ba07b2b2252e75c53152b42a7b3c90b2c6 Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Fri, 28 Sep 2018 23:10:49 +0000 Subject: Don't check for the groups list before filtering Filter immediately because the page is going to reload anyway. And don't check for the loading indicator because it the groups list tree container appears after it disappears. --- app/views/dashboard/groups/_groups.html.haml | 2 +- app/views/shared/groups/_empty_state.html.haml | 2 +- qa/qa/page/component/groups_filter.rb | 38 ++++---------------------- 3 files changed, 8 insertions(+), 34 deletions(-) diff --git a/app/views/dashboard/groups/_groups.html.haml b/app/views/dashboard/groups/_groups.html.haml index 94d53b78c0f..db856ef7d7b 100644 --- a/app/views/dashboard/groups/_groups.html.haml +++ b/app/views/dashboard/groups/_groups.html.haml @@ -1,4 +1,4 @@ .js-groups-list-holder #js-groups-tree{ data: { hide_projects: 'true', endpoint: dashboard_groups_path(format: :json), path: dashboard_groups_path, form_sel: 'form#group-filter-form', filter_sel: '.js-groups-list-filter', holder_sel: '.js-groups-list-holder', dropdown_sel: '.js-group-filter-dropdown-wrap' } } .loading-container.text-center - = icon('spinner spin 2x', class: 'loading-animation prepend-top-20 qa-loading-animation') + = icon('spinner spin 2x', class: 'loading-animation prepend-top-20') diff --git a/app/views/shared/groups/_empty_state.html.haml b/app/views/shared/groups/_empty_state.html.haml index c35f6f5a3c1..f6b3a49eacb 100644 --- a/app/views/shared/groups/_empty_state.html.haml +++ b/app/views/shared/groups/_empty_state.html.haml @@ -1,4 +1,4 @@ -.group-empty-state.row.align-items-center.justify-content-center.qa-groups-empty-state +.group-empty-state.row.align-items-center.justify-content-center .icon.text-center.order-md-2 = custom_icon("icon_empty_groups") diff --git a/qa/qa/page/component/groups_filter.rb b/qa/qa/page/component/groups_filter.rb index 4c1c3953db6..cc50bb439b4 100644 --- a/qa/qa/page/component/groups_filter.rb +++ b/qa/qa/page/component/groups_filter.rb @@ -9,52 +9,26 @@ module QA element :groups_filter end - base.view 'app/views/shared/groups/_empty_state.html.haml' do - element :groups_empty_state - end - base.view 'app/assets/javascripts/groups/components/groups.vue' do element :groups_list_tree_container end - - base.view 'app/views/dashboard/groups/_groups.html.haml' do - element :loading_animation - end end private - # Filter the list of groups/projects by name - # If submit is true the return key will be sent to the browser to reload - # the page and fetch only the filtered results - def filter_by_name(name, submit: false) - wait(reload: false) do - # Wait 0 for the empty state element because it is there immediately - # if there are no groups. Otherwise there's a loading indicator and - # then groups_list_tree_container appears, which might take longer - page.has_css?(element_selector_css(:groups_empty_state), wait: 0) || - page.has_css?(element_selector_css(:groups_list_tree_container)) - end - - field = find_element :groups_filter - field.set(name) - field.send_keys(:return) if submit - end - def has_filtered_group?(name) # Filter and submit to reload the page and only retrieve the filtered results - filter_by_name(name, submit: true) + find_element(:groups_filter).set(name).send_keys(:return) - # Since we submitted after filtering the absence of the loading - # animation and the presence of groups_list_tree_container means we - # have the complete filtered list of groups + # Since we submitted after filtering, the presence of + # groups_list_tree_container means we have the complete filtered list + # of groups wait(reload: false) do - page.has_no_css?(element_selector_css(:loading_animation)) && - page.has_css?(element_selector_css(:groups_list_tree_container)) + page.has_css?(element_selector_css(:groups_list_tree_container)) end # If there are no groups we'll know immediately because we filtered the list - return if page.has_text?(/No groups or projects matched your search/, wait: 0) + return false if page.has_text?('No groups or projects matched your search', wait: 0) # The name will be present as filter input so we check for a link, not text page.has_link?(name, wait: 0) -- cgit v1.2.1 From 21a5e70bf49363881c1215fe695255db61df7cba Mon Sep 17 00:00:00 2001 From: Drew Blessing Date: Mon, 1 Oct 2018 17:39:43 -0500 Subject: Update to Rouge 3.3.0 including frozen string literals for improved memory usage --- Gemfile.lock | 2 +- Gemfile.rails5.lock | 2 +- changelogs/unreleased/rouge-3-3-0.yml | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/rouge-3-3-0.yml diff --git a/Gemfile.lock b/Gemfile.lock index d8eaaac99b1..877a07ea007 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -731,7 +731,7 @@ GEM retriable (3.1.2) rinku (2.0.0) rotp (2.1.2) - rouge (3.2.1) + rouge (3.3.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) diff --git a/Gemfile.rails5.lock b/Gemfile.rails5.lock index ab35a4a399f..17fab719008 100644 --- a/Gemfile.rails5.lock +++ b/Gemfile.rails5.lock @@ -740,7 +740,7 @@ GEM retriable (3.1.2) rinku (2.0.0) rotp (2.1.2) - rouge (3.2.1) + rouge (3.3.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) diff --git a/changelogs/unreleased/rouge-3-3-0.yml b/changelogs/unreleased/rouge-3-3-0.yml new file mode 100644 index 00000000000..7cf6c75920a --- /dev/null +++ b/changelogs/unreleased/rouge-3-3-0.yml @@ -0,0 +1,6 @@ +--- +title: Update to Rouge 3.3.0 including frozen string literals for improved memory + usage +merge_request: +author: +type: changed -- cgit v1.2.1 From e652d71e2a8d239a5bacfa31791b705a1af07dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Rodr=C3=ADguez?= Date: Mon, 1 Oct 2018 23:00:35 +0000 Subject: Update Workhorse to 7.0.0 for Gitaly's new auth scheme --- GITLAB_WORKHORSE_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index f3b5af39e43..4122521804f 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -6.1.1 +7.0.0 \ No newline at end of file -- cgit v1.2.1 From 6a63546fbcf196f2968e9c8f5db42ce5863ddd9b Mon Sep 17 00:00:00 2001 From: Simon Knox Date: Tue, 2 Oct 2018 13:09:43 +1000 Subject: Speed up karma runs for development Using DefinePlugin means the block wrapped in GENERATE_COVERAGE_REPORT gets eliminated. Previously it was always included (with the entire app!), even if using -f option --- config/karma.config.js | 7 ++++++- spec/javascripts/test_bundle.js | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/config/karma.config.js b/config/karma.config.js index 74dc5c13c70..cad3c0e9193 100644 --- a/config/karma.config.js +++ b/config/karma.config.js @@ -6,6 +6,7 @@ const argumentsParser = require('commander'); const webpackConfig = require('./webpack.config.js'); const ROOT_PATH = path.resolve(__dirname, '..'); +const GENERATE_COVERAGE_REPORT = process.env.BABEL_ENV === 'coverage' || process.env.NODE_ENV === 'coverage'; function fatalError(message) { console.error(chalk.red(`\nError: ${message}\n`)); @@ -22,6 +23,10 @@ webpackConfig.optimization.splitChunks = false; // use quicker sourcemap option webpackConfig.devtool = 'cheap-inline-source-map'; +webpackConfig.plugins.push( + new webpack.DefinePlugin({ GENERATE_COVERAGE_REPORT }), +); + const specFilters = argumentsParser .option( '-f, --filter-spec [filter]', @@ -118,7 +123,7 @@ module.exports = function(config) { }; } - if (process.env.BABEL_ENV === 'coverage' || process.env.NODE_ENV === 'coverage') { + if (GENERATE_COVERAGE_REPORT) { karmaConfig.reporters.push('coverage-istanbul'); karmaConfig.coverageIstanbulReporter = { reports: ['html', 'text-summary'], diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js index 96c0844f83c..ffabd661c09 100644 --- a/spec/javascripts/test_bundle.js +++ b/spec/javascripts/test_bundle.js @@ -155,8 +155,8 @@ describe('test errors', () => { // if we're generating coverage reports, make sure to include all files so // that we can catch files with 0% coverage // see: https://github.com/deepsweet/istanbul-instrumenter-loader/issues/15 -if (process.env.BABEL_ENV === 'coverage') { // exempt these files from the coverage report +if (GENERATE_COVERAGE_REPORT) { const troubleMakers = [ './blob_edit/blob_bundle.js', './boards/components/modal/empty_state.vue', -- cgit v1.2.1 From 5d709e7e865652d795f90bfd3166abe0455df3cb Mon Sep 17 00:00:00 2001 From: Martin Wortschack Date: Tue, 2 Oct 2018 07:46:41 +0000 Subject: Resolve "Selecting an autofill suggestion for project name will not update the project slug" --- app/assets/javascripts/projects/project_new.js | 2 +- ...uggestion-for-project-name-will-not-update-the-project-slug.yml | 5 +++++ spec/features/projects/import_export/import_file_spec.rb | 7 +++---- 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changelogs/unreleased/52035-selecting-an-autofill-suggestion-for-project-name-will-not-update-the-project-slug.yml diff --git a/app/assets/javascripts/projects/project_new.js b/app/assets/javascripts/projects/project_new.js index 8a079b4b38a..ebe18b47e4e 100644 --- a/app/assets/javascripts/projects/project_new.js +++ b/app/assets/javascripts/projects/project_new.js @@ -147,7 +147,7 @@ const bindEvents = () => { $projectImportUrl.keyup(() => deriveProjectPathFromUrl($projectImportUrl)); - $projectName.keyup(() => { + $projectName.on('keyup change', () => { onProjectNameChange($projectName, $projectPath); hasUserDefinedProjectPath = $projectPath.val().trim().length > 0; }); diff --git a/changelogs/unreleased/52035-selecting-an-autofill-suggestion-for-project-name-will-not-update-the-project-slug.yml b/changelogs/unreleased/52035-selecting-an-autofill-suggestion-for-project-name-will-not-update-the-project-slug.yml new file mode 100644 index 00000000000..d56c814b139 --- /dev/null +++ b/changelogs/unreleased/52035-selecting-an-autofill-suggestion-for-project-name-will-not-update-the-project-slug.yml @@ -0,0 +1,5 @@ +--- +title: Update project path on project name autofill +merge_request: 22016 +author: +type: other diff --git a/spec/features/projects/import_export/import_file_spec.rb b/spec/features/projects/import_export/import_file_spec.rb index 65c68277167..28ae90bc0de 100644 --- a/spec/features/projects/import_export/import_file_spec.rb +++ b/spec/features/projects/import_export/import_file_spec.rb @@ -21,8 +21,9 @@ describe 'Import/Export - project import integration test', :js do context 'when selecting the namespace' do let(:user) { create(:admin) } let!(:namespace) { user.namespace } - let(:project_name) { 'Test Project Name' + SecureRandom.hex } - let(:project_path) { 'test-project-path' + SecureRandom.hex } + let(:randomHex) { SecureRandom.hex } + let(:project_name) { 'Test Project Name' + randomHex } + let(:project_path) { 'test-project-name' + randomHex } context 'prefilled the path' do it 'user imports an exported project successfully' do @@ -30,7 +31,6 @@ describe 'Import/Export - project import integration test', :js do select2(namespace.id, from: '#project_namespace_id') fill_in :project_name, with: project_name, visible: true - fill_in :project_path, with: project_path, visible: true click_import_project_tab click_link 'GitLab export' @@ -79,7 +79,6 @@ describe 'Import/Export - project import integration test', :js do select2(user.namespace.id, from: '#project_namespace_id') fill_in :project_name, with: project.name, visible: true - fill_in :project_path, with: project.path, visible: true click_import_project_tab click_link 'GitLab export' attach_file('file', file) -- cgit v1.2.1 From 47a87fbcd80e416a45b87499f5b6f9052990c1aa Mon Sep 17 00:00:00 2001 From: Simon Knox Date: Tue, 2 Oct 2018 19:01:41 +1000 Subject: Fix lint and comments --- spec/javascripts/test_bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js index ffabd661c09..d0fba401115 100644 --- a/spec/javascripts/test_bundle.js +++ b/spec/javascripts/test_bundle.js @@ -155,8 +155,8 @@ describe('test errors', () => { // if we're generating coverage reports, make sure to include all files so // that we can catch files with 0% coverage // see: https://github.com/deepsweet/istanbul-instrumenter-loader/issues/15 +if (GENERATE_COVERAGE_REPORT) { // eslint-disable-line no-undef // exempt these files from the coverage report -if (GENERATE_COVERAGE_REPORT) { const troubleMakers = [ './blob_edit/blob_bundle.js', './boards/components/modal/empty_state.vue', -- cgit v1.2.1 From 681b7d7b49313f4bf380bace7042e7972d32b4a6 Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Tue, 2 Oct 2018 22:06:01 +1300 Subject: Document how to use DB_INITIALIZE and DB_MIGRATE * Limitation of DB_INITIALIZE (run once) * helm hooks * Examples --- doc/topics/autodevops/index.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index 681dc8ff20d..646f716c0d0 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -440,6 +440,28 @@ no longer be valid as soon as the deployment job finishes. This means that Kubernetes can run the application, but in case it should be restarted or executed somewhere else, it cannot be accessed again. +> [Introduced][ce-21955] in GitLab 11.4 + +Database initialization and migrations can be configured to run within +the application pod by setting the project variables `DB_INITIALIZE` and +`DB_MIGRATE` respectively. + +If present, `DB_INITIALIZE` will be run as a shell command within an application pod as a helm +post-install hook. Note that this means that if any deploy succeeds, +`DB_INITIALIZE` will not be processed thereafter. + +If present, `DB_MIGRATE` will be run as a shell command within an application pod as +a helm pre-upgrade hook. + +For example, in a rails application : + +* `DB_INITIALIZE` can be set to `cd /app && RAILS_ENV=production + bin/setup` +* `DB_MIGRATE` can be set to `cd /app && RAILS_ENV=production bin/update` + +Note that `/app` is the location of the application as [configured by +Herokuish](https://github.com/gliderlabs/herokuish#paths) + > [Introduced][ce-19507] in GitLab 11.0. For internal and private projects a [GitLab Deploy Token](../../user/project/deploy_tokens/index.md###gitlab-deploy-token) @@ -581,6 +603,8 @@ also be customized, and you can easily use a [custom buildpack](#custom-buildpac | `BUILDPACK_URL` | The buildpack's full URL. It can point to either Git repositories or a tarball URL. For Git repositories, it is possible to point to a specific `ref`, for example `https://github.com/heroku/heroku-buildpack-ruby.git#v142` | | `SAST_CONFIDENCE_LEVEL` | The minimum confidence level of security issues you want to be reported; `1` for Low, `2` for Medium, `3` for High; defaults to `3`.| | `DEP_SCAN_DISABLE_REMOTE_CHECKS` | Whether remote Dependency Scanning checks are disabled; defaults to `"false"`. Set to `"true"` to disable checks that send data to GitLab central servers. [Read more about remote checks](https://gitlab.com/gitlab-org/security-products/dependency-scanning#remote-checks).| +| `DB_INITIALIZE` | From GitLab 11.4, this variable can be used to specify the command to run to initialize the application's database. Run inside the application pod. | +| `DB_MIGRATE` | From GitLab 11.4, this variable can be used to specify the command to run to migrate the application's database. Run inside the application pod. | | `STAGING_ENABLED` | From GitLab 10.8, this variable can be used to define a [deploy policy for staging and production environments](#deploy-policy-for-staging-and-production-environments). | | `CANARY_ENABLED` | From GitLab 11.0, this variable can be used to define a [deploy policy for canary environments](#deploy-policy-for-canary-environments). | | `INCREMENTAL_ROLLOUT_ENABLED`| From GitLab 10.8, this variable can be used to enable an [incremental rollout](#incremental-rollout-to-production) of your application for the production environment. | @@ -834,4 +858,5 @@ curl --data "value=true" --header "PRIVATE-TOKEN: personal_access_token" https:/ [postgresql]: https://www.postgresql.org/ [Auto DevOps template]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml [ee]: https://about.gitlab.com/pricing/ +[ce-21955]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21955 [ce-19507]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/19507 -- cgit v1.2.1 From 23563f5e0a5f3875289569126562f0f2fc63d3a6 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Tue, 28 Aug 2018 18:19:52 +0200 Subject: Highlight current user in comments and system notes --- .../behaviors/markdown/highlight_current_user.js | 17 +++++++ .../javascripts/behaviors/markdown/render_gfm.js | 2 + .../javascripts/notes/components/notes_app.vue | 4 ++ app/assets/stylesheets/framework/gfm.scss | 4 ++ .../unreleased/winh-highlight-current-user.yml | 5 ++ spec/features/issues/notes_on_issues_spec.rb | 23 +++++++-- .../markdown/highlight_current_user_spec.js | 55 ++++++++++++++++++++++ 7 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 app/assets/javascripts/behaviors/markdown/highlight_current_user.js create mode 100644 changelogs/unreleased/winh-highlight-current-user.yml create mode 100644 spec/javascripts/behaviors/markdown/highlight_current_user_spec.js diff --git a/app/assets/javascripts/behaviors/markdown/highlight_current_user.js b/app/assets/javascripts/behaviors/markdown/highlight_current_user.js new file mode 100644 index 00000000000..6208b3f0032 --- /dev/null +++ b/app/assets/javascripts/behaviors/markdown/highlight_current_user.js @@ -0,0 +1,17 @@ +/** + * Highlights the current user in existing elements with a user ID data attribute. + * + * @param elements DOM elements that represent user mentions + */ +export default function highlightCurrentUser(elements) { + const currentUserId = gon && gon.current_user_id; + if (!currentUserId) { + return; + } + + elements.forEach(element => { + if (parseInt(element.dataset.user, 10) === currentUserId) { + element.classList.add('current-user'); + } + }); +} diff --git a/app/assets/javascripts/behaviors/markdown/render_gfm.js b/app/assets/javascripts/behaviors/markdown/render_gfm.js index 429455f97ec..a2d4331b6d1 100644 --- a/app/assets/javascripts/behaviors/markdown/render_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/render_gfm.js @@ -2,6 +2,7 @@ import $ from 'jquery'; import syntaxHighlight from '~/syntax_highlight'; import renderMath from './render_math'; import renderMermaid from './render_mermaid'; +import highlightCurrentUser from './highlight_current_user'; // Render GitLab flavoured Markdown // @@ -11,6 +12,7 @@ $.fn.renderGFM = function renderGFM() { syntaxHighlight(this.find('.js-syntax-highlight')); renderMath(this.find('.js-render-math')); renderMermaid(this.find('.js-render-mermaid')); + highlightCurrentUser(this.find('.gfm-project_member').get()); return this; }; diff --git a/app/assets/javascripts/notes/components/notes_app.vue b/app/assets/javascripts/notes/components/notes_app.vue index d8e8efb982a..618a1581d8f 100644 --- a/app/assets/javascripts/notes/components/notes_app.vue +++ b/app/assets/javascripts/notes/components/notes_app.vue @@ -11,6 +11,7 @@ import commentForm from './comment_form.vue'; import placeholderNote from '../../vue_shared/components/notes/placeholder_note.vue'; import placeholderSystemNote from '../../vue_shared/components/notes/placeholder_system_note.vue'; import skeletonLoadingContainer from '../../vue_shared/components/notes/skeleton_note.vue'; +import highlightCurrentUser from '~/behaviors/markdown/highlight_current_user'; export default { name: 'NotesApp', @@ -96,6 +97,9 @@ export default { }); } }, + updated() { + this.$nextTick(() => highlightCurrentUser(this.$el.querySelectorAll('.gfm-project_member'))); + }, methods: { ...mapActions({ fetchDiscussions: 'fetchDiscussions', diff --git a/app/assets/stylesheets/framework/gfm.scss b/app/assets/stylesheets/framework/gfm.scss index d2ba76f5160..50d4298d418 100644 --- a/app/assets/stylesheets/framework/gfm.scss +++ b/app/assets/stylesheets/framework/gfm.scss @@ -11,6 +11,10 @@ padding: 0 2px; background-color: $blue-100; border-radius: $border-radius-default; + + &.current-user { + background-color: $orange-100; + } } .gfm-color_chip { diff --git a/changelogs/unreleased/winh-highlight-current-user.yml b/changelogs/unreleased/winh-highlight-current-user.yml new file mode 100644 index 00000000000..125a5c08c4e --- /dev/null +++ b/changelogs/unreleased/winh-highlight-current-user.yml @@ -0,0 +1,5 @@ +--- +title: Highlight current user in comments +merge_request: 21406 +author: +type: changed diff --git a/spec/features/issues/notes_on_issues_spec.rb b/spec/features/issues/notes_on_issues_spec.rb index f08c73f947c..fed77453cbb 100644 --- a/spec/features/issues/notes_on_issues_spec.rb +++ b/spec/features/issues/notes_on_issues_spec.rb @@ -3,6 +3,12 @@ require 'spec_helper' describe 'Create notes on issues', :js do let(:user) { create(:user) } + def submit_comment(text) + fill_in 'note[note]', with: text + click_button 'Comment' + wait_for_requests + end + shared_examples 'notes with reference' do let(:issue) { create(:issue, project: project) } let(:note_text) { "Check #{mention.to_reference}" } @@ -12,10 +18,7 @@ describe 'Create notes on issues', :js do sign_in(user) visit project_issue_path(project, issue) - fill_in 'note[note]', with: note_text - click_button 'Comment' - - wait_for_requests + submit_comment(note_text) end it 'creates a note with reference and cross references the issue' do @@ -74,4 +77,16 @@ describe 'Create notes on issues', :js do let(:mention) { create(:merge_request, source_project: project) } end end + + it 'highlights the current user in a comment' do + project = create(:project) + issue = create(:issue, project: project) + project.add_developer(user) + sign_in(user) + + visit project_issue_path(project, issue) + submit_comment("@#{user.username} note to self") + + expect(page).to have_selector '.gfm-project_member.current-user', text: user.username + end end diff --git a/spec/javascripts/behaviors/markdown/highlight_current_user_spec.js b/spec/javascripts/behaviors/markdown/highlight_current_user_spec.js new file mode 100644 index 00000000000..3305ddc412d --- /dev/null +++ b/spec/javascripts/behaviors/markdown/highlight_current_user_spec.js @@ -0,0 +1,55 @@ +import highlightCurrentUser from '~/behaviors/markdown/highlight_current_user'; + +describe('highlightCurrentUser', () => { + let rootElement; + let elements; + + beforeEach(() => { + setFixtures(` +
+
@first
+
@second
+
+ `); + rootElement = document.getElementById('dummy-root-element'); + elements = rootElement.querySelectorAll('[data-user]'); + }); + + describe('without current user', () => { + beforeEach(() => { + window.gon = window.gon || {}; + window.gon.current_user_id = null; + }); + + afterEach(() => { + delete window.gon.current_user_id; + }); + + it('does not highlight the user', () => { + const initialHtml = rootElement.outerHTML; + + highlightCurrentUser(elements); + + expect(rootElement.outerHTML).toBe(initialHtml); + }); + }); + + describe('with current user', () => { + beforeEach(() => { + window.gon = window.gon || {}; + window.gon.current_user_id = 2; + }); + + afterEach(() => { + delete window.gon.current_user_id; + }); + + it('highlights current user', () => { + highlightCurrentUser(elements); + + expect(elements.length).toBe(2); + expect(elements[0]).not.toHaveClass('current-user'); + expect(elements[1]).toHaveClass('current-user'); + }); + }); +}); -- cgit v1.2.1 From d8b885dcde4260d4726395ef060e06fae4589255 Mon Sep 17 00:00:00 2001 From: George Tsiolis Date: Tue, 2 Oct 2018 12:08:57 +0300 Subject: Align collapsed sidebar avatar container --- app/assets/stylesheets/framework/contextual_sidebar.scss | 2 +- changelogs/unreleased/align-collapsed-sidebar-avatar-container.yml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/align-collapsed-sidebar-avatar-container.yml diff --git a/app/assets/stylesheets/framework/contextual_sidebar.scss b/app/assets/stylesheets/framework/contextual_sidebar.scss index e2bbcc67a67..2193e8e8de3 100644 --- a/app/assets/stylesheets/framework/contextual_sidebar.scss +++ b/app/assets/stylesheets/framework/contextual_sidebar.scss @@ -113,7 +113,7 @@ } .avatar-container { - margin-right: 0; + margin: 0 auto; } } diff --git a/changelogs/unreleased/align-collapsed-sidebar-avatar-container.yml b/changelogs/unreleased/align-collapsed-sidebar-avatar-container.yml new file mode 100644 index 00000000000..db68ed10a7e --- /dev/null +++ b/changelogs/unreleased/align-collapsed-sidebar-avatar-container.yml @@ -0,0 +1,5 @@ +--- +title: Align collapsed sidebar avatar container +merge_request: 22044 +author: George Tsiolis +type: other -- cgit v1.2.1 From d366ea14380b828daadce14023f0d623b87fe0b3 Mon Sep 17 00:00:00 2001 From: Johann Hubert Sonntagbauer Date: Tue, 2 Oct 2018 10:00:58 +0000 Subject: circumvent browser cache on browser back navigation --- app/assets/javascripts/boards/index.js | 11 +++++ app/assets/javascripts/lib/utils/common_utils.js | 11 +++++ ...le-list-of-issues-on-board-after-click-back.yml | 5 +++ .../boards/reload_boards_on_browser_back_spec.rb | 48 ++++++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 changelogs/unreleased/-50928-stale-list-of-issues-on-board-after-click-back.yml create mode 100644 spec/features/boards/reload_boards_on_browser_back_spec.rb diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index 662363a6f26..caa6ce84335 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -25,6 +25,7 @@ import './components/board_sidebar'; import './components/new_list_dropdown'; import BoardAddIssuesModal from './components/modal/index.vue'; import '~/vue_shared/vue_resource_interceptor'; +import { NavigationType } from '~/lib/utils/common_utils'; export default () => { const $boardApp = document.getElementById('board-app'); @@ -32,6 +33,16 @@ export default () => { window.gl = window.gl || {}; + // check for browser back and trigger a hard reload to circumvent browser caching. + window.addEventListener('pageshow', (event) => { + const isNavTypeBackForward = window.performance && + window.performance.navigation.type === NavigationType.TYPE_BACK_FORWARD; + + if (event.persisted || isNavTypeBackForward) { + window.location.reload(); + } + }); + if (gl.IssueBoardsApp) { gl.IssueBoardsApp.$destroy(true); } diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js index 30925940807..31faa11ea72 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js +++ b/app/assets/javascripts/lib/utils/common_utils.js @@ -616,6 +616,17 @@ export const roundOffFloat = (number, precision = 0) => { return Math.round(number * multiplier) / multiplier; }; +/** + * Represents navigation type constants of the Performance Navigation API. + * Detailed explanation see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation. + */ +export const NavigationType = { + TYPE_NAVIGATE: 0, + TYPE_RELOAD: 1, + TYPE_BACK_FORWARD: 2, + TYPE_RESERVED: 255, +}; + window.gl = window.gl || {}; window.gl.utils = { ...(window.gl.utils || {}), diff --git a/changelogs/unreleased/-50928-stale-list-of-issues-on-board-after-click-back.yml b/changelogs/unreleased/-50928-stale-list-of-issues-on-board-after-click-back.yml new file mode 100644 index 00000000000..e71b09ec2e3 --- /dev/null +++ b/changelogs/unreleased/-50928-stale-list-of-issues-on-board-after-click-back.yml @@ -0,0 +1,5 @@ +--- +title: Fix stale issue boards after browser back +merge_request: 22006 +author: Johann Hubert Sonntagbauer +type: fixed diff --git a/spec/features/boards/reload_boards_on_browser_back_spec.rb b/spec/features/boards/reload_boards_on_browser_back_spec.rb new file mode 100644 index 00000000000..4b4bd705a77 --- /dev/null +++ b/spec/features/boards/reload_boards_on_browser_back_spec.rb @@ -0,0 +1,48 @@ +require 'rails_helper' + +describe 'Ensure Boards do not show stale data on browser back', :js do + let(:project) {create(:project, :public)} + let(:board) {create(:board, project: project)} + let(:user) {create(:user)} + + context 'authorized user' do + before do + project.add_maintainer(user) + + sign_in(user) + + visit project_board_path(project, board) + wait_for_requests + + page.within(first('.board .issue-count-badge-count')) do + expect(page).to have_content('0') + end + end + + it 'created issue is listed on board' do + visit new_project_issue_path(project) + wait_for_requests + + fill_in 'issue_title', with: 'issue should be shown' + + click_button 'Submit issue' + + page.go_back + wait_for_requests + + page.go_back + wait_for_requests + + page.within(first('.board .issue-count-badge-count')) do + expect(page).to have_content('1') + end + + page.within(first('.board-card')) do + issue = project.issues.find_by_title('issue should be shown') + + expect(page).to have_content(issue.to_reference) + expect(page).to have_link(issue.title, href: issue_path(issue)) + end + end + end +end -- cgit v1.2.1 From 182966312f88be877d290dd5606a8ab38efaf05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Tue, 2 Oct 2018 11:45:48 +0200 Subject: [QA] Improve admin hashed-storage settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was introduced by https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7371 for which no QA was run, even though QA files were changed. This is a follow-up to https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7531. Signed-off-by: Rémy Coutable --- .../_repository_storage.html.haml | 4 +-- .../application_settings/repository.html.haml | 2 +- .../admin/application_settings/show.html.haml | 2 +- app/views/layouts/nav/sidebar/_admin.html.haml | 8 ++--- qa/qa.rb | 7 +++-- .../admin/settings/component/repository_storage.rb | 26 ++++++++++++++++ qa/qa/page/admin/settings/main.rb | 21 ------------- qa/qa/page/admin/settings/repository.rb | 23 ++++++++++++++ qa/qa/page/admin/settings/repository_storage.rb | 23 -------------- qa/qa/page/base.rb | 8 +++++ qa/qa/page/menu/admin.rb | 36 ++++++++++++++++++++-- qa/spec/page/validator_spec.rb | 2 +- 12 files changed, 104 insertions(+), 58 deletions(-) create mode 100644 qa/qa/page/admin/settings/component/repository_storage.rb delete mode 100644 qa/qa/page/admin/settings/main.rb create mode 100644 qa/qa/page/admin/settings/repository.rb delete mode 100644 qa/qa/page/admin/settings/repository_storage.rb diff --git a/app/views/admin/application_settings/_repository_storage.html.haml b/app/views/admin/application_settings/_repository_storage.html.haml index 4523332493b..908b30cc3ce 100644 --- a/app/views/admin/application_settings/_repository_storage.html.haml +++ b/app/views/admin/application_settings/_repository_storage.html.haml @@ -5,7 +5,7 @@ .sub-section .form-group .form-check - = f.check_box :hashed_storage_enabled, class: 'form-check-input' + = f.check_box :hashed_storage_enabled, class: 'form-check-input qa-hashed-storage-checkbox' = f.label :hashed_storage_enabled, class: 'form-check-label' do Use hashed storage paths for newly created and renamed projects .form-text.text-muted @@ -48,4 +48,4 @@ .form-text.text-muted = circuitbreaker_failure_reset_time_help_text - = f.submit 'Save changes', class: "btn btn-success" + = f.submit 'Save changes', class: "btn btn-success qa-save-changes-button" diff --git a/app/views/admin/application_settings/repository.html.haml b/app/views/admin/application_settings/repository.html.haml index d8029e0c54a..be13138a764 100644 --- a/app/views/admin/application_settings/repository.html.haml +++ b/app/views/admin/application_settings/repository.html.haml @@ -13,7 +13,7 @@ .settings-content = render partial: 'repository_mirrors_form' -%section.settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) } +%section.settings.qa-repository-storage-settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) } .settings-header %h4 = _('Repository storage') diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml index e2043183a97..52731f97062 100644 --- a/app/views/admin/application_settings/show.html.haml +++ b/app/views/admin/application_settings/show.html.haml @@ -46,7 +46,7 @@ .settings-content = render 'signin' -%section.qa-terms-settings.settings.as-terms.no-animate#js-terms-settings{ class: ('expanded' if expanded_by_default?) } +%section.settings.as-terms.no-animate#js-terms-settings{ class: ('expanded' if expanded_by_default?) } .settings-header %h4 = _('Terms of Service and Privacy Policy') diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml index f912a32ee1a..5f15ba87729 100644 --- a/app/views/layouts/nav/sidebar/_admin.html.haml +++ b/app/views/layouts/nav/sidebar/_admin.html.haml @@ -1,4 +1,4 @@ -.nav-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) } +.nav-sidebar.qa-admin-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) } .nav-sidebar-inner-scroll .context-header = link_to admin_root_path, title: _('Admin Overview') do @@ -197,10 +197,10 @@ = link_to admin_application_settings_path do .nav-icon-container = sprite_icon('settings') - %span.nav-item-name + %span.nav-item-name.qa-admin-settings-item = _('Settings') - %ul.sidebar-sub-level-items + %ul.sidebar-sub-level-items.qa-admin-sidebar-submenu = nav_link(controller: :application_settings, html_options: { class: "fly-out-top-item" } ) do = link_to admin_application_settings_path do %strong.fly-out-top-item-name @@ -215,7 +215,7 @@ %span = _('Integrations') = nav_link(path: 'application_settings#repository') do - = link_to repository_admin_application_settings_path, title: _('Repository') do + = link_to repository_admin_application_settings_path, title: _('Repository'), class: 'qa-admin-settings-repository-item' do %span = _('Repository') - if template_exists?('admin/application_settings/templates') diff --git a/qa/qa.rb b/qa/qa.rb index 952084085d5..227d4424b09 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -236,8 +236,11 @@ module QA module Admin module Settings - autoload :RepositoryStorage, 'qa/page/admin/settings/repository_storage' - autoload :Main, 'qa/page/admin/settings/main' + autoload :Repository, 'qa/page/admin/settings/repository' + + module Component + autoload :RepositoryStorage, 'qa/page/admin/settings/component/repository_storage' + end end end diff --git a/qa/qa/page/admin/settings/component/repository_storage.rb b/qa/qa/page/admin/settings/component/repository_storage.rb new file mode 100644 index 00000000000..2ed0cd73aa3 --- /dev/null +++ b/qa/qa/page/admin/settings/component/repository_storage.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module QA + module Page + module Admin + module Settings + module Component + class RepositoryStorage < Page::Base + view 'app/views/admin/application_settings/_repository_storage.html.haml' do + element :hashed_storage_checkbox + element :save_changes_button + end + + def enable_hashed_storage + check_element :hashed_storage_checkbox + end + + def save_settings + click_element :save_changes_button + end + end + end + end + end + end +end diff --git a/qa/qa/page/admin/settings/main.rb b/qa/qa/page/admin/settings/main.rb deleted file mode 100644 index 73034ffe0d8..00000000000 --- a/qa/qa/page/admin/settings/main.rb +++ /dev/null @@ -1,21 +0,0 @@ -module QA - module Page - module Admin - module Settings - class Main < Page::Base - include QA::Page::Settings::Common - - view 'app/views/admin/application_settings/show.html.haml' do - element :terms_settings - end - - def expand_repository_storage(&block) - expand_section(:terms_settings) do - RepositoryStorage.perform(&block) - end - end - end - end - end - end -end diff --git a/qa/qa/page/admin/settings/repository.rb b/qa/qa/page/admin/settings/repository.rb new file mode 100644 index 00000000000..b7f1deb21bd --- /dev/null +++ b/qa/qa/page/admin/settings/repository.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module QA + module Page + module Admin + module Settings + class Repository < Page::Base + include QA::Page::Settings::Common + + view 'app/views/admin/application_settings/repository.html.haml' do + element :repository_storage_settings + end + + def expand_repository_storage(&block) + expand_section(:repository_storage_settings) do + Component::RepositoryStorage.perform(&block) + end + end + end + end + end + end +end diff --git a/qa/qa/page/admin/settings/repository_storage.rb b/qa/qa/page/admin/settings/repository_storage.rb deleted file mode 100644 index 68dd23a41e1..00000000000 --- a/qa/qa/page/admin/settings/repository_storage.rb +++ /dev/null @@ -1,23 +0,0 @@ -module QA - module Page - module Admin - module Settings - class RepositoryStorage < Page::Base - view 'app/views/admin/application_settings/_repository_storage.html.haml' do - element :submit, "submit 'Save changes'" - element :hashed_storage, - 'Use hashed storage paths for newly created and renamed projects' - end - - def enable_hashed_storage - check 'Use hashed storage paths for newly created and renamed projects' - end - - def save_settings - click_button 'Save changes' - end - end - end - end - end -end diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index a87536671c6..142707521df 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -68,6 +68,10 @@ module QA all(element_selector_css(name)) end + def check_element(name) + find_element(name).set(true) + end + def click_element(name) find_element(name).click end @@ -86,6 +90,10 @@ module QA end end + def scroll_to_element(name, *args) + scroll_to(element_selector_css(name), *args) + end + def element_selector_css(name) Page::Element.new(name).selector_css end diff --git a/qa/qa/page/menu/admin.rb b/qa/qa/page/menu/admin.rb index 573b98f7386..bf05a912bc6 100644 --- a/qa/qa/page/menu/admin.rb +++ b/qa/qa/page/menu/admin.rb @@ -3,11 +3,41 @@ module QA module Menu class Admin < Page::Base view 'app/views/layouts/nav/sidebar/_admin.html.haml' do - element :settings, "_('Settings')" + element :admin_sidebar + element :admin_sidebar_submenu + element :admin_settings_item + element :admin_settings_repository_item end - def go_to_settings - click_link 'Settings' + def go_to_repository_settings + hover_settings do + within_submenu do + click_element :admin_settings_repository_item + end + end + end + + private + + def hover_settings + within_sidebar do + scroll_to_element(:admin_settings_item) + find_element(:admin_settings_item).hover + + yield + end + end + + def within_sidebar + within_element(:admin_sidebar) do + yield + end + end + + def within_submenu + within_element(:admin_sidebar_submenu) do + yield + end end end end diff --git a/qa/spec/page/validator_spec.rb b/qa/spec/page/validator_spec.rb index 55957649904..0ae6e66d767 100644 --- a/qa/spec/page/validator_spec.rb +++ b/qa/spec/page/validator_spec.rb @@ -30,7 +30,7 @@ describe QA::Page::Validator do let(:view) { spy('view') } before do - allow(QA::Page::Admin::Settings::Main) + allow(QA::Page::Admin::Settings::Repository) .to receive(:views).and_return([view]) end -- cgit v1.2.1 From bba99da98cd0b3d8fbcee7b02fb3d0ad7d642a24 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 1 Oct 2018 23:13:40 -0400 Subject: Improve logging when username update fails due to registry tags When a user cannot be renamed due to existing container registry tags, log the namespace and an example project that has tags. --- app/models/concerns/storage/legacy_namespace.rb | 6 ++++-- app/models/namespace.rb | 4 ++++ .../sh-improve-container-tags-update-username.yml | 5 +++++ spec/models/namespace_spec.rb | 24 +++++++++++++++++++++- 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 changelogs/unreleased/sh-improve-container-tags-update-username.yml diff --git a/app/models/concerns/storage/legacy_namespace.rb b/app/models/concerns/storage/legacy_namespace.rb index 9785011720a..7723c07279d 100644 --- a/app/models/concerns/storage/legacy_namespace.rb +++ b/app/models/concerns/storage/legacy_namespace.rb @@ -5,8 +5,10 @@ module Storage extend ActiveSupport::Concern def move_dir - if any_project_has_container_registry_tags? - raise Gitlab::UpdatePathError.new('Namespace cannot be moved, because at least one project has tags in container registry') + proj_with_tags = first_project_with_container_registry_tags + + if proj_with_tags + raise Gitlab::UpdatePathError.new("Namespace #{name} (#{id}) cannot be moved because at least one project (e.g. #{proj_with_tags.name} (#{proj_with_tags.id})) has tags in container registry") end parent_was = if parent_changed? && parent_id_was.present? diff --git a/app/models/namespace.rb b/app/models/namespace.rb index c54be778d1b..599bedde27d 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -135,6 +135,10 @@ class Namespace < ActiveRecord::Base all_projects.any?(&:has_container_registry_tags?) end + def first_project_with_container_registry_tags + all_projects.find(&:has_container_registry_tags?) + end + def send_update_instructions projects.each do |project| project.send_move_instructions("#{full_path_was}/#{project.path}") diff --git a/changelogs/unreleased/sh-improve-container-tags-update-username.yml b/changelogs/unreleased/sh-improve-container-tags-update-username.yml new file mode 100644 index 00000000000..1a21ae84314 --- /dev/null +++ b/changelogs/unreleased/sh-improve-container-tags-update-username.yml @@ -0,0 +1,5 @@ +--- +title: Improve logging when username update fails due to registry tags +merge_request: 22038 +author: +type: other diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb index 3649990670b..22dc81acfda 100644 --- a/spec/models/namespace_spec.rb +++ b/spec/models/namespace_spec.rb @@ -82,6 +82,27 @@ describe Namespace do it { expect(namespace.human_name).to eq(namespace.owner_name) } end + describe '#first_project_with_container_registry_tags' do + let(:container_repository) { create(:container_repository) } + let!(:project) { create(:project, namespace: namespace, container_repositories: [container_repository]) } + + before do + stub_container_registry_config(enabled: true) + end + + it 'returns the project' do + stub_container_registry_tags(repository: :any, tags: ['tag']) + + expect(namespace.first_project_with_container_registry_tags).to eq(project) + end + + it 'returns no project' do + stub_container_registry_tags(repository: :any, tags: nil) + + expect(namespace.first_project_with_container_registry_tags).to be_nil + end + end + describe '.search' do let(:namespace) { create(:namespace) } @@ -184,7 +205,8 @@ describe Namespace do end it 'raises an error about not movable project' do - expect { namespace.move_dir }.to raise_error(/Namespace cannot be moved/) + expect { namespace.move_dir }.to raise_error(Gitlab::UpdatePathError, + /Namespace .* cannot be moved/) end end end -- cgit v1.2.1 From 1c4187e38e09c8dfc4d0cdbd4c702aff5d695acb Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 13:01:55 +0200 Subject: Treat nil git push revisons as a blank Git SHA value --- lib/gitlab/git/push.rb | 4 ++-- spec/lib/gitlab/git/push_spec.rb | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb index 603f860e4f8..7c1309721fd 100644 --- a/lib/gitlab/git/push.rb +++ b/lib/gitlab/git/push.rb @@ -9,8 +9,8 @@ module Gitlab def initialize(project, oldrev, newrev, ref) @project = project - @oldrev = oldrev - @newrev = newrev + @oldrev = oldrev.presence || Gitlab::Git::BLANK_SHA + @newrev = newrev.presence || Gitlab::Git::BLANK_SHA @ref = ref end diff --git a/spec/lib/gitlab/git/push_spec.rb b/spec/lib/gitlab/git/push_spec.rb index 2a7a357f384..566c8209504 100644 --- a/spec/lib/gitlab/git/push_spec.rb +++ b/spec/lib/gitlab/git/push_spec.rb @@ -63,6 +63,12 @@ describe Gitlab::Git::Push do it { is_expected.not_to be_branch_updated } end + + context 'when oldrev is nil' do + let(:oldrev) { nil } + + it { is_expected.not_to be_branch_updated } + end end describe '#force_push?' do @@ -125,4 +131,36 @@ describe Gitlab::Git::Push do end end end + + describe '#oldrev' do + context 'when a valid oldrev is provided' do + it 'returns oldrev' do + expect(subject.oldrev).to eq oldrev + end + end + + context 'when a nil valud is provided' do + let(:oldrev) { nil } + + it 'returns blank SHA' do + expect(subject.oldrev).to eq Gitlab::Git::BLANK_SHA + end + end + end + + describe '#newrev' do + context 'when valid newrev is provided' do + it 'returns newrev' do + expect(subject.newrev).to eq newrev + end + end + + context 'when a nil valud is provided' do + let(:newrev) { nil } + + it 'returns blank SHA' do + expect(subject.newrev).to eq Gitlab::Git::BLANK_SHA + end + end + end end -- cgit v1.2.1 From 1490933090166d71ce009708a70a16b156415052 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 13:10:56 +0200 Subject: Expose paths modified by a push from a pipeline class --- app/models/ci/pipeline.rb | 28 ++++++++++++++++++++++ spec/models/ci/pipeline_spec.rb | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 6dac577c514..c0fb79a37e2 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -627,6 +627,18 @@ module Ci end end + def branch_updated? + strong_memoize(:branch_updated) do + push_details.branch_updated? + end + end + + def modified_paths + strong_memoize(:changes) do + push_details.modified_paths + end + end + private def ci_yaml_from_repo @@ -650,6 +662,22 @@ module Ci Gitlab::DataBuilder::Pipeline.build(self) end + def push_details + strong_memoize(:push_details) do + Gitlab::Git::Push.new(project, before_sha, sha, push_ref) + end + end + + def push_ref + if branch? + Gitlab::Git::BRANCH_REF_PREFIX + ref.to_s + elsif tag? + Gitlab::Git::TAG_REF_PREFIX + ref.to_s + else + raise ArgumentError, 'Invalid pipeline type!' + end + end + def latest_builds_status return 'failed' unless yaml_errors.blank? diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 4755702c0e9..1060417b03b 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -825,6 +825,57 @@ describe Ci::Pipeline, :mailer do end end + describe '#branch_updated?' do + context 'when pipeline has before SHA' do + before do + pipeline.update_column(:before_sha, 'a1b2c3d4') + end + + it 'runs on a branch update push' do + expect(pipeline.before_sha).not_to be Gitlab::Git::BLANK_SHA + expect(pipeline.branch_updated?).to be true + end + end + + context 'when pipeline does not have before SHA' do + before do + pipeline.update_column(:before_sha, Gitlab::Git::BLANK_SHA) + end + + it 'does not run on a branch updating push' do + expect(pipeline.branch_updated?).to be false + end + end + end + + describe '#modified_paths' do + context 'when old and new revisions are set' do + let(:project) { create(:project, :repository) } + + before do + pipeline.update(before_sha: '1234abcd', sha: '2345bcde') + end + + it 'fetches stats for changes between commits' do + expect(project.repository) + .to receive(:diff_stats).with('1234abcd', '2345bcde') + .and_call_original + + pipeline.modified_paths + end + end + + context 'when either old or new revision is missing' do + before do + pipeline.update_column(:before_sha, Gitlab::Git::BLANK_SHA) + end + + it 'raises an error' do + expect { pipeline.modified_paths }.to raise_error(ArgumentError) + end + end + end + describe '#has_kubernetes_active?' do context 'when kubernetes is active' do shared_examples 'same behavior between KubernetesService and Platform::Kubernetes' do -- cgit v1.2.1 From c95303567eb822b1482ffe2cf5bd3cfc606f3c3a Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Tue, 2 Oct 2018 11:25:22 +0000 Subject: Use tiller locally for Auto Devops --- .../unreleased/51942-auto-devops-local-tiller.yml | 5 ++++ lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml | 27 ++++++++++++++-------- 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 changelogs/unreleased/51942-auto-devops-local-tiller.yml diff --git a/changelogs/unreleased/51942-auto-devops-local-tiller.yml b/changelogs/unreleased/51942-auto-devops-local-tiller.yml new file mode 100644 index 00000000000..0088d6dc598 --- /dev/null +++ b/changelogs/unreleased/51942-auto-devops-local-tiller.yml @@ -0,0 +1,5 @@ +--- +title: Use local tiller for Auto DevOps +merge_request: 22036 +author: +type: changed diff --git a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml index aebaf2d6982..9d01bcb7ca6 100644 --- a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @@ -49,7 +49,7 @@ variables: POSTGRES_DB: $CI_ENVIRONMENT_SLUG KUBERNETES_VERSION: 1.8.6 - HELM_VERSION: 2.10.0 + HELM_VERSION: 2.11.0 DOCKER_DRIVER: overlay2 @@ -239,7 +239,7 @@ review: - install_dependencies - download_chart - ensure_namespace - - install_tiller + - initialize_tiller - create_secret - deploy - persist_environment_url @@ -265,6 +265,7 @@ stop_review: GIT_STRATEGY: none script: - install_dependencies + - initialize_tiller - delete environment: name: review/$CI_COMMIT_REF_NAME @@ -299,7 +300,7 @@ staging: - install_dependencies - download_chart - ensure_namespace - - install_tiller + - initialize_tiller - create_secret - deploy environment: @@ -323,7 +324,7 @@ canary: - install_dependencies - download_chart - ensure_namespace - - install_tiller + - initialize_tiller - create_secret - deploy canary environment: @@ -344,7 +345,7 @@ canary: - install_dependencies - download_chart - ensure_namespace - - install_tiller + - initialize_tiller - create_secret - deploy - delete canary @@ -392,7 +393,7 @@ production_manual: - install_dependencies - download_chart - ensure_namespace - - install_tiller + - initialize_tiller - create_secret - deploy rollout $ROLLOUT_PERCENTAGE - scale stable $((100-ROLLOUT_PERCENTAGE)) @@ -651,7 +652,12 @@ rollout 100%: curl "https://kubernetes-helm.storage.googleapis.com/helm-v${HELM_VERSION}-linux-amd64.tar.gz" | tar zx mv linux-amd64/helm /usr/bin/ + mv linux-amd64/tiller /usr/bin/ helm version --client + tiller -version + + helm init --client-only + helm plugin install https://github.com/adamreese/helm-local curl -L -o /usr/bin/kubectl "https://storage.googleapis.com/kubernetes-release/release/v${KUBERNETES_VERSION}/bin/linux/amd64/kubectl" chmod +x /usr/bin/kubectl @@ -758,10 +764,13 @@ rollout 100%: echo "" } - function install_tiller() { + function initialize_tiller() { echo "Checking Tiller..." - helm init --upgrade - kubectl rollout status -n "$TILLER_NAMESPACE" -w "deployment/tiller-deploy" + + helm local start + helm local status + export HELM_HOST=":44134" + if ! helm version --debug; then echo "Failed to init Tiller." return 1 -- cgit v1.2.1 From 740ee583b3b0950c9b8ab5346e749b52355ec416 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 14:03:20 +0200 Subject: Make it possible to specifiy only: changes keywords --- lib/gitlab/ci/config/entry/policy.rb | 6 ++++-- spec/lib/gitlab/ci/config/entry/policy_spec.rb | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/ci/config/entry/policy.rb b/lib/gitlab/ci/config/entry/policy.rb index 09e8e52b60f..6ba2d9bbf50 100644 --- a/lib/gitlab/ci/config/entry/policy.rb +++ b/lib/gitlab/ci/config/entry/policy.rb @@ -25,17 +25,19 @@ module Gitlab include Entry::Validatable include Entry::Attributable - attributes :refs, :kubernetes, :variables + ALLOWED_KEYS = %i[refs kubernetes variables changes] + attributes :refs, :kubernetes, :variables, :changes validations do validates :config, presence: true - validates :config, allowed_keys: %i[refs kubernetes variables] + validates :config, allowed_keys: ALLOWED_KEYS validate :variables_expressions_syntax with_options allow_nil: true do validates :refs, array_of_strings_or_regexps: true validates :kubernetes, allowed_values: %w[active] validates :variables, array_of_strings: true + validates :changes, array_of_strings: true end def variables_expressions_syntax diff --git a/spec/lib/gitlab/ci/config/entry/policy_spec.rb b/spec/lib/gitlab/ci/config/entry/policy_spec.rb index 83d39b82068..bef93fe7af7 100644 --- a/spec/lib/gitlab/ci/config/entry/policy_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/policy_spec.rb @@ -1,4 +1,5 @@ -require 'spec_helper' +require 'fast_spec_helper' +require_dependency 'active_model' describe Gitlab::Ci::Config::Entry::Policy do let(:entry) { described_class.new(config) } @@ -124,6 +125,23 @@ describe Gitlab::Ci::Config::Entry::Policy do end end + context 'when specifying a valid changes policy' do + let(:config) { { changes: %w[some/* paths/**/*.rb] } } + + it 'is a correct configuraton' do + expect(entry).to be_valid + expect(entry.value).to eq(config) + end + end + + context 'when changes policy is invalid' do + let(:config) { { changes: [1, 2] } } + + it 'returns errors' do + expect(entry.errors).to include /changes should be an array of strings/ + end + end + context 'when specifying unknown policy' do let(:config) { { refs: ['master'], invalid: :something } } -- cgit v1.2.1 From 23ba3b02b1988205043253aee9ba91ed802f01c5 Mon Sep 17 00:00:00 2001 From: Dylan Griffith Date: Tue, 2 Oct 2018 15:40:56 +0300 Subject: Minor doc update for auto devops db migrations --- doc/topics/autodevops/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index 646f716c0d0..f67d35dac9e 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -459,7 +459,9 @@ For example, in a rails application : bin/setup` * `DB_MIGRATE` can be set to `cd /app && RAILS_ENV=production bin/update` -Note that `/app` is the location of the application as [configured by +NOTE: **Note:** +The `/app` path is the directory of your project inside the docker image +as [configured by Herokuish](https://github.com/gliderlabs/herokuish#paths) > [Introduced][ce-19507] in GitLab 11.0. -- cgit v1.2.1 From 0f78ceca1bb5b9db9760a52a20b96e84892bd9ad Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 14:48:18 +0200 Subject: Add only/except pipeline build policy for `changes` --- lib/gitlab/ci/build/policy/changes.rb | 21 ++++++++ spec/lib/gitlab/ci/build/policy/changes_spec.rb | 69 +++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 lib/gitlab/ci/build/policy/changes.rb create mode 100644 spec/lib/gitlab/ci/build/policy/changes_spec.rb diff --git a/lib/gitlab/ci/build/policy/changes.rb b/lib/gitlab/ci/build/policy/changes.rb new file mode 100644 index 00000000000..4bcb27ad73b --- /dev/null +++ b/lib/gitlab/ci/build/policy/changes.rb @@ -0,0 +1,21 @@ +module Gitlab + module Ci + module Build + module Policy + class Changes < Policy::Specification + def initialize(globs) + @globs = Array(globs) + end + + def satisfied_by?(pipeline, seed) + return true unless pipeline.branch_updated? + + pipeline.modified_paths.any? do |path| + @globs.any? { |glob| File.fnmatch?(glob, path, File::FNM_PATHNAME) } + end + end + end + end + end + end +end diff --git a/spec/lib/gitlab/ci/build/policy/changes_spec.rb b/spec/lib/gitlab/ci/build/policy/changes_spec.rb new file mode 100644 index 00000000000..1eb1fbb67e7 --- /dev/null +++ b/spec/lib/gitlab/ci/build/policy/changes_spec.rb @@ -0,0 +1,69 @@ +require 'spec_helper' + +describe Gitlab::Ci::Build::Policy::Changes do + set(:project) { create(:project) } + + let(:pipeline) do + build(:ci_empty_pipeline, project: project, + ref: 'master', + source: :push, + sha: '1234abcd', + before_sha: '0123aabb') + end + + let(:ci_build) do + build(:ci_build, pipeline: pipeline, project: project, ref: 'master') + end + + let(:seed) { double('build seed', to_resource: ci_build) } + + before do + allow(pipeline).to receive(:modified_paths) do + %w[some/modified/ruby/file.rb some/other_file.txt] + end + end + + describe '#satisfied_by?' do + it 'is satisfied by matching literal path' do + policy = described_class.new(%w[some/other_file.txt]) + + expect(policy).to be_satisfied_by(pipeline, seed) + end + + it 'is satisfied by matching simple pattern' do + policy = described_class.new(%w[some/*.txt]) + + expect(policy).to be_satisfied_by(pipeline, seed) + end + + it 'is satisfied by matching recusive pattern' do + policy = described_class.new(%w[some/**/*.rb]) + + expect(policy).to be_satisfied_by(pipeline, seed) + end + + it 'is not satisfied when pattern does not match path' do + policy = described_class.new(%w[some/*.rb]) + + expect(policy).not_to be_satisfied_by(pipeline, seed) + end + + it 'is not satisfied when pattern does not match' do + policy = described_class.new(%w[invalid/*.md]) + + expect(policy).not_to be_satisfied_by(pipeline, seed) + end + + context 'when pipelines does not run for a branch update' do + before do + pipeline.before_sha = Gitlab::Git::BLANK_SHA + end + + it 'is always satisfied' do + policy = described_class.new(%w[invalid/*]) + + expect(policy).to be_satisfied_by(pipeline, seed) + end + end + end +end -- cgit v1.2.1 From b772e7f4c63ffa12cba5df200352b509a26f3261 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 15:04:32 +0200 Subject: Match a dot in paths configured for only: changes --- lib/gitlab/ci/build/policy/changes.rb | 4 +++- spec/lib/gitlab/ci/build/policy/changes_spec.rb | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/gitlab/ci/build/policy/changes.rb b/lib/gitlab/ci/build/policy/changes.rb index 4bcb27ad73b..dc4f07bf05b 100644 --- a/lib/gitlab/ci/build/policy/changes.rb +++ b/lib/gitlab/ci/build/policy/changes.rb @@ -11,7 +11,9 @@ module Gitlab return true unless pipeline.branch_updated? pipeline.modified_paths.any? do |path| - @globs.any? { |glob| File.fnmatch?(glob, path, File::FNM_PATHNAME) } + @globs.any? do |glob| + File.fnmatch?(glob, path, File::FNM_PATHNAME | File::FNM_DOTMATCH) + end end end end diff --git a/spec/lib/gitlab/ci/build/policy/changes_spec.rb b/spec/lib/gitlab/ci/build/policy/changes_spec.rb index 1eb1fbb67e7..0ac611904cb 100644 --- a/spec/lib/gitlab/ci/build/policy/changes_spec.rb +++ b/spec/lib/gitlab/ci/build/policy/changes_spec.rb @@ -19,7 +19,7 @@ describe Gitlab::Ci::Build::Policy::Changes do before do allow(pipeline).to receive(:modified_paths) do - %w[some/modified/ruby/file.rb some/other_file.txt] + %w[some/modified/ruby/file.rb some/other_file.txt some/.dir/file] end end @@ -42,6 +42,12 @@ describe Gitlab::Ci::Build::Policy::Changes do expect(policy).to be_satisfied_by(pipeline, seed) end + it 'is satisfied by matching a pattern with a dot' do + policy = described_class.new(%w[some/*/file]) + + expect(policy).to be_satisfied_by(pipeline, seed) + end + it 'is not satisfied when pattern does not match path' do policy = described_class.new(%w[some/*.rb]) -- cgit v1.2.1 From c945112093d28437d3de6a75a3e4983be7198afe Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 15:56:17 +0200 Subject: Add Gitaly integration tests for only: changes feature --- spec/lib/gitlab/ci/build/policy/changes_spec.rb | 122 +++++++++++++++--------- spec/lib/gitlab/ci/yaml_processor_spec.rb | 10 +- 2 files changed, 86 insertions(+), 46 deletions(-) diff --git a/spec/lib/gitlab/ci/build/policy/changes_spec.rb b/spec/lib/gitlab/ci/build/policy/changes_spec.rb index 0ac611904cb..ab401108c84 100644 --- a/spec/lib/gitlab/ci/build/policy/changes_spec.rb +++ b/spec/lib/gitlab/ci/build/policy/changes_spec.rb @@ -3,73 +3,105 @@ require 'spec_helper' describe Gitlab::Ci::Build::Policy::Changes do set(:project) { create(:project) } - let(:pipeline) do - build(:ci_empty_pipeline, project: project, - ref: 'master', - source: :push, - sha: '1234abcd', - before_sha: '0123aabb') - end + describe '#satisfied_by?' do + describe 'paths matching matching' do + let(:pipeline) do + build(:ci_empty_pipeline, project: project, + ref: 'master', + source: :push, + sha: '1234abcd', + before_sha: '0123aabb') + end - let(:ci_build) do - build(:ci_build, pipeline: pipeline, project: project, ref: 'master') - end + let(:ci_build) do + build(:ci_build, pipeline: pipeline, project: project, ref: 'master') + end - let(:seed) { double('build seed', to_resource: ci_build) } + let(:seed) { double('build seed', to_resource: ci_build) } - before do - allow(pipeline).to receive(:modified_paths) do - %w[some/modified/ruby/file.rb some/other_file.txt some/.dir/file] - end - end + before do + allow(pipeline).to receive(:modified_paths) do + %w[some/modified/ruby/file.rb some/other_file.txt some/.dir/file] + end + end - describe '#satisfied_by?' do - it 'is satisfied by matching literal path' do - policy = described_class.new(%w[some/other_file.txt]) + it 'is satisfied by matching literal path' do + policy = described_class.new(%w[some/other_file.txt]) - expect(policy).to be_satisfied_by(pipeline, seed) - end + expect(policy).to be_satisfied_by(pipeline, seed) + end - it 'is satisfied by matching simple pattern' do - policy = described_class.new(%w[some/*.txt]) + it 'is satisfied by matching simple pattern' do + policy = described_class.new(%w[some/*.txt]) - expect(policy).to be_satisfied_by(pipeline, seed) - end + expect(policy).to be_satisfied_by(pipeline, seed) + end - it 'is satisfied by matching recusive pattern' do - policy = described_class.new(%w[some/**/*.rb]) + it 'is satisfied by matching recusive pattern' do + policy = described_class.new(%w[some/**/*.rb]) - expect(policy).to be_satisfied_by(pipeline, seed) - end + expect(policy).to be_satisfied_by(pipeline, seed) + end - it 'is satisfied by matching a pattern with a dot' do - policy = described_class.new(%w[some/*/file]) + it 'is satisfied by matching a pattern with a dot' do + policy = described_class.new(%w[some/*/file]) - expect(policy).to be_satisfied_by(pipeline, seed) - end + expect(policy).to be_satisfied_by(pipeline, seed) + end - it 'is not satisfied when pattern does not match path' do - policy = described_class.new(%w[some/*.rb]) + it 'is not satisfied when pattern does not match path' do + policy = described_class.new(%w[some/*.rb]) - expect(policy).not_to be_satisfied_by(pipeline, seed) - end + expect(policy).not_to be_satisfied_by(pipeline, seed) + end + + it 'is not satisfied when pattern does not match' do + policy = described_class.new(%w[invalid/*.md]) + + expect(policy).not_to be_satisfied_by(pipeline, seed) + end + + context 'when pipelines does not run for a branch update' do + before do + pipeline.before_sha = Gitlab::Git::BLANK_SHA + end - it 'is not satisfied when pattern does not match' do - policy = described_class.new(%w[invalid/*.md]) + it 'is always satisfied' do + policy = described_class.new(%w[invalid/*]) - expect(policy).not_to be_satisfied_by(pipeline, seed) + expect(policy).to be_satisfied_by(pipeline, seed) + end + end end - context 'when pipelines does not run for a branch update' do - before do - pipeline.before_sha = Gitlab::Git::BLANK_SHA + describe 'gitaly integration' do + set(:project) { create(:project, :repository) } + + let(:pipeline) do + create(:ci_empty_pipeline, project: project, + ref: 'master', + source: :push, + sha: '498214d', + before_sha: '281d3a7') + end + + let(:build) do + create(:ci_build, pipeline: pipeline, project: project, ref: 'master') end - it 'is always satisfied' do - policy = described_class.new(%w[invalid/*]) + let(:seed) { double('build seed', to_resource: build) } + + it 'is satisfied by changes introduced by a push' do + policy = described_class.new(['with space/*.md']) expect(policy).to be_satisfied_by(pipeline, seed) end + + it 'is not satisfied by changes that are not in the push' do + policy = described_class.new(%w[files/js/commit.js]) + + expect(policy).not_to be_satisfied_by(pipeline, seed) + end end end end diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index a2d429fa859..564635cec2b 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -1354,7 +1354,7 @@ module Gitlab end.to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, "jobs:rspec dependencies should be an array of strings") end - it 'returns errors if pipeline variables expression is invalid' do + it 'returns errors if pipeline variables expression policy is invalid' do config = YAML.dump({ rspec: { script: 'test', only: { variables: ['== null'] } } }) expect { Gitlab::Ci::YamlProcessor.new(config) } @@ -1362,6 +1362,14 @@ module Gitlab 'jobs:rspec:only variables invalid expression syntax') end + it 'returns errors if pipeline changes policy is invalid' do + config = YAML.dump({ rspec: { script: 'test', only: { changes: [1] } } }) + + expect { Gitlab::Ci::YamlProcessor.new(config) } + .to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, + 'jobs:rspec:only changes should be an array of strings') + end + it 'returns errors if extended hash configuration is invalid' do config = YAML.dump({ rspec: { extends: 'something', script: 'test' } }) -- cgit v1.2.1 From 23512484ef08557b39ef82d0b767b76a33111308 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 15:56:56 +0200 Subject: Freeze mutable constant in CI entry policy class --- lib/gitlab/ci/config/entry/policy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/ci/config/entry/policy.rb b/lib/gitlab/ci/config/entry/policy.rb index 6ba2d9bbf50..c92562f8c85 100644 --- a/lib/gitlab/ci/config/entry/policy.rb +++ b/lib/gitlab/ci/config/entry/policy.rb @@ -25,7 +25,7 @@ module Gitlab include Entry::Validatable include Entry::Attributable - ALLOWED_KEYS = %i[refs kubernetes variables changes] + ALLOWED_KEYS = %i[refs kubernetes variables changes].freeze attributes :refs, :kubernetes, :variables, :changes validations do -- cgit v1.2.1 From 0972dbc799673654fed6f6507818bbf8bafe33a8 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 15:59:08 +0200 Subject: Add frozen strong literal directive to policy changes class --- lib/gitlab/ci/build/policy/changes.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/gitlab/ci/build/policy/changes.rb b/lib/gitlab/ci/build/policy/changes.rb index dc4f07bf05b..7bf51519752 100644 --- a/lib/gitlab/ci/build/policy/changes.rb +++ b/lib/gitlab/ci/build/policy/changes.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Gitlab module Ci module Build -- cgit v1.2.1 From ceafbbd317c9b9e67be6a1a223ab3f893ae047b3 Mon Sep 17 00:00:00 2001 From: Jan Beckmann Date: Tue, 2 Oct 2018 13:59:42 +0000 Subject: Resolve "Add "Link" shortcut/icon in markdown editor to make it easier to add references" --- app/assets/javascripts/lib/utils/text_markdown.js | 30 ++++++++-- .../vue_shared/components/markdown/header.vue | 6 ++ .../components/markdown/toolbar_button.vue | 6 ++ app/views/projects/_md_preview.html.haml | 17 +++--- changelogs/unreleased/44627-add-link-md-editor.yml | 5 ++ locale/gitlab.pot | 27 +++++++++ spec/javascripts/lib/utils/text_markdown_spec.js | 69 ++++++++++++++++++++-- .../vue_shared/components/markdown/field_spec.js | 4 +- .../vue_shared/components/markdown/header_spec.js | 2 +- 9 files changed, 145 insertions(+), 21 deletions(-) create mode 100644 changelogs/unreleased/44627-add-link-md-editor.yml diff --git a/app/assets/javascripts/lib/utils/text_markdown.js b/app/assets/javascripts/lib/utils/text_markdown.js index ce0bc4d40e9..f7429601afa 100644 --- a/app/assets/javascripts/lib/utils/text_markdown.js +++ b/app/assets/javascripts/lib/utils/text_markdown.js @@ -31,11 +31,17 @@ function blockTagText(text, textArea, blockTag, selected) { } } -function moveCursor(textArea, tag, wrapped, removedLastNewLine) { +function moveCursor({ textArea, tag, wrapped, removedLastNewLine, select }) { var pos; if (!textArea.setSelectionRange) { return; } + if (select && select.length > 0) { + // calculate the part of the text to be selected + const startPosition = textArea.selectionStart - (tag.length - tag.indexOf(select)); + const endPosition = startPosition + select.length; + return textArea.setSelectionRange(startPosition, endPosition); + } if (textArea.selectionStart === textArea.selectionEnd) { if (wrapped) { pos = textArea.selectionStart - tag.length; @@ -51,7 +57,7 @@ function moveCursor(textArea, tag, wrapped, removedLastNewLine) { } } -export function insertMarkdownText(textArea, text, tag, blockTag, selected, wrap) { +export function insertMarkdownText({ textArea, text, tag, blockTag, selected, wrap, select }) { var textToInsert, inserted, selectedSplit, startChar, removedLastNewLine, removedFirstNewLine, currentLineEmpty, lastNewLine; removedLastNewLine = false; removedFirstNewLine = false; @@ -82,11 +88,16 @@ export function insertMarkdownText(textArea, text, tag, blockTag, selected, wrap startChar = !wrap && !currentLineEmpty && textArea.selectionStart > 0 ? '\n' : ''; + const textPlaceholder = '{text}'; + if (selectedSplit.length > 1 && (!wrap || (blockTag != null && blockTag !== ''))) { if (blockTag != null && blockTag !== '') { textToInsert = blockTagText(text, textArea, blockTag, selected); } else { textToInsert = selectedSplit.map(function(val) { + if (tag.indexOf(textPlaceholder) > -1) { + return tag.replace(textPlaceholder, val); + } if (val.indexOf(tag) === 0) { return "" + (val.replace(tag, '')); } else { @@ -94,6 +105,8 @@ export function insertMarkdownText(textArea, text, tag, blockTag, selected, wrap } }).join('\n'); } + } else if (tag.indexOf(textPlaceholder) > -1) { + textToInsert = tag.replace(textPlaceholder, selected); } else { textToInsert = "" + startChar + tag + selected + (wrap ? tag : ' '); } @@ -107,17 +120,17 @@ export function insertMarkdownText(textArea, text, tag, blockTag, selected, wrap } insertText(textArea, textToInsert); - return moveCursor(textArea, tag, wrap, removedLastNewLine); + return moveCursor({ textArea, tag: tag.replace(textPlaceholder, selected), wrap, removedLastNewLine, select }); } -function updateText(textArea, tag, blockTag, wrap) { +function updateText({ textArea, tag, blockTag, wrap, select }) { var $textArea, selected, text; $textArea = $(textArea); textArea = $textArea.get(0); text = $textArea.val(); selected = selectedText(text, textArea); $textArea.focus(); - return insertMarkdownText(textArea, text, tag, blockTag, selected, wrap); + return insertMarkdownText({ textArea, text, tag, blockTag, selected, wrap, select }); } function replaceRange(s, start, end, substitute) { @@ -127,7 +140,12 @@ function replaceRange(s, start, end, substitute) { export function addMarkdownListeners(form) { return $('.js-md', form).off('click').on('click', function() { const $this = $(this); - return updateText($this.closest('.md-area').find('textarea'), $this.data('mdTag'), $this.data('mdBlock'), !$this.data('mdPrepend')); + return updateText({ + textArea: $this.closest('.md-area').find('textarea'), + tag: $this.data('mdTag'), + blockTag: $this.data('mdBlock'), + wrap: !$this.data('mdPrepend'), + select: $this.data('mdSelect') }); }); } diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index 8c22f3f6536..afc4196c729 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -105,6 +105,12 @@ button-title="Insert code" icon="code" /> + "**" }, title: "Add bold text" }) - = markdown_toolbar_button({ icon: "italic", data: { "md-tag" => "*" }, title: "Add italic text" }) - = markdown_toolbar_button({ icon: "quote", data: { "md-tag" => "> ", "md-prepend" => true }, title: "Insert a quote" }) - = markdown_toolbar_button({ icon: "code", data: { "md-tag" => "`", "md-block" => "```" }, title: "Insert code" }) - = markdown_toolbar_button({ icon: "list-bulleted", data: { "md-tag" => "* ", "md-prepend" => true }, title: "Add a bullet list" }) - = markdown_toolbar_button({ icon: "list-numbered", data: { "md-tag" => "1. ", "md-prepend" => true }, title: "Add a numbered list" }) - = markdown_toolbar_button({ icon: "task-done", data: { "md-tag" => "* [ ] ", "md-prepend" => true }, title: "Add a task list" }) - %button.toolbar-btn.toolbar-fullscreen-btn.js-zen-enter.has-tooltip{ type: "button", tabindex: -1, "aria-label": "Go full screen", title: "Go full screen", data: { container: "body" } } + = markdown_toolbar_button({ icon: "bold", data: { "md-tag" => "**" }, title: s_("MarkdownToolbar|Add bold text") }) + = markdown_toolbar_button({ icon: "italic", data: { "md-tag" => "*" }, title: s_("MarkdownToolbar|Add italic text") }) + = markdown_toolbar_button({ icon: "quote", data: { "md-tag" => "> ", "md-prepend" => true }, title: s_("MarkdownToolbar|Insert a quote") }) + = markdown_toolbar_button({ icon: "code", data: { "md-tag" => "`", "md-block" => "```" }, title: s_("MarkdownToolbar|Insert code") }) + = markdown_toolbar_button({ icon: "link", data: { "md-tag" => "[{text}](url)", "md-select" => "url" }, title: s_("MarkdownToolbar|Add a link") }) + = markdown_toolbar_button({ icon: "list-bulleted", data: { "md-tag" => "* ", "md-prepend" => true }, title: s_("MarkdownToolbar|Add a bullet list") }) + = markdown_toolbar_button({ icon: "list-numbered", data: { "md-tag" => "1. ", "md-prepend" => true }, title: s_("MarkdownToolbar|Add a numbered list") }) + = markdown_toolbar_button({ icon: "task-done", data: { "md-tag" => "* [ ] ", "md-prepend" => true }, title: s_("MarkdownToolbar|Add a task list") }) + %button.toolbar-btn.toolbar-fullscreen-btn.js-zen-enter.has-tooltip{ type: "button", tabindex: -1, "aria-label": "Go full screen", title: s_("MarkdownToolbar|Go full screen"), data: { container: "body" } } = sprite_icon("screen-full") .md-write-holder diff --git a/changelogs/unreleased/44627-add-link-md-editor.yml b/changelogs/unreleased/44627-add-link-md-editor.yml new file mode 100644 index 00000000000..65551ce9c14 --- /dev/null +++ b/changelogs/unreleased/44627-add-link-md-editor.yml @@ -0,0 +1,5 @@ +--- +title: Add link button to markdown editor toolbar +merge_request: 18579 +author: Jan Beckmann +type: added diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 01448223a7d..cc11577b624 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -3651,6 +3651,33 @@ msgstr "" msgid "Markdown enabled" msgstr "" +msgid "MarkdownToolbar|Add a bullet list" +msgstr "" + +msgid "MarkdownToolbar|Add a link" +msgstr "" + +msgid "MarkdownToolbar|Add a numbered list" +msgstr "" + +msgid "MarkdownToolbar|Add a task list" +msgstr "" + +msgid "MarkdownToolbar|Add bold text" +msgstr "" + +msgid "MarkdownToolbar|Add italic text" +msgstr "" + +msgid "MarkdownToolbar|Go full screen" +msgstr "" + +msgid "MarkdownToolbar|Insert a quote" +msgstr "" + +msgid "MarkdownToolbar|Insert code" +msgstr "" + msgid "Max access level" msgstr "" diff --git a/spec/javascripts/lib/utils/text_markdown_spec.js b/spec/javascripts/lib/utils/text_markdown_spec.js index ca0e7c395a0..043dd018e0c 100644 --- a/spec/javascripts/lib/utils/text_markdown_spec.js +++ b/spec/javascripts/lib/utils/text_markdown_spec.js @@ -21,7 +21,7 @@ describe('init markdown', () => { textArea.selectionStart = 0; textArea.selectionEnd = 0; - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}* `); }); @@ -32,7 +32,7 @@ describe('init markdown', () => { textArea.value = initialValue; textArea.setSelectionRange(initialValue.length, initialValue.length); - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}\n* `); }); @@ -43,7 +43,7 @@ describe('init markdown', () => { textArea.value = initialValue; textArea.setSelectionRange(initialValue.length, initialValue.length); - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}* `); }); @@ -54,9 +54,70 @@ describe('init markdown', () => { textArea.value = initialValue; textArea.setSelectionRange(initialValue.length, initialValue.length); - insertMarkdownText(textArea, textArea.value, '*', null, '', false); + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected: '', wrap: false }); expect(textArea.value).toEqual(`${initialValue}* `); }); }); + + describe('with selection', () => { + const text = 'initial selected value'; + const selected = 'selected'; + beforeEach(() => { + textArea.value = text; + const selectedIndex = text.indexOf(selected); + textArea.setSelectionRange(selectedIndex, selectedIndex + selected.length); + }); + + it('applies the tag to the selected value', () => { + insertMarkdownText({ textArea, text: textArea.value, tag: '*', blockTag: null, selected, wrap: true }); + + expect(textArea.value).toEqual(text.replace(selected, `*${selected}*`)); + }); + + it('replaces the placeholder in the tag', () => { + insertMarkdownText({ textArea, text: textArea.value, tag: '[{text}](url)', blockTag: null, selected, wrap: false }); + + expect(textArea.value).toEqual(text.replace(selected, `[${selected}](url)`)); + }); + + describe('and text to be selected', () => { + const tag = '[{text}](url)'; + const select = 'url'; + + it('selects the text', () => { + insertMarkdownText({ textArea, + text: textArea.value, + tag, + blockTag: null, + selected, + wrap: false, + select }); + + const expectedText = text.replace(selected, `[${selected}](url)`); + expect(textArea.value).toEqual(expectedText); + expect(textArea.selectionStart).toEqual(expectedText.indexOf(select)); + expect(textArea.selectionEnd).toEqual(expectedText.indexOf(select) + select.length); + }); + + it('selects the right text when multiple tags are present', () => { + const initialValue = `${tag} ${tag} ${selected}`; + textArea.value = initialValue; + const selectedIndex = initialValue.indexOf(selected); + textArea.setSelectionRange(selectedIndex, selectedIndex + selected.length); + insertMarkdownText({ textArea, + text: textArea.value, + tag, + blockTag: null, + selected, + wrap: false, + select }); + + const expectedText = initialValue.replace(selected, `[${selected}](url)`); + expect(textArea.value).toEqual(expectedText); + expect(textArea.selectionStart).toEqual(expectedText.lastIndexOf(select)); + expect(textArea.selectionEnd).toEqual(expectedText.lastIndexOf(select) + select.length); + }); + }); + }); }); diff --git a/spec/javascripts/vue_shared/components/markdown/field_spec.js b/spec/javascripts/vue_shared/components/markdown/field_spec.js index 69034975422..0dea9278cc2 100644 --- a/spec/javascripts/vue_shared/components/markdown/field_spec.js +++ b/spec/javascripts/vue_shared/components/markdown/field_spec.js @@ -153,7 +153,7 @@ describe('Markdown field component', () => { const textarea = vm.$el.querySelector('textarea'); textarea.setSelectionRange(0, 0); - vm.$el.querySelectorAll('.js-md')[4].click(); + vm.$el.querySelectorAll('.js-md')[5].click(); Vue.nextTick(() => { expect( @@ -168,7 +168,7 @@ describe('Markdown field component', () => { const textarea = vm.$el.querySelector('textarea'); textarea.setSelectionRange(0, 50); - vm.$el.querySelectorAll('.js-md')[4].click(); + vm.$el.querySelectorAll('.js-md')[5].click(); Vue.nextTick(() => { expect( diff --git a/spec/javascripts/vue_shared/components/markdown/header_spec.js b/spec/javascripts/vue_shared/components/markdown/header_spec.js index 488575df401..bc934afe7a4 100644 --- a/spec/javascripts/vue_shared/components/markdown/header_spec.js +++ b/spec/javascripts/vue_shared/components/markdown/header_spec.js @@ -18,7 +18,7 @@ describe('Markdown field header component', () => { }); it('renders markdown buttons', () => { - expect(vm.$el.querySelectorAll('.js-md').length).toBe(7); + expect(vm.$el.querySelectorAll('.js-md').length).toBe(8); }); it('renders `write` link as active when previewMarkdown is false', () => { -- cgit v1.2.1 From 0dd892aaa51e5e82c908dcbec5aef0082a9dd2c5 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 16:00:16 +0200 Subject: Add changelog entry for only: changes feature --- .../feature-gb-pipeline-only-except-with-modified-paths.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/feature-gb-pipeline-only-except-with-modified-paths.yml diff --git a/changelogs/unreleased/feature-gb-pipeline-only-except-with-modified-paths.yml b/changelogs/unreleased/feature-gb-pipeline-only-except-with-modified-paths.yml new file mode 100644 index 00000000000..62676cdad62 --- /dev/null +++ b/changelogs/unreleased/feature-gb-pipeline-only-except-with-modified-paths.yml @@ -0,0 +1,5 @@ +--- +title: Add support for pipeline only/except policy for modified paths +merge_request: 21981 +author: +type: added -- cgit v1.2.1 From b09e40624b9fc6a7b4a7b38f174bc66d996e3fd5 Mon Sep 17 00:00:00 2001 From: Bob Van Landuyt Date: Mon, 1 Oct 2018 15:59:44 +0200 Subject: Show the commit-sha for pre-release versions The pre-release tags are set at the beginning of a release, so it would be impossible to figure out which version was running if we're running nightlies. In that case it's better to still link to the SHA. These versions don't get deployed to .com. --- app/helpers/version_check_helper.rb | 13 +++++++ app/views/help/index.html.haml | 2 +- changelogs/unreleased/bvl-show-pre-release-sha.yml | 5 +++ lib/gitlab.rb | 4 +++ spec/support/stub_version.rb | 8 +++++ spec/views/help/index.html.haml_spec.rb | 41 +++++++++++++++------- 6 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 changelogs/unreleased/bvl-show-pre-release-sha.yml create mode 100644 spec/support/stub_version.rb diff --git a/app/helpers/version_check_helper.rb b/app/helpers/version_check_helper.rb index 75637eb0676..ab77b149072 100644 --- a/app/helpers/version_check_helper.rb +++ b/app/helpers/version_check_helper.rb @@ -9,4 +9,17 @@ module VersionCheckHelper image_url = VersionCheck.new.url image_tag image_url, class: 'js-version-status-badge' end + + def link_to_version + if Gitlab.pre_release? + commit_link = link_to(Gitlab.revision, Gitlab::COM_URL + namespace_project_commits_path('gitlab-org', source_code_project, Gitlab.revision)) + [Gitlab::VERSION, content_tag(:small, commit_link)].join(' ').html_safe + else + link_to Gitlab::VERSION, Gitlab::COM_URL + namespace_project_tag_path('gitlab-org', source_code_project, "v#{Gitlab::VERSION}") + end + end + + def source_code_project + 'gitlab-ce' + end end diff --git a/app/views/help/index.html.haml b/app/views/help/index.html.haml index 198c2d35b29..dfa5d820ce9 100644 --- a/app/views/help/index.html.haml +++ b/app/views/help/index.html.haml @@ -7,7 +7,7 @@ GitLab Community Edition - if user_signed_in? - %span= link_to Gitlab::VERSION, Gitlab::COM_URL + namespace_project_tag_path('gitlab-org', 'gitlab-ce', "v#{Gitlab::VERSION}") + %span= link_to_version = version_status_badge %hr diff --git a/changelogs/unreleased/bvl-show-pre-release-sha.yml b/changelogs/unreleased/bvl-show-pre-release-sha.yml new file mode 100644 index 00000000000..524b3c374f7 --- /dev/null +++ b/changelogs/unreleased/bvl-show-pre-release-sha.yml @@ -0,0 +1,5 @@ +--- +title: Show SHA for pre-release versions on the help page +merge_request: 22026 +author: +type: changed diff --git a/lib/gitlab.rb b/lib/gitlab.rb index ab6b609d099..7790534d5d7 100644 --- a/lib/gitlab.rb +++ b/lib/gitlab.rb @@ -47,4 +47,8 @@ module Gitlab def self.dev_env_or_com? Rails.env.development? || org? || com? end + + def self.pre_release? + VERSION.include?('pre') + end end diff --git a/spec/support/stub_version.rb b/spec/support/stub_version.rb new file mode 100644 index 00000000000..594ab64e7c6 --- /dev/null +++ b/spec/support/stub_version.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +module StubVersion + def stub_version(version, revision) + stub_const('Gitlab::VERSION', version) + allow(Gitlab).to receive(:revision).and_return(revision) + end +end diff --git a/spec/views/help/index.html.haml_spec.rb b/spec/views/help/index.html.haml_spec.rb index c8c9c4e773d..34e93d929a7 100644 --- a/spec/views/help/index.html.haml_spec.rb +++ b/spec/views/help/index.html.haml_spec.rb @@ -1,11 +1,18 @@ +# frozen_string_literal: true + require 'rails_helper' describe 'help/index' do + include StubVersion + describe 'version information' do + before do + stub_helpers + end + it 'is hidden from guests' do stub_user(nil) stub_version('8.0.2', 'abcdefg') - stub_helpers render @@ -13,15 +20,28 @@ describe 'help/index' do expect(rendered).not_to match 'abcdefg' end - it 'is shown to users' do - stub_user - stub_version('8.0.2', 'abcdefg') - stub_helpers + context 'when logged in' do + before do + stub_user + end - render + it 'shows a link to the tag to users' do + stub_version('8.0.2', 'abcdefg') + + render + + expect(rendered).to match '8.0.2' + expect(rendered).to have_link('8.0.2', href: %r{https://gitlab.com/gitlab-org/gitlab-(ce|ee)/tags/v8.0.2}) + end + + it 'shows a link to the commit for pre-releases' do + stub_version('8.0.2-pre', 'abcdefg') - expect(rendered).to match '8.0.2' - expect(rendered).to have_link('8.0.2', href: 'https://gitlab.com/gitlab-org/gitlab-ce/tags/v8.0.2') + render + + expect(rendered).to match '8.0.2' + expect(rendered).to have_link('abcdefg', href: %r{https://gitlab.com/gitlab-org/gitlab-(ce|ee)/commits/abcdefg}) + end end end @@ -37,11 +57,6 @@ describe 'help/index' do allow(view).to receive(:user_signed_in?).and_return(user) end - def stub_version(version, revision) - stub_const('Gitlab::VERSION', version) - allow(Gitlab).to receive(:revision).and_return(revision) - end - def stub_helpers allow(view).to receive(:markdown).and_return('') allow(view).to receive(:version_status_badge).and_return('') -- cgit v1.2.1 From a52960f5a1aa039a57c17a577aeb9fb82e238f4a Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 16:13:49 +0200 Subject: Add basic documentation for only: changes feature --- doc/ci/yaml/README.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index e38628b288b..d1ae7326852 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -387,6 +387,8 @@ except master. > `refs` and `kubernetes` policies introduced in GitLab 10.0 > > `variables` policy introduced in 10.7 +> +> `changes` policy introduced in 11.4 CAUTION: **Warning:** This an _alpha_ feature, and it it subject to change at any time without @@ -398,10 +400,15 @@ policy configuration. GitLab now supports both, simple and complex strategies, so it is possible to use an array and a hash configuration scheme. -Three keys are now available: `refs`, `kubernetes` and `variables`. +Four keys are now available: `refs`, `kubernetes` and `variables` and `changes`. + +### `refs` and `kubernetes` + Refs strategy equals to simplified only/except configuration, whereas kubernetes strategy accepts only `active` keyword. +### `variables` + `variables` keyword is used to define variables expressions. In other words you can use predefined variables / project / group or environment-scoped variables to define an expression GitLab is going to @@ -445,6 +452,34 @@ end-to-end: Learn more about variables expressions on [a separate page][variables-expressions]. +### `changes` + +Using `changes` keyword with `only` or `except` makes it possible to define if +a job should be created, based on files modified by a git push event. + +```yaml +docker build: + script: docker build -t my-image:$CI_COMMIT_REF_SLUG . + only: + changes: + - Dockerfile + - docker/scripts/* +``` + +In the scenario above, if you are pushing multiple commits to GitLab, to an +exising branch, GitLab is going to create and trigger `docker build` if one of +the commits contains changes to the `Dockerfile` file or any of the files +inside `docker/scripts/` directory. + +CAUTION: **Warning:** +If you are pushing a **new** branch or a tag to GitLab, only/changes is going +to always evaluate to truth and GitLab will create a job. This feature is not +connected with merge requests yet, GitLab is creating pipelines before an user +creates a merge requests and specifies a target branch. Without a target branch +it is not possible to know what the common ancestor is in case of pushing a new +branch, thus we always create a job in that case. This feature works best for +stable branches like `master`. + ## `tags` `tags` is used to select specific Runners from the list of all Runners that are -- cgit v1.2.1 From e2056f08f072805a132bf18879749e401d8ad620 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Thu, 20 Sep 2018 16:41:15 +0200 Subject: Hides Close MR button on merged MR When a Merge request is merged, shows only the Report abuse menu item in the dropdown menu instead of showing the close_reopen_report toggle with an unusable Close button. The Report abuse is still hidden when the author of the Merge request is the current_user. Hides the Reopen button on a closed and locked issue when the issue.author is not the current_user --- app/helpers/issuables_helper.rb | 8 +++-- app/helpers/issues_helper.rb | 6 +++- app/helpers/merge_requests_helper.rb | 6 +++- .../shared/issuable/_close_reopen_button.html.haml | 16 +++++---- .../50161-hide-close-mr-button-when-merged.yml | 5 +++ spec/factories/issues.rb | 4 +++ .../issuables/close_reopen_report_toggle_spec.rb | 40 ++++++++++++++++++++++ spec/policies/issue_policy_spec.rb | 2 +- 8 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 changelogs/unreleased/50161-hide-close-mr-button-when-merged.yml diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb index 56f6686da57..97406fefd43 100644 --- a/app/helpers/issuables_helper.rb +++ b/app/helpers/issuables_helper.rb @@ -327,11 +327,15 @@ module IssuablesHelper end def issuable_button_visibility(issuable, closed) + return 'hidden' if issuable_button_hidden?(issuable, closed) + end + + def issuable_button_hidden?(issuable, closed) case issuable when Issue - issue_button_visibility(issuable, closed) + issue_button_hidden?(issuable, closed) when MergeRequest - merge_request_button_visibility(issuable, closed) + merge_request_button_hidden?(issuable, closed) end end diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index f7d448ea3a7..957ab06b0ca 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -64,7 +64,11 @@ module IssuesHelper end def issue_button_visibility(issue, closed) - return 'hidden' if issue.closed? == closed + return 'hidden' if issue_button_hidden?(issue, closed) + end + + def issue_button_hidden?(issue, closed) + issue.closed? == closed || (!closed && issue.discussion_locked) end def confidential_icon(issue) diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index 87af6fb08f0..23d7aa427bb 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -80,7 +80,11 @@ module MergeRequestsHelper end def merge_request_button_visibility(merge_request, closed) - return 'hidden' if merge_request.closed? == closed || (merge_request.merged? == closed && !merge_request.closed?) || merge_request.closed_without_fork? + return 'hidden' if merge_request_button_hidden?(merge_request, closed) + end + + def merge_request_button_hidden?(merge_request, closed) + merge_request.closed? == closed || (merge_request.merged? == closed && !merge_request.closed?) || merge_request.closed_without_fork? end def merge_request_version_path(project, merge_request, merge_request_diff, start_sha = nil) diff --git a/app/views/shared/issuable/_close_reopen_button.html.haml b/app/views/shared/issuable/_close_reopen_button.html.haml index 70e05eb1c8c..4f6a71b6071 100644 --- a/app/views/shared/issuable/_close_reopen_button.html.haml +++ b/app/views/shared/issuable/_close_reopen_button.html.haml @@ -1,16 +1,18 @@ - is_current_user = issuable_author_is_current_user(issuable) - display_issuable_type = issuable_display_type(issuable) - button_method = issuable_close_reopen_button_method(issuable) +- are_close_and_open_buttons_hidden = issuable_button_hidden?(issuable, true) && issuable_button_hidden?(issuable, false) -- if can_update - - if is_current_user +- if is_current_user + - if can_update = link_to "Close #{display_issuable_type}", close_issuable_path(issuable), method: button_method, class: "d-none d-sm-none d-md-block btn btn-grouped btn-close js-btn-issue-action #{issuable_button_visibility(issuable, true)}", title: "Close #{display_issuable_type}" - - else - = render 'shared/issuable/close_reopen_report_toggle', issuable: issuable - - if can_reopen && is_current_user + - if can_reopen = link_to "Reopen #{display_issuable_type}", reopen_issuable_path(issuable), method: button_method, class: "d-none d-sm-none d-md-block btn btn-grouped btn-reopen js-btn-issue-action #{issuable_button_visibility(issuable, false)}", title: "Reopen #{display_issuable_type}" - else - = link_to 'Report abuse', new_abuse_report_path(user_id: issuable.author.id, ref_url: issuable_url(issuable)), - class: 'd-none d-sm-none d-md-block btn btn-grouped btn-close-color', title: 'Report abuse' + - if can_update && !are_close_and_open_buttons_hidden + = render 'shared/issuable/close_reopen_report_toggle', issuable: issuable + - else + = link_to 'Report abuse', new_abuse_report_path(user_id: issuable.author.id, ref_url: issuable_url(issuable)), + class: 'd-none d-sm-none d-md-block btn btn-grouped btn-close-color', title: 'Report abuse' diff --git a/changelogs/unreleased/50161-hide-close-mr-button-when-merged.yml b/changelogs/unreleased/50161-hide-close-mr-button-when-merged.yml new file mode 100644 index 00000000000..e6dd78a7a19 --- /dev/null +++ b/changelogs/unreleased/50161-hide-close-mr-button-when-merged.yml @@ -0,0 +1,5 @@ +--- +title: Hides Close Merge request btn on merged Merge request +merge_request: 21840 +author: Jacopo Beschi @jacopo-beschi +type: fixed diff --git a/spec/factories/issues.rb b/spec/factories/issues.rb index 4d4f74e101e..ab27fee33dc 100644 --- a/spec/factories/issues.rb +++ b/spec/factories/issues.rb @@ -13,6 +13,10 @@ FactoryBot.define do state :opened end + trait :locked do + discussion_locked true + end + trait :closed do state :closed closed_at { Time.now } diff --git a/spec/features/issuables/close_reopen_report_toggle_spec.rb b/spec/features/issuables/close_reopen_report_toggle_spec.rb index de6f5fe1560..26c44baeb21 100644 --- a/spec/features/issuables/close_reopen_report_toggle_spec.rb +++ b/spec/features/issuables/close_reopen_report_toggle_spec.rb @@ -56,6 +56,24 @@ describe 'Issuables Close/Reopen/Report toggle' do end it_behaves_like 'an issuable close/reopen/report toggle' + + context 'when the issue is closed and locked' do + let(:issuable) { create(:issue, :closed, :locked, project: project) } + + it 'hides the reopen button' do + expect(page).not_to have_link('Reopen issue') + end + + context 'when the issue author is the current user' do + before do + issuable.update(author: user) + end + + it 'hides the reopen button' do + expect(page).not_to have_link('Reopen issue') + end + end + end end context 'when user doesnt have permission to update' do @@ -93,6 +111,28 @@ describe 'Issuables Close/Reopen/Report toggle' do end it_behaves_like 'an issuable close/reopen/report toggle' + + context 'when the merge request is merged' do + let(:issuable) { create(:merge_request, :merged, source_project: project) } + + it 'shows only the `Report abuse` and `Edit` button' do + expect(page).to have_link('Report abuse') + expect(page).to have_link('Edit') + expect(page).not_to have_link('Close merge request') + expect(page).not_to have_link('Reopen merge request') + end + + context 'when the merge request author is the current user' do + let(:issuable) { create(:merge_request, :merged, source_project: project, author: user) } + + it 'shows only the `Edit` button' do + expect(page).to have_link('Edit') + expect(page).not_to have_link('Report abuse') + expect(page).not_to have_link('Close merge request') + expect(page).not_to have_link('Reopen merge request') + end + end + end end context 'when user doesnt have permission to update' do diff --git a/spec/policies/issue_policy_spec.rb b/spec/policies/issue_policy_spec.rb index 93e85b3a6fa..008d118b557 100644 --- a/spec/policies/issue_policy_spec.rb +++ b/spec/policies/issue_policy_spec.rb @@ -112,7 +112,7 @@ describe IssuePolicy do let(:project) { create(:project, :public) } let(:issue) { create(:issue, project: project, assignees: [assignee], author: author) } let(:issue_no_assignee) { create(:issue, project: project) } - let(:issue_locked) { create(:issue, project: project, discussion_locked: true, author: author, assignees: [assignee]) } + let(:issue_locked) { create(:issue, :locked, project: project, author: author, assignees: [assignee]) } before do project.add_guest(guest) -- cgit v1.2.1 From 09075759a428220ddfb5dacf6a6974c11956e391 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 2 Oct 2018 16:21:53 +0200 Subject: Copy-edit docs for only: changes feature --- doc/ci/yaml/README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index d1ae7326852..ef9a00266e1 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -467,18 +467,19 @@ docker build: ``` In the scenario above, if you are pushing multiple commits to GitLab, to an -exising branch, GitLab is going to create and trigger `docker build` if one of -the commits contains changes to the `Dockerfile` file or any of the files -inside `docker/scripts/` directory. +exising branch, GitLab is going to create and trigger `docker build` job, +provided that one of the commits contains changes to the `Dockerfile` file or +changes to any of the files inside `docker/scripts/` directory. CAUTION: **Warning:** -If you are pushing a **new** branch or a tag to GitLab, only/changes is going -to always evaluate to truth and GitLab will create a job. This feature is not -connected with merge requests yet, GitLab is creating pipelines before an user -creates a merge requests and specifies a target branch. Without a target branch -it is not possible to know what the common ancestor is in case of pushing a new -branch, thus we always create a job in that case. This feature works best for -stable branches like `master`. +If you are pushing a **new** branch or a new tag to GitLab, only/changes is +going to always evaluate to truth and GitLab will create a job. This feature is +not combined with merge requests yet, and because GitLab is creating pipelines +before an user can create a merge request we don't know a target branch at +this point. Without a target branchit is not possible to know what the common +ancestor is, thus we always create a job in that case. This feature works best for +stable branches like `master` because in that case GitLab uses previous commit, +that is present in a branch, to compare against a newly pushed latest SHA. ## `tags` -- cgit v1.2.1 From c99a0b457e0bfd8d402d1350b1a84a7edcf44887 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 2 Oct 2018 13:51:22 +0000 Subject: Merge branch 'master-i18n' into 'master' New Crowdin translations See merge request gitlab-org/gitlab-ee!7492 --- locale/ar_SA/gitlab.po | 769 ++-- locale/bg/gitlab.po | 715 +++- locale/ca_ES/gitlab.po | 787 ++-- locale/cs_CZ/gitlab.po | 741 ++-- locale/da_DK/gitlab.po | 713 +++- locale/de/gitlab.po | 715 +++- locale/eo/gitlab.po | 713 +++- locale/es/gitlab.po | 719 +++- locale/et_EE/gitlab.po | 713 +++- locale/fil_PH/gitlab.po | 713 +++- locale/fr/gitlab.po | 1173 +++--- locale/gl_ES/gitlab.po | 715 +++- locale/he_IL/gitlab.po | 741 ++-- locale/id_ID/gitlab.po | 699 +++- locale/it/gitlab.po | 723 +++- locale/ja/gitlab.po | 1003 ++++-- locale/ko/gitlab.po | 1413 +++++--- locale/mn_MN/gitlab.po | 9220 +++++++++++++++++++++++++++++++++++++++++++++++ locale/nb_NO/gitlab.po | 9220 +++++++++++++++++++++++++++++++++++++++++++++++ locale/nl_NL/gitlab.po | 729 +++- locale/pl_PL/gitlab.po | 741 ++-- locale/pt_BR/gitlab.po | 1023 ++++-- locale/ro_RO/gitlab.po | 727 +++- locale/ru/gitlab.po | 765 ++-- locale/sq_AL/gitlab.po | 713 +++- locale/tr_TR/gitlab.po | 713 +++- locale/uk/gitlab.po | 1017 ++++-- locale/zh_CN/gitlab.po | 1055 ++++-- locale/zh_HK/gitlab.po | 699 +++- locale/zh_TW/gitlab.po | 749 +++- 30 files changed, 34591 insertions(+), 6545 deletions(-) create mode 100644 locale/mn_MN/gitlab.po create mode 100644 locale/nb_NO/gitlab.po diff --git a/locale/ar_SA/gitlab.po b/locale/ar_SA/gitlab.po index 662e69e27c6..1b03fe9ce28 100644 --- a/locale/ar_SA/gitlab.po +++ b/locale/ar_SA/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: ar\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:29\n" msgid " Status" msgstr "" @@ -192,6 +192,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -243,43 +246,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -450,6 +423,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -492,6 +471,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -531,15 +513,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -558,6 +540,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -855,6 +840,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -1014,6 +1002,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -1050,9 +1041,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1539,6 +1527,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1701,6 +1695,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1749,10 +1746,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1779,6 +1776,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1845,9 +1848,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1881,15 +1881,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1914,12 +1905,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1977,6 +1962,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -2007,9 +1995,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -2049,12 +2034,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -2073,6 +2061,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -2091,9 +2082,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -2103,6 +2091,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2160,6 +2151,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2232,24 +2226,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2334,6 +2322,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2367,6 +2358,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2472,9 +2472,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2592,6 +2589,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2799,9 +2799,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2961,6 +2973,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -3096,10 +3114,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3210,6 +3228,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3291,6 +3312,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3303,9 +3327,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3333,7 +3366,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3372,21 +3405,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3444,6 +3471,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3621,6 +3651,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3663,6 +3696,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3675,6 +3711,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3702,6 +3741,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3717,6 +3762,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3795,12 +3843,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3861,13 +3903,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3954,6 +3996,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3966,19 +4011,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -4020,6 +4065,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4188,6 +4236,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4260,6 +4311,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4299,9 +4356,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4338,7 +4392,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4449,6 +4503,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4695,6 +4752,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4749,9 +4809,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4776,6 +4833,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4956,9 +5016,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -5115,6 +5172,9 @@ 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 due date" msgstr "" @@ -5136,6 +5196,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -5163,6 +5226,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5199,6 +5265,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5634,12 +5703,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5679,9 +5742,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5718,6 +5787,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5727,15 +5799,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5748,39 +5835,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5790,6 +5946,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5826,6 +5991,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5853,6 +6021,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5880,6 +6051,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6186,6 +6378,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6267,6 +6462,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6276,18 +6474,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6300,6 +6516,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6354,9 +6573,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6411,9 +6642,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6423,6 +6669,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6447,6 +6699,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6525,6 +6780,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6573,18 +6831,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6600,6 +6846,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6633,6 +6882,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6645,6 +6897,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6690,22 +6945,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6717,6 +6972,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6804,7 +7062,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6888,6 +7146,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6918,6 +7179,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6948,6 +7212,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -7023,6 +7290,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -7056,6 +7326,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -7089,6 +7362,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7326,6 +7602,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7335,6 +7614,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7344,6 +7626,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7392,10 +7683,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7737,12 +8031,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7770,7 +8073,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7785,6 +8088,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7863,6 +8169,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7878,6 +8190,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7947,15 +8262,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7983,6 +8298,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7995,9 +8313,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8313,6 +8628,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8346,9 +8664,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8358,6 +8673,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8445,24 +8766,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - msgid "assign yourself" msgstr "" @@ -8490,61 +8793,103 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8577,9 +8922,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8628,13 +8970,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8643,9 +8982,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8676,9 +9012,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8730,27 +9063,6 @@ msgstr[5] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -9039,6 +9351,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -9057,6 +9372,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -9120,6 +9438,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/bg/gitlab.po b/locale/bg/gitlab.po index c33fa2084a6..3a925c27e9b 100644 --- a/locale/bg/gitlab.po +++ b/locale/bg/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: bg\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:33\n" +"PO-Revision-Date: 2018-10-02 09:31\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Набор от графики относно непрекъснатата интеграция" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Добавяне на лиценз" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Наистина ли искате да изтриете този план за схема?" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "Подаване" msgid "CommitMessage|Add %{file_name}" msgstr "Добавяне на „%{file_name}“" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Подавания" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "Ръководство за сътрудничество" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "Създаване на нов…" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "Разклоняване" - msgid "CreateTag|Tag" msgstr "Етикет" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Файлове" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Филтриране по съобщение" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Търсене по път" @@ -3181,7 +3230,7 @@ msgstr "изпращане на промени от" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Разклонение" -msgstr[1] "Разклонения" - msgid "ForkedFromProjectPath|Forked from" msgstr "Разклонение на" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "Към Вашето разклонение" - -msgid "GoToYourFork|Fork" -msgstr "Разклонение" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "Шаблон за интервала" msgid "Introducing Cycle Analytics" msgstr "Представяме Ви анализа на циклите" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "Последна схема" msgid "Last commit" msgstr "Последно подаване" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "Няма хранилище" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Няма планове" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "Няма достатъчно данни" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "с етапи" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "Проектът „%{project_name}“ беше обновен успе msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "Достъпът до проекта трябва да бъде даван поотделно на всеки потребител." @@ -5673,6 +5861,9 @@ msgstr "Изнасянето на проекта започна. Ще получ msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "Никога" msgid "ProjectLifecycle|Stage" msgstr "Етап" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "ПрочетиМе" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "Изберете формата на архива" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "Изберете целеви клон" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,6 +6777,12 @@ msgstr "" msgid "Set up Koding" msgstr "Настройка на „Koding“" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6510,12 +6795,6 @@ msgstr "зададете парола" msgid "Settings" msgstr "" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "Създайте %{new_merge_request} с тези промени" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7109,7 +7409,7 @@ msgid "The tabs below will be removed in a future version" msgstr "" msgid "The testing stage shows the time GitLab CI takes to run every pipeline for the related merge request. The data will automatically be added after your first pipeline finishes running." -msgstr "Етапът на тестване показва времето, което е нужно на „GitLab CI“ да изпълни всяка схема от задачи за свързаната заявка за сливане. Данните ще бъдат добавени автоматично след като приключи изпълнението на първата Ви схема." +msgstr "Етапът на тестване показва времето, което е нужно на „Gitlab CI“ да изпълни всяка схема от задачи за свързаната заявка за сливане. Данните ще бъдат добавени автоматично след като приключи изпълнението на първата Ви схема." msgid "The time in seconds GitLab will keep failure information. When no failures occur during this time, information about the mount is reset." msgstr "" @@ -7126,6 +7426,9 @@ msgstr "Времето, което отнема всеки запис от да msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "Стойността, която се намира в средата на последователността от наблюдавани данни. Например: медианата на 3, 5 и 9 е 5, а медианата на 3, 5, 7 и 8 е (5+7)/2 = 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "Качване на нов файл" msgid "Upload file" msgstr "Качване на файл" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "щракнете за качване" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "Използване на глобалната Ви настройка msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "Можете да добавяте файлове само когато msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "Трябва да се впишете, за да отбележите проект със звезда" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "Нуждаете се от разрешение." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "Няма да получавате никакви известия по е-поща" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "дни" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "нова заявка за сливане" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/ca_ES/gitlab.po b/locale/ca_ES/gitlab.po index 6bfe59669b5..007b2a4d393 100644 --- a/locale/ca_ES/gitlab.po +++ b/locale/ca_ES/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: ca\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:33\n" +"PO-Revision-Date: 2018-10-02 11:52\n" msgid " Status" msgstr "" @@ -68,13 +68,13 @@ msgstr[1] "" msgid "%d layer" msgid_plural "%d layers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d capa" +msgstr[1] "%d capes" msgid "%d merge request" msgid_plural "%d merge requests" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d petició de fusió" +msgstr[1] "%d peticions de fusió" msgid "%d metric" msgid_plural "%d metrics" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -158,8 +161,8 @@ msgstr[1] "" msgid "%{text} %{files}" msgid_plural "%{text} %{files} files" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%{text} %{files}" +msgstr[1] "%{text} %{files} fitxers" msgid "%{text} is available" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -249,19 +238,19 @@ msgstr[1] "" msgid "1 role" msgid_plural "%d roles" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 rol" +msgstr[1] "%d rols" msgid "1 user" msgid_plural "%d users" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 usuari" +msgstr[1] "%d usuaris" msgid "1st contribution!" msgstr "" msgid "2FA enabled" -msgstr "" +msgstr "2FA activat" msgid "403|Please contact your GitLab administrator to get the permission." msgstr "" @@ -273,7 +262,7 @@ msgid "404|Make sure the address is correct and the page hasn't moved." msgstr "" msgid "404|Page Not Found" -msgstr "" +msgstr "404|No s'ha trobat la pàgina" msgid "404|Please contact your GitLab administrator if you think this is a mistake." msgstr "" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -327,7 +322,7 @@ msgid "A user with write access to the source branch selected this option" msgstr "" msgid "About GitLab" -msgstr "" +msgstr "Quant al GitLab" msgid "About GitLab CE" msgstr "Quant al GitLab CE" @@ -342,7 +337,7 @@ msgid "Abuse Reports" msgstr "" msgid "Abuse reports" -msgstr "" +msgstr "Informes d'abús" msgid "Accept terms" msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -369,16 +367,16 @@ msgid "Account" msgstr "Compte" msgid "Account and limit" -msgstr "" +msgstr "Compte i límit" msgid "Active" -msgstr "" +msgstr "Actiu" msgid "Active Sessions" -msgstr "" +msgstr "Sessions actives" msgid "Activity" -msgstr "" +msgstr "Activitat" msgid "Add" msgstr "Afegeix" @@ -395,44 +393,47 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" msgid "Add new directory" -msgstr "" +msgstr "Afegeix un directori nou" msgid "Add reaction" -msgstr "" +msgstr "Afegeix una reacció" msgid "Add todo" msgstr "" msgid "Add user(s) to the group:" -msgstr "" +msgstr "Afegeix usuaris al grup:" msgid "Add users to group" +msgstr "Afegeix usuaris al grup" + +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" msgstr "" msgid "Additional text" -msgstr "" +msgstr "Text addicional" msgid "Admin Area" -msgstr "" +msgstr "Àrea d'administració" msgid "Admin Overview" -msgstr "" +msgstr "Informació general d'administració" msgid "Admin area" -msgstr "" +msgstr "Àrea d'administració" msgid "AdminArea| You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." msgstr "" @@ -495,10 +496,10 @@ msgid "AdminUsers|To confirm, type %{username}" msgstr "" msgid "Advanced" -msgstr "" +msgstr "Avançat" msgid "Advanced settings" -msgstr "" +msgstr "Configuració avançada" msgid "All" msgstr "" @@ -510,7 +511,7 @@ msgid "All features are enabled for blank projects, from templates, or when impo msgstr "" msgid "All users" -msgstr "" +msgstr "Tots els usuaris" msgid "Allow commits from members who can merge to the target branch." msgstr "" @@ -690,10 +691,10 @@ msgid "Anti-spam verification" msgstr "" msgid "Any" -msgstr "" +msgstr "Qualsevol" msgid "Any Label" -msgstr "" +msgstr "Qualsevol etiqueta" msgid "Appearance" msgstr "Aparença" @@ -708,17 +709,20 @@ msgid "Application: %{name}" msgstr "Aplicació: %{name}" msgid "Applications" -msgstr "" +msgstr "Aplicacions" msgid "Apr" -msgstr "" +msgstr "abr" msgid "April" -msgstr "" +msgstr "abril" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -777,7 +781,7 @@ msgid "Assigned Issues" msgstr "" msgid "Assigned Merge Requests" -msgstr "" +msgstr "Peticions de fusió assignades" msgid "Assigned to :name" msgstr "" @@ -807,7 +811,7 @@ msgid "Aug" msgstr "" msgid "August" -msgstr "" +msgstr "agost" msgid "Authentication Log" msgstr "" @@ -819,7 +823,7 @@ msgid "Authentication method" msgstr "" msgid "Author" -msgstr "" +msgstr "Autor" msgid "Authorization code:" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -906,7 +913,7 @@ msgid "Average per day: %{average}" msgstr "" msgid "Background Color" -msgstr "" +msgstr "Color de fons" msgid "Background Jobs" msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgstr "" + +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST is loading" -msgstr "" - -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/cs_CZ/gitlab.po b/locale/cs_CZ/gitlab.po index 0e349d2b12a..013152917e6 100644 --- a/locale/cs_CZ/gitlab.po +++ b/locale/cs_CZ/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: cs\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:30\n" msgid " Status" msgstr "" @@ -158,6 +158,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -205,35 +208,13 @@ msgstr "%{text} je k dispozici" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -382,6 +363,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -424,6 +411,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -463,15 +453,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -490,6 +480,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "Dodatečný text" @@ -787,6 +780,9 @@ msgstr "Duben" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -946,6 +942,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -982,9 +981,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1469,6 +1465,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1631,6 +1633,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1679,10 +1684,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1709,6 +1714,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1775,9 +1786,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1811,15 +1819,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1844,12 +1843,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1907,6 +1900,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1937,9 +1933,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1979,12 +1972,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -2003,6 +1999,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -2021,9 +2020,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -2033,6 +2029,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2086,6 +2085,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2158,24 +2160,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2260,6 +2256,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2293,6 +2292,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2398,9 +2406,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2518,6 +2523,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2723,9 +2731,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2885,6 +2905,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -3020,10 +3046,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3134,6 +3160,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3215,6 +3244,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3227,9 +3259,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3257,7 +3298,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3296,19 +3337,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3366,6 +3403,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3543,6 +3583,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3585,6 +3628,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3597,6 +3643,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3624,6 +3673,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3639,6 +3694,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3717,12 +3775,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3783,13 +3835,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3876,6 +3928,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3888,19 +3943,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3942,6 +3997,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4108,6 +4166,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4178,6 +4239,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4217,9 +4284,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4256,7 +4320,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4365,6 +4429,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4609,6 +4676,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4663,9 +4733,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4690,6 +4757,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4870,9 +4940,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -5027,6 +5094,9 @@ 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 due date" msgstr "" @@ -5048,6 +5118,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -5075,6 +5148,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5111,6 +5187,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5544,12 +5623,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5589,9 +5662,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5628,6 +5707,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5637,15 +5719,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5658,39 +5755,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5700,6 +5866,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5736,6 +5911,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5763,6 +5941,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5790,6 +5971,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6096,6 +6298,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6175,6 +6380,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6184,18 +6392,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6208,6 +6434,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6262,9 +6491,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6317,9 +6558,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6329,6 +6585,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6353,6 +6615,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6431,6 +6696,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6479,16 +6747,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6504,6 +6762,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6537,6 +6798,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6549,6 +6813,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6594,22 +6861,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6621,6 +6888,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6706,7 +6976,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6790,6 +7060,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6820,6 +7093,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6850,6 +7126,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6925,6 +7204,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6958,6 +7240,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6991,6 +7276,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7226,6 +7514,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7235,6 +7526,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7244,6 +7538,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7292,10 +7595,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7633,12 +7939,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7666,7 +7981,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7681,6 +7996,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7759,6 +8077,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7774,6 +8098,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7843,15 +8170,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7879,6 +8206,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7891,9 +8221,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8209,6 +8536,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8242,9 +8572,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8254,6 +8581,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8341,20 +8674,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "assign yourself" msgstr "" @@ -8382,61 +8701,95 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8469,9 +8822,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8516,13 +8866,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8531,9 +8878,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8564,9 +8908,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8614,23 +8955,6 @@ msgstr[3] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8911,6 +9235,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8929,6 +9256,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8988,6 +9318,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/da_DK/gitlab.po b/locale/da_DK/gitlab.po index c32bf9eb38d..ed25f935b9a 100644 --- a/locale/da_DK/gitlab.po +++ b/locale/da_DK/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: da\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:30\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/de/gitlab.po b/locale/de/gitlab.po index 25a041c94f4..41848faeb30 100644 --- a/locale/de/gitlab.po +++ b/locale/de/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:30\n" +"PO-Revision-Date: 2018-10-02 09:28\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Eine Sammlung von Graphen bezüglich kontinuierlicher Integration" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Lizenz hinzufügen" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Bist Du sicher, dass Du diesen Pipeline-Zeitplan löschen möchtest?" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "Commit" msgid "CommitMessage|Add %{file_name}" msgstr "%{file_name} hinzufügen" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Commits" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "Mitarbeitsanleitung" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "Erstelle neues..." msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "Ableger" - msgid "CreateTag|Tag" msgstr "Tag " @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Dateien" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Filter nach Commit Nachricht" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Finde über den Pfad" @@ -3181,7 +3230,7 @@ msgstr "übertragen von" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Ableger" -msgstr[1] "Ableger" - msgid "ForkedFromProjectPath|Forked from" msgstr "Ableger von" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3571,7 +3639,7 @@ msgid "Git revision" msgstr "" msgid "Git storage health information has been reset" -msgstr "Informationen über den Speicherzustand von GitLab wurden zurückgesetzt." +msgstr "Informationen über den Speicherzustand von Gitlab wurden zurückgesetzt." msgid "Git strategy for pipelines" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "Gehe zu Deinem Ableger" - -msgid "GoToYourFork|Fork" -msgstr "Ableger" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "Intervallmuster" msgid "Introducing Cycle Analytics" msgstr "Arbeitsablaufsanalysen vorgestellt" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "Letzte Pipeline" msgid "Last commit" msgstr "Letzter Commit" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "Kein Repository" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Keine Zeitpläne" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "Nicht genügend Daten" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "mit Stages" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "Das Projekt '%{project_name}' wurde erfolgreich aktualisiert." msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "Jedem Nutzer muss explizit der Zugriff auf das Projekt gewährt werden." @@ -5673,6 +5861,9 @@ msgstr "Export des Projektes gestartet. Ein Link zum herunterladen wir Dir per E msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "Abonnieren" @@ -5700,6 +5891,27 @@ msgstr "Niemals" msgid "ProjectLifecycle|Stage" msgstr "Stage" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "Lies mich" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "Archivierungsformat auswählen" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "Zielbranch auswählen" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,6 +6777,12 @@ msgstr "" msgid "Set up Koding" msgstr "Koding einrichten" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6510,12 +6795,6 @@ msgstr "ein Passwort festlegst" msgid "Settings" msgstr "Einstellungen" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "Beginne einen %{new_merge_request} mit diesen Änderungen" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "Starte den Runner!" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "Zeit, die für das jeweilige Ereignis in der Phase ermittelt wurde." msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "Der mittlere aller erfassten Werte. Zum Beispiel ist für 3, 5, 9 der Median 5. Bei 3, 5, 7, 8 ist der Median (5+7)/2 = 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "Es gibt ein Problem beim Zugriff auf den Gitspeicher:" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "Eine Neue Datei hochladen" msgid "Upload file" msgstr "Eine Datei hochladen" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "Zum Upload klicken" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "Benutze Deine globalen Benachrichtigungseinstellungen" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "Du kannst Dateien nur hinzufügen, wenn Du dich auf einem Branch befinde msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "Du musst angemeldet sein, um ein Projekt zu favorisieren." - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "Du brauchst eine Genehmigung." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "Du wirst keine Benachrichtigungen per E-Mail erhalten." @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "Tage" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "Neuer Merge Request" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/eo/gitlab.po b/locale/eo/gitlab.po index 456235b2fa6..8bd42855b44 100644 --- a/locale/eo/gitlab.po +++ b/locale/eo/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: eo\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:29\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Aro da diagramoj pri la seninterrompa integrado" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Aldoni rajtigilon" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Ĉu vi certe volas forigi ĉi tiun ĉenstablan planon?" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "Enmeti" msgid "CommitMessage|Add %{file_name}" msgstr "Aldoni „%{file_name}“" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Enmetadoj" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "Gvidlinioj por kontribuado" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "Krei novan…" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "Disbranĉigi" - msgid "CreateTag|Tag" msgstr "Etikedo" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Dosieroj" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Filtri per mesaĝo" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Trovi per dosierindiko" @@ -3181,7 +3230,7 @@ msgstr "alpuŝita de" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Disbranĉigo" -msgstr[1] "Disbranĉigoj" - msgid "ForkedFromProjectPath|Forked from" msgstr "Disbranĉigita el" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "Al via disbranĉigo" - -msgid "GoToYourFork|Fork" -msgstr "Disbranĉigo" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "Intervala ŝablono" msgid "Introducing Cycle Analytics" msgstr "Ni prezentas al vi la ciklan analizon" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "Lasta ĉenstablo" msgid "Last commit" msgstr "Lasta enmetado" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "Ne estas deponejo" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Ne estas planoj" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "Ne estas sufiĉe da datenoj" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "kun etapoj" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "La projekto „%{project_name}“ estis sukcese ĝisdatigita." msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "Ĉiu uzanto devas akiri propran atingon al la projekto." @@ -5673,6 +5861,9 @@ msgstr "La elporto de la projekto komenciĝis. Vi ricevos ligilon per retpoŝto msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "Neniam" msgid "ProjectLifecycle|Stage" msgstr "Etapo" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "LeguMin" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "Elektu formaton de arkivo" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "Elektu celan branĉon" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,6 +6777,12 @@ msgstr "" msgid "Set up Koding" msgstr "Agordi „Koding“" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6510,12 +6795,6 @@ msgstr "kreos pasvorton" msgid "Settings" msgstr "" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "Kreu %{new_merge_request} kun ĉi tiuj ŝanĝoj" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "La tempo, kiu estas necesa por ĉiu dateno kolektita de la etapo." msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "La valoro, kiu troviĝas en la mezo de aro da rigardataj valoroj. Ekzemple: inter 3, 5 kaj 9, la mediano estas 5. Inter 3, 5, 7 kaj 8, la mediano estas (5+7)/2 = 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "Alŝuti novan dosieron" msgid "Upload file" msgstr "Alŝuti dosieron" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "alklaku por alŝuti" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "Uzi vian ĝeneralan agordon pri la sciigoj" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "Oni povas aldoni dosierojn nur kiam oni estas en branĉo" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "Oni devas ensaluti por steligi projekton" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "VI bezonas permeson." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "VI ne ricevos sciigojn per retpoŝto" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "tagoj" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "novan peton pri kunfando" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/es/gitlab.po b/locale/es/gitlab.po index 648b323bed0..2a8fb756192 100644 --- a/locale/es/gitlab.po +++ b/locale/es/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:26\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "%{text} esta disponible" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Una colección de gráficos sobre Integración Continua" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "Tokens de acceso" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Agregar Licencia" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "Abril" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "¿Estás seguro que deseas eliminar esta programación del pipeline?" @@ -878,6 +882,9 @@ msgstr "Automáticamente construirán, probarán y desplegarán su aplicación c msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "Más información en %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "Cerrar" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "Crear cluster de Kubernetes" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "Instalar" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "Instalado" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Integración de cluster de Kubernetes" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "Conozca más sobre los entornos" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "Tipo de máquina" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "Algo salió mal durante la instalación de %{title}" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "Su cuenta debe tener %{link_to_kubernetes_engine}" @@ -1951,9 +1958,6 @@ msgstr "documentación" msgid "ClusterIntegration|help page" msgstr "página de ayuda" -msgid "ClusterIntegration|installing applications" -msgstr "Instalando aplicaciones" - msgid "ClusterIntegration|meets the requirements" msgstr "cumple con los requisitos" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "Cambio" msgid "CommitMessage|Add %{file_name}" msgstr "Agregar %{file_name}" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Cambios" @@ -2084,24 +2094,18 @@ msgstr "Confidencialidad" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2130,7 +2134,7 @@ msgid "ContainerRegistry|First log in to GitLab’s Container Registry using msgstr "" msgid "ContainerRegistry|GitLab supports up to 3 levels of image names. The following examples of images are valid for your project:" -msgstr "GitLab soporta hasta 3 niveles para nombres de imágenes. Los siguientes ejemplos de imágenes son válidos para tu proyecto:" +msgstr "Gitlab soporta hasta 3 niveles para nombres de imágenes. Los siguientes ejemplos de imágenes son válidos para tu proyecto:" msgid "ContainerRegistry|How to use the Container Registry" msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "Guía de contribución" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "Crear nuevo..." msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "Bifurcar" - msgid "CreateTag|Tag" msgstr "Etiqueta" @@ -2444,6 +2457,9 @@ msgstr "Diciembre" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "Febrero" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Archivos" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Filtrar por mensaje del cambio" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Buscar por ruta" @@ -3181,7 +3230,7 @@ msgstr "enviado por" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Bifurcación" -msgstr[1] "Bifurcaciones" - msgid "ForkedFromProjectPath|Forked from" msgstr "Bifurcado de" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "Ir a tu bifurcación" - -msgid "GoToYourFork|Fork" -msgstr "Bifurcación" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "No se encuentran grupos" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "Crear un proyecto en este grupo." @@ -3810,20 +3875,20 @@ msgstr "Editar grupo" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "No pudiste dejar el grupo. Por favor, asegúrate que no seas el único propietario." -msgid "GroupsTree|Filter by name..." -msgstr "Filtrar por nombre..." - msgid "GroupsTree|Leave this group" msgstr "Dejar este grupo" msgid "GroupsTree|Loading groups" msgstr "Cargando grupos" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "Lo sentimos, no existen grupos que coincidan con su búsqueda" +msgid "GroupsTree|No groups matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "Lo sentimos, no existen grupos ni proyectos que coincidan con su búsqueda" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" +msgstr "" msgid "Have your users email" msgstr "" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "Patrón de intervalo" msgid "Introducing Cycle Analytics" msgstr "Introducción a Cycle Analytics" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "Último Pipeline" msgid "Last commit" msgstr "Último cambio" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "No hay repositorio" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "No hay programaciones" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "No hay suficientes datos" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "con etapas" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "Preferencias" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "Contraseña inválida" msgid "Profiles|Invalid username" msgstr "Nombre de usuario inválido" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "Escribe tu %{confirmationValue} para confirmar:" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "No tienes acceso para eliminar este usuario." @@ -5610,6 +5786,15 @@ msgstr "Debes transferir o eliminar estos grupos antes de que puedas eliminar tu msgid "Profiles|Your account is currently an owner in these groups:" msgstr "Actualmente su cuenta es propietaria de estos grupos:" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "Proyecto ‘%{project_name}’ fue actualizado satisfactoriamente." msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "El acceso al proyecto debe concederse explícitamente a cada usuario." @@ -5673,6 +5861,9 @@ msgstr "Se inició la exportación del proyecto. Se enviará un enlace de descar msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "Suscribirse" @@ -5700,6 +5891,27 @@ msgstr "Nunca" msgid "ProjectLifecycle|Stage" msgstr "Etapa" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "Léeme" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "Seleccionar formato de archivo" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "Selecciona una rama de destino" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,6 +6777,12 @@ msgstr "" msgid "Set up Koding" msgstr "Configurar Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6510,12 +6795,6 @@ msgstr "establecer una contraseña" msgid "Settings" msgstr "Configuración" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "Proyectos favoritos" msgid "Start a %{new_merge_request} with these changes" msgstr "Iniciar una %{new_merge_request} con estos cambios" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "Sub-grupos" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "El tiempo utilizado por cada entrada de datos obtenido por esa etapa." msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "El valor en el punto medio de una serie de valores observados. Por ejemplo, entre 3, 5, 9, la mediana es 5. Entre 3, 5, 7, 8, la mediana es (5 + 7) / 2 = 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "Desbloqueado" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "Subir nuevo archivo" msgid "Upload file" msgstr "Subir archivo" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "Hacer clic para subir" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "Utiliza tu configuración de notificación global" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "Solo puedes agregar archivos cuando estás en una rama" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "Debes iniciar sesión para destacar un proyecto" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "Necesitas permisos." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "No recibirás ninguna notificación por correo electrónico" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "días" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "nueva solicitud de fusión" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "usuario" diff --git a/locale/et_EE/gitlab.po b/locale/et_EE/gitlab.po index dbaff32f1b5..a9637d4098e 100644 --- a/locale/et_EE/gitlab.po +++ b/locale/et_EE/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: et\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:29\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/fil_PH/gitlab.po b/locale/fil_PH/gitlab.po index 20943d89ea0..0929e3dd7cb 100644 --- a/locale/fil_PH/gitlab.po +++ b/locale/fil_PH/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: fil\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:29\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/fr/gitlab.po b/locale/fr/gitlab.po index 463c30cccfb..cf00055272c 100644 --- a/locale/fr/gitlab.po +++ b/locale/fr/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: fr\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 11:46\n" msgid " Status" msgstr " Statut" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "Les %{group_docs_link_start}groupes%{group_docs_link_end} vous permettent de gérer plusieurs projets et d’y collaborer. Les membres d’un groupe ont accès à tous ses projets." +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "%{issuableType} sera supprimé ! Êtes‐vous sûr ?" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} Démarré" @@ -167,29 +170,15 @@ msgstr "%{text} est disponible" msgid "%{title} changes" msgstr "Changements %{title}" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "%{type} a détecté une vulnérabilité corrigée" -msgstr[1] "%{type} a détecté %{vulnerabilityCount} vulnérabilités corrigées" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "%{type} a détecté une nouvelle vulnérabilité" -msgstr[1] "%{type} a détecté %{vulnerabilityCount} nouvelles vulnérabilités" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type} a détecté 1 vulnérabilité" -msgstr[1] "%{type} a détecté %{vulnerabilityCount} vulnérabilités" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "%{type} a détecté une vulnérabilité uniquement dans la branche source" -msgstr[1] "%{type} a détecté %{vulnerabilityCount} vulnérabilités uniquement dans la branche source" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{staged} changements prêts à être validés et %{unstaged} autres changements" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "%{usage_ping_link_start}En savoir plus%{usage_ping_link_end} sur les informations partagées avec GitLab Inc." + +msgid "+ %{count} more" +msgstr "+ %{count} de plus" + msgid "+ %{moreCount} more" msgstr "+ %{moreCount} de plus" @@ -291,7 +280,7 @@ msgid "\"johnsmith@example.com\": \"johnsmith@example.com\" will ad msgstr "\"johnsmith@example.com\": \"johnsmith@example.com\" ajoutera « Par johnsmith@example.com » à tous les tickets et commentaires créés à l’origine par johnsmith@example.com. Par défaut, l’adresse de courriel ou le nom d’utilisateur est masqué pour garantir la confidentialité de l’utilisateur. Utilisez cette option si vous souhaitez afficher l’adresse de courriel complète." msgid "%{changedFilesLength} unstaged and %{stagedFilesLength} staged changes" -msgstr "" +msgstr "%{changedFilesLength} modifications non indexées et %{stagedFilesLength} modifications d’étape" msgid "%{created_count} created, %{accepted_count} accepted." msgstr "%{created_count} créé(s), %{accepted_count} accepté(s)." @@ -314,6 +303,12 @@ msgstr "Un « exécuteur » est un processus qui exécute une tâche. Vous pou msgid "A collection of graphs regarding Continuous Integration" msgstr "Un ensemble de graphiques concernant l’intégration continue (CI)" +msgid "A default branch cannot be chosen for an empty project." +msgstr "Une branche par défaut ne peut pas être choisie pour un projet vide." + +msgid "A deleted user" +msgstr "Un utilisateur supprimé" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "Une nouvelle branche sera créée dans votre dépôt divergent (fork) et une nouvelle demande de fusion sera lancée." @@ -356,6 +351,9 @@ msgstr "Jetons d’accès" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "Accès refusé ! Veuillez vérifier que vous pouvez ajouter des clefs de déploiement à ce dépôt." +msgid "Access expiration date" +msgstr "Date d’expiration de l’accès" + msgid "Access to '%{classification_label}' not allowed" msgstr "Accès à « %{classification_label} » non autorisé" @@ -395,15 +393,15 @@ msgstr "Ajoutez des Webhooks de groupe avec GitLab Enterprise Edition." msgid "Add Kubernetes cluster" msgstr "Ajouter une grappe de serveurs Kubernetes" -msgid "Add License" -msgstr "Ajouter une licence" - msgid "Add Readme" msgstr "Ajouter un fichier Readme" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "Ajouter un texte apparaissant dans toutes communications par courriel (%{character_limit} caractères maximum)" +msgid "Add license" +msgstr "Ajouter une licence" + msgid "Add new application" msgstr "Ajouter une nouvelle application" @@ -422,6 +420,9 @@ msgstr "Ajouter un ou des utilisateurs au groupe :" msgid "Add users to group" msgstr "Ajouter des utilisateurs au groupe" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "L’ajout de nouvelles applications est désactivé dans votre instance GitLab. Veuillez contacter votre administrateur GitLab pour en obtenir la permission." + msgid "Additional text" msgstr "Texte supplémentaire" @@ -546,7 +547,7 @@ msgid "An application called %{link_to_client} is requesting access to your GitL msgstr "Une application appelée %{link_to_client} demande l’accès à votre compte GitLab." msgid "An empty GitLab User field will add the FogBugz user's full name (e.g. \"By John Smith\") in the description of all issues and comments. It will also associate and/or assign these issues and comments with the project creator." -msgstr "Un champ utilisateur GitLab vide ajoutera le nom complet de l’utilisateur FogBugz (p. ex., « Par John Smith ») dans la description de tous les tickets et commentaires. Il associera ou assignera ces tickets et commentaires au créateur du projet." +msgstr "Un champ utilisateur Gitlab vide ajoutera le nom complet de l’utilisateur FogBugz (p. ex., « Par John Smith ») dans la description de tous les tickets et commentaires. Il associera ou assignera ces tickets et commentaires au créateur du projet." msgid "An error accured whilst committing your changes." msgstr "Une erreur est survenue lors du commit de vos modifications." @@ -612,16 +613,16 @@ msgid "An error occurred while fetching sidebar data" msgstr "Une erreur s’est produite lors de la récupération des données de la barre latérale" msgid "An error occurred while fetching stages." -msgstr "" +msgstr "Une erreur est survenue lors de la récupération des étapes." msgid "An error occurred while fetching the job log." -msgstr "" +msgstr "Une erreur est survenue pendant la récupération du journal de la tâche." msgid "An error occurred while fetching the job." -msgstr "" +msgstr "Une erreur est survenue pendant la récupération de la tâche." msgid "An error occurred while fetching the jobs." -msgstr "" +msgstr "Une erreur est survenue pendant la récupération des tâches." msgid "An error occurred while fetching the pipeline." msgstr "Une erreur est survenue pendant la récupération du pipeline." @@ -719,6 +720,9 @@ msgstr "avril" msgid "Archived project! Repository and other project resources are read-only" msgstr "Projet archivé ! Le dépôt et les autres ressources du projet sont en lecture seule" +msgid "Archived projects" +msgstr "Projets archivés" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Êtes‐vous sûr·e de vouloir supprimer ce pipeline programmé ?" @@ -878,6 +882,9 @@ msgstr "Auto DevOps va automatiquement construire, tester et déployer votre app msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "Apprenez‐en davantage en consultant la %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "Le pipeline Auto DevOps a été activé et sera utilisé si aucun autre fichier de configuration d’intégration continue n’est trouvé. %{more_information_link}" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "Vous pouvez automatiquement générer et tester votre application si vous %{link_to_auto_devops_settings} pour ce projet. Vous pouvez aussi la déployer automatiquement, si vous %{link_to_add_kubernetes_cluster}." @@ -914,11 +921,8 @@ msgstr "Tâches de fond" msgid "Background color" msgstr "Couleur d’arrière‐plan" -msgid "Background jobs" -msgstr "Tâches de fond" - msgid "Badges" -msgstr "Badges" +msgstr "Badges numériques" msgid "Badges|A new badge was added." msgstr "Un nouveau badge a été ajouté." @@ -954,10 +958,10 @@ msgid "Badges|No badge image" msgstr "Pas d’image de badge" msgid "Badges|No image to preview" -msgstr "Pas d’image à prévisualiser" +msgstr "Aucune image à prévisualiser" msgid "Badges|Please fill in a valid URL" -msgstr "" +msgstr "Veuillez saisir une URL valide" msgid "Badges|Project Badge" msgstr "Badge de projet" @@ -990,10 +994,10 @@ msgid "Badges|You are going to delete this badge. Deleted badges cannot< msgstr "Vous êtes sur le point de supprimer ce badge. Les badges supprimés ne peuvent pas être restaurés." msgid "Badges|Your badges" -msgstr "Vos badges" +msgstr "Vos badges numériques" msgid "Badges|e.g. %{exampleUrl}" -msgstr "" +msgstr "p. ex. %{exampleUrl}" msgid "Begin with the selected commit" msgstr "Commencer avec le commit sélectionné" @@ -1399,6 +1403,12 @@ msgstr "Choisir le fichier…" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "Choisissez une branche ou une étiquette (par exemple %{master}) ou entrez un commit (par exemple %{sha}) pour voir ce qui a changé ou pour créer une demande de fusion." +msgid "Choose a template..." +msgstr "Choisir un modèle…" + +msgid "Choose a type..." +msgstr "Choisir un type…" + msgid "Choose any color." msgstr "Choisissez n’importe quelle couleur." @@ -1430,7 +1440,7 @@ msgid "CiStatusLabel|created" msgstr "créé" msgid "CiStatusLabel|failed" -msgstr "échoué" +msgstr "en échec" msgid "CiStatusLabel|manual action" msgstr "action manuelle" @@ -1460,7 +1470,7 @@ msgid "CiStatusText|created" msgstr "créé" msgid "CiStatusText|failed" -msgstr "échoué" +msgstr "en échec" msgid "CiStatusText|manual" msgstr "manuel" @@ -1505,7 +1515,7 @@ msgid "CiVariable|Protected" msgstr "Protégée" msgid "CiVariable|Search environments" -msgstr "" +msgstr "Chercher des environnements" msgid "CiVariable|Toggle protected" msgstr "Changer l’état de protection" @@ -1561,6 +1571,9 @@ msgstr "Cloner le dépôt" msgid "Close" msgstr "Fermer" +msgid "Close epic" +msgstr "Clore l’épopée" + msgid "Closed" msgstr "Fermé(e)" @@ -1583,7 +1596,7 @@ msgid "ClusterIntegration|Advanced options on this Kubernetes cluster's integrat msgstr "Options avancées concernant l’intégration de cette grappe de serveurs Kubernetes" msgid "ClusterIntegration|After installing Ingress, you will need to point your wildcard DNS at the generated external IP address in order to view your app after it is deployed. %{ingressHelpLink}" -msgstr "" +msgstr "Après avoir installé Ingress, vous devrez faire pointer votre entrée DNS générique (wildcard) vers l’adresse IP externe générée afin que votre application puisse s’afficher après son déploiement. %{ingressHelpLink}" msgid "ClusterIntegration|An error occured while trying to fetch project zones: %{error}" msgstr "Une erreur est survenue lors de la tentative de récupération des zones du projet : %{error}" @@ -1592,10 +1605,10 @@ msgid "ClusterIntegration|An error occured while trying to fetch your projects: msgstr "Une erreur est survenue lors de la tentative de récupération de vos projets : %{error}" msgid "ClusterIntegration|An error occured while trying to fetch zone machine types: %{error}" -msgstr "" +msgstr "Une erreur est survenue lors de la tentative de récupération des types de machines de la zone : %{error}" msgid "ClusterIntegration|An error occurred when trying to contact the Google Cloud API. Please try again later." -msgstr "" +msgstr "Une erreur est survenue lors de la tentative de contact de l’API Google Cloud. Veuillez réessayer plus tard." msgid "ClusterIntegration|Applications" msgstr "Applications" @@ -1609,11 +1622,11 @@ msgstr "Certificat d’autorité de certification" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "Ensemble de certificats des autorités de certification (format PEM)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "Choisissez les environnements de votre projet qui utiliseront cette grappe de serveurs Kubernetes." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "Choisissez les applications à installer sur votre grappe de serveurs Kubernetes. L’installation de n’importe quelle des applications suivantes nécessite Helm Tiller." -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "Contrôlez l’intégration de votre grappe de serveurs Kubernetes avec GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "Choisissez lequel de vos environnements utilisera cette grappe de serveurs." msgid "ClusterIntegration|Copy API URL" msgstr "Copier l’URL de l’API" @@ -1639,6 +1652,12 @@ msgstr "Créer une grappe de serveurs Kubernetes" msgid "ClusterIntegration|Did you know?" msgstr "Le saviez‐vous ?" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "Activez ou désactivez la connexion de GitLab à votre grappe de serveurs Kubernetes." + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "Activez ce paramètre si vous utilisez le contrôle d’accès basé sur les rôles (RBAC)." + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "Entrez les détails de votre grappe de serveurs Kubernetes" @@ -1664,7 +1683,7 @@ msgid "ClusterIntegration|GitLab Runner" msgstr "Exécuteur GitLab" msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." -msgstr "" +msgstr "GitLab Runner se connecte au dépôt de ce projet et exécute les tâches d’intégration et livraison continues (CI/CD), en renvoyant les résultats et en déployant les applications en production." msgid "ClusterIntegration|Google Cloud Platform project" msgstr "Projet Google Cloud Platform" @@ -1679,7 +1698,7 @@ msgid "ClusterIntegration|Helm Tiller" msgstr "Helm Tiller" msgid "ClusterIntegration|Helm streamlines installing and managing Kubernetes applications. Tiller runs inside of your Kubernetes Cluster, and manages releases of your charts." -msgstr "" +msgstr "Helm rationalise l’installation et la gestion des applications Kubernetes. Tiller s’exécute sur votre grappe de serveurs Kubernetes et gère les publications de vos graphiques." msgid "ClusterIntegration|Hide" msgstr "Masquer" @@ -1697,7 +1716,7 @@ msgid "ClusterIntegration|Ingress IP Address" msgstr "Adresse IP Ingress" msgid "ClusterIntegration|Ingress gives you a way to route requests to services based on the request host or path, centralizing a number of services into a single entrypoint." -msgstr "" +msgstr "Ingress vous permet de router les requêtes vers des services en fonction de l’hôte ou du chemin de la requête, en centralisant un certain nombre de services vers un seul point d’entrée." msgid "ClusterIntegration|Install" msgstr "Installer" @@ -1705,9 +1724,6 @@ msgstr "Installer" msgid "ClusterIntegration|Install Prometheus" msgstr "Installer Prometheus" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "Installé" @@ -1727,7 +1743,7 @@ msgid "ClusterIntegration|JupyterHub" msgstr "JupyterHub" msgid "ClusterIntegration|JupyterHub, a multi-user Hub, spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server. JupyterHub can be used to serve notebooks to a class of students, a corporate data science group, or a scientific research group." -msgstr "" +msgstr "JupyterHub est une plaque tournante multi‐utilisateur qui génère, gère et « proxifie » plusieurs instances du serveur de bloc‐notes mono‐utilisateur Jupyter notebook. JupyterHub peut être utilisé pour servir des bloc‐notes aux élèves d’une classe, un groupe d’informaticiens d’une entreprise ou un groupe de scientifiques chercheurs." msgid "ClusterIntegration|Kubernetes cluster" msgstr "Grappe de serveurs Kubernetes" @@ -1741,15 +1757,6 @@ msgstr "État de santé de la grappe de serveurs Kubernetes" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Intégration d’une grappe de serveurs Kubernetes" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "L’intégration de la grappe de serveurs Kubernetes est désactivée pour ce projet." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "L’intégration de la grappe de serveurs Kubernetes est activée pour ce projet." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "L’intégration d’une grappe de serveurs Kubernetes est activée pour ce projet. La désactivation de cette intégration n’affectera pas votre grappe de serveurs Kubernetes, elle ne désactivera que temporairement sa connexion à GitLab." - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "La grappe de serveurs Kubernetes est en cours de création sur Google Kubernetes Engine…" @@ -1774,12 +1781,6 @@ msgstr "En savoir plus sur %{help_link_start}Kubernetes%{help_link_end}." msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "En savoir plus sur %{help_link_start}les zones%{help_link_end}." -msgid "ClusterIntegration|Learn more about environments" -msgstr "En savoir plus sur les environnements" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "En savoir plus sur la configuration de la sécurité" - msgid "ClusterIntegration|Machine type" msgstr "Type de machine" @@ -1823,7 +1824,7 @@ msgid "ClusterIntegration|Please make sure that your Google account meets the fo msgstr "Veuillez vous assurer que votre compte Google répond aux exigences suivantes :" msgid "ClusterIntegration|Point a wildcard DNS to this generated IP address in order to access your application after it has been deployed." -msgstr "" +msgstr "Faites pointer une entrée DNS générique (wildcard) sur cette adresse IP générée afin de pouvoir accéder à votre application après son déploiement." msgid "ClusterIntegration|Project namespace" msgstr "Espace de noms du projet" @@ -1835,7 +1836,10 @@ msgid "ClusterIntegration|Prometheus" msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." -msgstr "" +msgstr "Prometheus est un système de supervision libre avec %{gitlabIntegrationLink} permettant de surveiller les applications déployées." + +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "Grappe de serveurs avec accès RBAC (expérimental)" msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "Lisez notre %{link_to_help_page} sur l’intégration d’une grappe de serveurs Kubernetes." @@ -1850,7 +1854,7 @@ msgid "ClusterIntegration|Remove this Kubernetes cluster's configuration from th msgstr "Supprimer la configuration de cette grappe de serveurs Kubernetes de ce projet. Cela ne supprimera pas votre grappe de serveurs Kubernetes actuelle." msgid "ClusterIntegration|Replace this with your own hostname if you want. If you do so, point hostname to Ingress IP Address from above." -msgstr "" +msgstr "Vous pouvez remplacer ceci par un nom d’hôte personnalisé. Auquel cas, faites pointer ce nom d’hôte vers l’adresse IP d’Ingress ci‐dessus." msgid "ClusterIntegration|Request to begin installing failed" msgstr "La demande de lancement de l’installation a échoué" @@ -1867,9 +1871,6 @@ msgstr "Rechercher des projets" msgid "ClusterIntegration|Search zones" msgstr "Rechercher les zones" -msgid "ClusterIntegration|Security" -msgstr "Sécurité" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Voir et modifier les détails de votre grappe de serveurs Kubernetes" @@ -1907,14 +1908,17 @@ msgid "ClusterIntegration|Something went wrong while installing %{title}" msgstr "Une erreur s’est produite lors de l’installation de %{title}" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." -msgstr "" +msgstr "L’adresse IP est en cours d’affectation. Si cela dure trop longtemps, veuillez vérifier votre grappe de serveurs Kubernetes ou vos quotas sur Google Kubernetes Engine." -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "La configuration par défaut de la grappe de serveurs permet d’accéder à un large éventail de fonctionnalités nécessaires pour construire et déployer, avec succès, une application conteneurisée." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "La configuration par défaut de la grappe de serveurs permet d’accéder à un large éventail de fonctionnalités nécessaires pour construire et déployer une application conteneurisée." msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "Ce compte doit disposer des autorisations pour créer une grappe de serveurs Kubernetes dans le %{link_to_container_project} spécifié ci‐dessous" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "Cette option vous permettra d’installer des applications sur des grappes de serveurs avec contrôle d’accès basé sur le rôle (RBAC)." + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "Activer la grappe de serveurs Kubernetes" @@ -1928,11 +1932,14 @@ msgid "ClusterIntegration|Validating project billing status" msgstr "Validation de l’état de la facturation du projet" msgid "ClusterIntegration|We could not verify that one of your projects on GCP has billing enabled. Please try again." -msgstr "" +msgstr "Nous n’avons pu vérifier que la facturation de l’un de vos projets sur Google Cloud Platform est bien activée. Veuillez réessayer." msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "Avec une grappe de serveurs Kubernetes associée à ce projet, vous pouvez utiliser des applications de revue, déployer vos applications, exécuter vos pipelines, et bien plus encore." +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "Vous devez d’abord installer Helm Tiller avant d’installer les applications ci‐dessous" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "Votre compte doit disposer de %{link_to_kubernetes_engine}" @@ -1951,9 +1958,6 @@ msgstr "documentation" msgid "ClusterIntegration|help page" msgstr "page d’aide" -msgid "ClusterIntegration|installing applications" -msgstr "installation des applications" - msgid "ClusterIntegration|meets the requirements" msgstr "répond aux exigences" @@ -1963,6 +1967,9 @@ msgstr "correctement configuré" msgid "ClusterIntegration|sign up" msgstr "s’inscrire" +msgid "Code owners" +msgstr "Propriétaires du code" + msgid "Cohorts" msgstr "Cohortes" @@ -2012,6 +2019,9 @@ msgstr "Commit" msgid "CommitMessage|Add %{file_name}" msgstr "Ajout de %{file_name}" +msgid "CommitWidget|authored" +msgstr "réalisé" + msgid "Commits" msgstr "Commits" @@ -2084,24 +2094,18 @@ msgstr "Confidentialité" msgid "Configure Gitaly timeouts." msgstr "Configurer les délais d’expiration de Gitaly." -msgid "Configure Sidekiq job throttling." -msgstr "Configurer la limitation des tâches Sidekiq." - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "Configurer les vérifications Git automatiques et la maintenance des dépôts." msgid "Configure limits for web and API requests." msgstr "Configurer les limites pour les requêtes Web et d’API." -msgid "Configure push and pull mirrors." -msgstr "Configurez les miroirs où récupérer et pousser le code." +msgid "Configure push mirrors." +msgstr "Configurez les miroirs où pousser le code." msgid "Configure storage path and circuit breaker settings." msgstr "Configurez les paramètres du chemin de stockage et du disjoncteur." -msgid "Configure the %{link} integration." -msgstr "Configurez l’intégration %{link}." - msgid "Configure the way a user creates a new account." msgstr "Configurez la manière dont une personne crée un nouveau compte." @@ -2186,6 +2190,9 @@ msgstr "Contribution" msgid "Contribution guide" msgstr "Guide de contribution" +msgid "Contributions for %{calendar_date}" +msgstr "Contributions du %{calendar_date}" + msgid "Contributions per group member" msgstr "Contributions par membre du groupe" @@ -2219,6 +2226,15 @@ msgstr "Contrôle la concurrence maximale des opérations de vérification pour msgid "ConvDev Index" msgstr "Index ConvDev" +msgid "Copy %{protocol} clone URL" +msgstr "Copier l’URL %{protocol} de clonage" + +msgid "Copy HTTPS clone URL" +msgstr "Copier l’URL HTTPS de clonage" + +msgid "Copy SSH clone URL" +msgstr "Copier l’URL SSH de clonage" + msgid "Copy SSH public key to clipboard" msgstr "Copier la clef SSH publique dans le presse‐papiers" @@ -2324,9 +2340,6 @@ msgstr "Créer un nouveau…" msgid "Create project label" msgstr "Créer une étiquette de projet" -msgid "CreateNewFork|Fork" -msgstr "Créer une divergence" - msgid "CreateTag|Tag" msgstr "Étiquette" @@ -2444,6 +2457,9 @@ msgstr "décembre" msgid "Decline and sign out" msgstr "Refuser et se déconnecter" +msgid "Default Branch" +msgstr "Branche par défaut" + msgid "Default classification label" msgstr "Étiquette de classement par défaut" @@ -2647,9 +2663,21 @@ msgstr "Désactiver pour ce projet" msgid "Disable group Runners" msgstr "Désactiver les exécuteurs de groupe" +msgid "Discard" +msgstr "Rejeter" + +msgid "Discard all changes" +msgstr "Rejeter tous les changements" + +msgid "Discard all unstaged changes?" +msgstr "Rejeter toutes les modifications non indexées ?" + msgid "Discard changes" msgstr "Abandonner les modifications" +msgid "Discard changes to %{path}?" +msgstr "Rejeter les modifications de %{path} ?" + msgid "Discard draft" msgstr "Abandonner le brouillon" @@ -2809,6 +2837,12 @@ msgstr "Activer reCAPTCHA ou Akismet et définir des limites d’adresse IP." msgid "Enable the Performance Bar for a given group." msgstr "Activer la barre de performance pour un groupe donné." +msgid "Enable usage ping" +msgstr "Activer la collecte des données d’utilisation" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "Activez la collecte des données d’utilisation afin d’avoir une vue d’ensemble de la manière dont vous utilisez les fonctionnalités de GitLab." + msgid "Enabled" msgstr "activé" @@ -2861,7 +2895,7 @@ msgid "Environments|Environments" msgstr "Environnements" msgid "Environments|Environments are places where code gets deployed, such as staging or production." -msgstr "" +msgstr "Les environnements sont des endroits où le code est déployé, tel que l’étape ou la production." msgid "Environments|Job" msgstr "Tâche" @@ -2944,11 +2978,11 @@ msgstr "En savoir plus" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "Ces dates affectent la manière dont vos épopées apparaissent sur la feuille de route. Les dates des jalons proviennent des jalons attribués aux tickets de l’épopée. Vous pouvez également définir des dates fixes ou les supprimer complètement." -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" -msgstr "fini" +msgid "Epics|due" +msgstr "Échéance" msgid "Epics|start" msgstr "commence" @@ -3058,6 +3092,9 @@ msgstr "Tout étendre" msgid "Expand sidebar" msgstr "Étendre la barre latérale" +msgid "Expiration date" +msgstr "Date d’expiration" + msgid "Explore" msgstr "Explorer" @@ -3139,6 +3176,9 @@ msgstr "février" msgid "Fields on this page are now uneditable, you can configure" msgstr "Les champs de cette page sont désormais non modifiables, vous pouvez configurer" +msgid "File templates" +msgstr "Modèles de fichiers" + msgid "Files" msgstr "Fichiers" @@ -3149,11 +3189,20 @@ msgid "Fill in the fields below, turn on %{enable_label}, and p msgstr "Renseignez les champs ci‐dessous, activez %{enable_label} et appuyez sur %{save_changes}" msgid "Filter" +msgstr "Filtrer" + +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." msgstr "" msgid "Filter by commit message" msgstr "Filtrer par message de commit" +msgid "Filter..." +msgstr "Filtrer…" + msgid "Find by path" msgstr "Rechercher par chemin d’accès" @@ -3181,8 +3230,8 @@ msgstr "poussé par" msgid "Fixed date" msgstr "Date fixée" -msgid "Fixed finish date" -msgstr "Date de fin fixe" +msgid "Fixed due date" +msgstr "Date d’échéance fixée" msgid "Fixed start date" msgstr "Date de début fixe" @@ -3220,17 +3269,15 @@ msgstr "Pour les projets internes, tout utilisateur connecté peut afficher les msgid "For more information, go to the " msgstr "Pour plus d’informations, consultez " +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "Pour plus d’informations, consultez la documentation sur la %{deactivating_usage_ping_link_start}désactivation de la collecte des données d’utilisation%{deactivating_usage_ping_link_end}." + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "Pour les projets privés, tout membre (invité ou supérieur) peut afficher les pipelines et accéder aux détails des tâches (journaux de sortie et artefacts)" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "Pour les projets publics, tout le monde peut afficher des pipelines et accéder aux détails des tâches (journaux de sortie et artefacts)" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Divergence" -msgstr[1] "Divergences" - msgid "ForkedFromProjectPath|Forked from" msgstr "Divergence issue de" @@ -3288,6 +3335,9 @@ msgstr "Pipelines généraux" msgid "Generate a default set of labels" msgstr "Générer un jeu d’étiquettes par défaut" +msgid "Geo" +msgstr "Geo" + msgid "Geo Nodes" msgstr "Nœuds Geo" @@ -3465,6 +3515,9 @@ msgstr "%{name} est programmé pour la re‐synchronisation" msgid "Geo|All projects" msgstr "Tous les projets" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "Impossible de supprimer l’entrée de suivi d’un projet existant." + msgid "Geo|Error message" msgstr "Indication d’erreur" @@ -3507,6 +3560,9 @@ msgstr "En attente de synchronisation" msgid "Geo|Pending verification" msgstr "En attente de vérification" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "Le projet (identifiant : %{project_id}) n’existe plus sur le primaire. Vous pouvez supprimer cette entrée en toute sécurité, car cela ne supprimera aucune donnée sur le disque." + msgid "Geo|Projects in certain groups" msgstr "Projets de certains groupes" @@ -3519,6 +3575,9 @@ msgstr "Revérifier" msgid "Geo|Redownload" msgstr "Re‐télécharger" +msgid "Geo|Remove" +msgstr "Supprimer" + msgid "Geo|Repository sync capacity" msgstr "Capacité de synchronisation du dépôt" @@ -3546,6 +3605,12 @@ msgstr "Synchronisé" msgid "Geo|Synchronization failed - %{error}" msgstr "Synchro en échec — %{error}" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "L’entrée de suivi du projet (%{project_id}) a été supprimée avec succès." + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "L’entrée de suivi va être supprimée. Êtes‐vous sur(e) ?" + msgid "Geo|Unknown state" msgstr "État inconnu" @@ -3561,6 +3626,9 @@ msgstr "En attente de planification" msgid "Geo|You need a different license to use Geo replication" msgstr "Il faut une licence différente pour utiliser la réplication géographique" +msgid "Get a free instance review" +msgstr "Obtenez une revue d’instance gratuite" + msgid "Git" msgstr "Git" @@ -3639,12 +3707,6 @@ msgstr "Aller vers" msgid "Go to %{link_to_google_takeout}." msgstr "Consultez le site de %{link_to_google_takeout}." -msgid "Go to your fork" -msgstr "Aller à votre dépôt divergent" - -msgid "GoToYourFork|Fork" -msgstr "Dépôt divergent" - msgid "Google Code import" msgstr "Importation depuis Google Code" @@ -3705,14 +3767,14 @@ msgstr "Désolé, aucune épopée ne correspond à votre recherche" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "La feuille de route affiche la progression de vos épopées dans le temps" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." -msgstr "Pour afficher la feuille de route, ajoutez une date prévisionnelle de début ou de fin à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐mensuelle, seules les épopées du mois dernier, du mois courant et des cinq prochains mois sont affichées, du %{startDate} au %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "Afin d’afficher la feuille de route, ajoutez une date de début ou d’échéance à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐mensuelle, seules les épopées du mois dernier, du mois courant et des cinq prochains mois sont affichées, du %{startDate} au %{endDate}." -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." -msgstr "Pour afficher la feuille de route, ajoutez une date prévisionnelle de début ou de fin à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐trimestrielle, seules les épopées du trimestre dernier, du trimestre courant et des quatre prochains trimestres sont affichées, du %{startDate} au %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "Pour afficher la feuille de route, ajoutez une date de début ou d’échéance à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐trimestrielle, seules les épopées du trimestre dernier, du trimestre courant et des quatre prochains trimestres sont affichées, du %{startDate} au %{endDate}." -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." -msgstr "Pour afficher la feuille de route, ajoutez une date prévisionnelle de début ou de fin à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐hebdomadaire, seules les épopées de la semaine dernière, de la semaine courante et des quatre prochaines semaines sont affichées, du %{startDate} au %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "Pour afficher la feuille de route, ajoutez une date de début ou d’échéance à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐hebdomadaire, seules les épopées de la semaine dernière, de la semaine courante et des quatre prochaines semaines sont affichées, du %{startDate} au %{endDate}." msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "Afin d’élargir votre recherche, modifiez ou supprimez des filtres. Dans la vue multi‐mensuelle, seules les épopées du mois dernier, du mois courant et des cinq prochains mois sont affichées, du %{startDate} au %{endDate}." @@ -3727,13 +3789,13 @@ msgid "GroupRoadmap|Until %{dateWord}" msgstr "Jusqu’au %{dateWord}" msgid "GroupSettings|Badges" -msgstr "" +msgstr "Badges numériques" msgid "GroupSettings|Customize your group badges." -msgstr "" +msgstr "Personnalisez vos badges numériques de groupe." msgid "GroupSettings|Learn more about badges." -msgstr "" +msgstr "En savoir plus sur les badges numériques." msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" msgstr "Empêcher le partage d’un projet du groupe %{group} avec d’autres groupes" @@ -3798,6 +3860,9 @@ msgstr "Aucun groupe trouvé" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Vous pouvez gérer les autorisations des membres de votre groupe et accéder à chacun de ses projets." +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "Êtes-vous sûr·e de vouloir quitter le groupe « %{fullName} » ?" + msgid "GroupsTree|Create a project in this group." msgstr "Créez un projet dans ce groupe." @@ -3810,20 +3875,20 @@ msgstr "Modifier le groupe" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "Impossible de quitter le groupe. Veuillez vous assurer que vous n’êtes pas seul·e propriétaire." -msgid "GroupsTree|Filter by name..." -msgstr "Filtrer par nom…" - msgid "GroupsTree|Leave this group" msgstr "Quitter ce groupe" msgid "GroupsTree|Loading groups" msgstr "Chargement des groupes" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "Désolé, aucun groupe ne correspond à vos critères de recherche" +msgid "GroupsTree|No groups matched your search" +msgstr "Aucun groupe ne correspond à votre recherche" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "Aucun groupe ni projet ne correspond à votre recherche" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "Désolé, aucun groupe ni projet ne correspond à vos critères de recherche" +msgid "GroupsTree|Search by name" +msgstr "Rechercher par nom" msgid "Have your users email" msgstr "Récupérer les adresses de courriel des utilisateurs" @@ -3864,6 +3929,9 @@ msgstr "Voici la clef SSH publique qui doit être ajoutée sur le serveur distan msgid "Hide host keys manual input" msgstr "Masquer la saisie manuelle des clefs d’hôtes" +msgid "Hide payload" +msgstr "Masquer la charge utile" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "Masquer la valeur" @@ -4020,7 +4088,7 @@ msgid "ImportButtons|Connect repositories from" msgstr "Connecter des dépôts provenant de" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "Améliorez le tableau des tickets avec GitLab Entreprise Edition." +msgstr "Améliorez le tableau des tickets avec Gitlab Entreprise Edition." msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." msgstr "Améliorez la gestion des tickets grâce à la pondération disponible dans la version Entreprise Edition de GitLab." @@ -4028,6 +4096,9 @@ msgstr "Améliorez la gestion des tickets grâce à la pondération disponible d msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." msgstr "Améliorez vos recherches avec la recherche globale avancée de GitLab Enterprise Edition." +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 "Afin d’activer les statistiques au niveau de l’instance, veuillez demander à un administrateur d’activer la %{usage_ping_link_start}collecte des données d’utilisation%{usage_ping_link_end}." + msgid "In the next step, you'll be able to select the projects you want to import." msgstr "À la prochaine étape, vous pourrez sélectionner les projets que vous souhaitez importer." @@ -4064,10 +4135,10 @@ msgstr[0] "Instance" msgstr[1] "Instances" msgid "Instance Statistics" -msgstr "" +msgstr "Statistiques de l’instance" msgid "Instance Statistics visibility" -msgstr "" +msgstr "Visibilité des statistiques de l’instance" msgid "Instance does not support multiple Kubernetes clusters" msgstr "L’instance ne prend pas en charge plusieurs grappes de serveurs Kubernetes" @@ -4096,6 +4167,12 @@ msgstr "Modèle d’intervalle" msgid "Introducing Cycle Analytics" msgstr "Introduction à l’analyseur de cycle" +msgid "Invite" +msgstr "Inviter" + +msgid "Issue" +msgstr "Ticket" + msgid "Issue Boards" msgstr "Tableaux des tickets" @@ -4135,29 +4212,26 @@ msgstr "La tâche a été supprimée" msgid "Jobs" msgstr "Tâches" -msgid "Job|Are you sure you want to erase this job?" -msgstr "Êtes‐vous sûr de vouloir supprimer cette tâche ?" - msgid "Job|Browse" msgstr "Parcourir" msgid "Job|Complete Raw" -msgstr "" +msgstr "Brut complet" msgid "Job|Download" msgstr "Télécharger" msgid "Job|Erase job log" -msgstr "" +msgstr "Effacer le journal de la tâche" msgid "Job|Job artifacts" -msgstr "" +msgstr "Artefacts de la tâche" msgid "Job|Job has been erased" -msgstr "" +msgstr "La tâche a été effacée" msgid "Job|Job has been erased by" -msgstr "" +msgstr "La tâche a été supprimée par" msgid "Job|Keep" msgstr "Garder" @@ -4169,16 +4243,16 @@ msgid "Job|Scroll to top" msgstr "Faire défiler vers le haut" msgid "Job|Show complete raw" -msgstr "" +msgstr "Afficher la version brute" msgid "Job|The artifacts were removed" msgstr "Les artefacts ont été supprimés" -msgid "Job|The artifacts will be removed" -msgstr "Les artefacts seront supprimés" +msgid "Job|The artifacts will be removed in" +msgstr "Les artefacts seront supprimés dans" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." -msgstr "" +msgstr "Cette tâche est bloquée, car aucun exécuteur en ligne n’est attribué au projet." msgid "Jul" msgstr "juill." @@ -4268,7 +4342,7 @@ msgid "Labels|Promote Label" msgstr "Promouvoir l’étiquette" 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 "" +msgstr "La promotion de l’étiquette « %{labelTitle} » va la rendre disponible pour tous les projets du groupe %{groupName}. Les étiquettes de projet ayant le même intitulé seront fusionnées. Cette action est irréversible." msgid "Last %d day" msgid_plural "Last %d days" @@ -4281,6 +4355,9 @@ msgstr "Dernier pipeline" msgid "Last commit" msgstr "Dernier commit" +msgid "Last contact" +msgstr "Dernier contact" + msgid "Last edited %{date}" msgstr "Dernière modification le %{date}" @@ -4306,7 +4383,7 @@ msgid "Learn more" msgstr "En savoir plus" 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 "" +msgstr "En savoir plus sur %{issue_boards_url}, afin de suivre des tickets dans de multiples listes, à l’aide des étiquettes, des personnes assignées et des jalons. Si une fonctionnalité concernant les tableaux des tickets vous manque, veuillez créer un ticket sur %{gitlab_issues_url}." msgid "Learn more about Kubernetes" msgstr "En savoir plus sur Kubernetes" @@ -4336,22 +4413,22 @@ msgid "License" msgstr "Licence" msgid "LicenseManagement|Approve license" -msgstr "" +msgstr "Approuver la licence" msgid "LicenseManagement|Approve license?" -msgstr "" +msgstr "Approuver la licence ?" msgid "LicenseManagement|Approved" -msgstr "" +msgstr "Approuvée" msgid "LicenseManagement|Blacklist license" -msgstr "" +msgstr "Mettre la licence en liste noire" msgid "LicenseManagement|Blacklist license?" -msgstr "" +msgstr "Mettre la licence en liste noire ?" msgid "LicenseManagement|Blacklisted" -msgstr "" +msgstr "En liste noire" msgid "LicenseManagement|License" msgstr "Licence" @@ -4363,7 +4440,7 @@ msgid "LicenseManagement|License details" msgstr "Détails de la licence" msgid "LicenseManagement|Manage approved and blacklisted licenses for this project." -msgstr "" +msgstr "Gérez les licences approuvées et sur liste noire pour ce projet." msgid "LicenseManagement|Packages" msgstr "Paquets" @@ -4388,8 +4465,8 @@ msgstr "Licences" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Affichage limité à %d événement maximum" +msgstr[1] "Affichage limité à %d événements maximum" msgid "LinkedIn" msgstr "LinkedIn" @@ -4431,7 +4508,7 @@ msgid "Lock not found" msgstr "Verrou non trouvé" msgid "Lock this %{issuableDisplayName}? Only project members will be able to comment." -msgstr "" +msgstr "Verrouiller ce·t·te %{issuableDisplayName} ? Seuls les membres du projet seront en mesure de commenter." msgid "Lock to current projects" msgstr "Verrouiller aux projets en cours" @@ -4461,7 +4538,7 @@ msgid "Manage Git repositories with fine-grained access controls that keep your msgstr "Gérez les dépôts Git avec des contrôles d’accès très précis permettant de sécuriser votre code. Effectuez des revues de code et renforcez la collaboration avec les demandes de fusion Git. Chaque projet peut également avoir un système de tickets de suivi et un wiki." msgid "Manage Web IDE features" -msgstr "" +msgstr "Gérer les fonctionnalités de l’EDI Web" msgid "Manage access" msgstr "Gestion des accès" @@ -4518,16 +4595,19 @@ msgid "Markdown enabled" msgstr "Markdown activé" msgid "Maven Metadata" -msgstr "" +msgstr "Métadonnées Maven" msgid "Maven package" -msgstr "" +msgstr "Paquet Maven" + +msgid "Max access level" +msgstr "Niveau d’accès maximum" msgid "Maximum git storage failures" msgstr "Nombre maximum d’échecs du stockage Git" msgid "Maximum job timeout" -msgstr "" +msgstr "Durée maximale d’exécution de la tâche" msgid "May" msgstr "mai" @@ -4577,9 +4657,6 @@ msgstr "L’enregistrement du commentaire a échoué" msgid "MergeRequests|Toggle comments for this file" msgstr "Activer/désactiver les commentaires pour ce fichier" -msgid "MergeRequests|Updating discussions failed" -msgstr "Échec de la mise à jour des discussions" - msgid "MergeRequests|View file @ %{commitId}" msgstr "Afficher le fichier au commit %{commitId}" @@ -4587,7 +4664,7 @@ msgid "MergeRequests|View replaced file @ %{commitId}" msgstr "Afficher le fichier remplacé au commit %{commitId}" msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}" -msgstr "" +msgstr "%{paragraphStart}a changé la description %{descriptionChangedTimes} fois %{timeDifferenceMinutes}%{paragraphEnd}" msgid "Merged" msgstr "Fusionnée" @@ -4604,8 +4681,11 @@ msgstr "Métriques — Influx" msgid "Metrics - Prometheus" msgstr "Métriques — Prometheus" +msgid "Metrics and profiling" +msgstr "Statistiques et rapports" + msgid "Metrics|Business" -msgstr "" +msgstr "Affaires" msgid "Metrics|Check out the CI/CD documentation on deploying to an environment" msgstr "Consultez la documentation sur l’intégration et la livraison continues (CI/CD) concernant le déploiement dans un environnement" @@ -4707,19 +4787,19 @@ msgid "Milestone" msgstr "Jalon" msgid "Milestone lists not available with your current license" -msgstr "" +msgstr "La liste des jalons n’est pas disponible avec votre licence actuelle" msgid "Milestone lists show all issues from the selected milestone." -msgstr "" +msgstr "Les listes de jalon affichent tous les tickets à partir du jalon sélectionné." msgid "Milestones" msgstr "Jalons" 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 "" +msgstr "Vous êtes sur le point de supprimer définitivement le jalon %{milestoneTitle} et de le supprimer de %{issuesWithCount} et %{mergeRequestsWithCount}. La suppression est irréversible." msgid "Milestones| You’re about to permanently delete the milestone %{milestoneTitle}. This milestone is not currently used in any issues or merge requests." -msgstr "" +msgstr "Vous êtes sur le point de supprimer définitivement le jalon %{milestoneTitle}. Ce jalon n’est actuellement référencé par aucun ticket ni aucune demande de fusion." msgid "Milestones|

%{milestonePromotion}

%{finalWarning}" msgstr "

%{milestonePromotion}

%{finalWarning}" @@ -4749,22 +4829,22 @@ msgid "Milestones|This action cannot be reversed." msgstr "Cette action ne peut pas être annulée." msgid "Mirror a repository" -msgstr "" +msgstr "Créer un miroir de dépôt" msgid "Mirror direction" -msgstr "" +msgstr "Sens du miroir" msgid "Mirror repository" msgstr "" msgid "Mirror user" -msgstr "" +msgstr "Utilisateur accédant au miroir" msgid "Mirrored repositories" -msgstr "" +msgstr "Dépôts mis en miroir" msgid "Mirroring repositories" -msgstr "" +msgstr "Dépôts miroir" msgid "MissingSSHKeyWarningLink|add an SSH key" msgstr "ajouter une clef SSH" @@ -4784,9 +4864,6 @@ msgstr "Mois" msgid "More" msgstr "Plus" -msgid "More actions" -msgstr "Plus d’actions" - msgid "More info" msgstr "En savoir plus" @@ -4939,6 +5016,9 @@ msgstr "Aucune connexion n’a pu être établie avec un serveur Gitaly, veuille msgid "No container images stored for this project. Add one by following the instructions above." msgstr "Aucune image de conteneur stockée pour ce projet. Ajoutez‐en une en suivant les instructions ci‐dessous." +msgid "No contributions were found" +msgstr "Aucune contribution n’a été trouvée" + msgid "No due date" msgstr "Aucune date d’échéance" @@ -4960,6 +5040,9 @@ msgstr "Aucun ticket pour la période sélectionnée." msgid "No labels with such name or description" msgstr "Aucune étiquette avec un tel nom ou une telle description" +msgid "No license. All rights reserved" +msgstr "Aucune licence. Tous droits réservés" + msgid "No merge requests for the selected time period." msgstr "Aucune demande de fusion pour la période sélectionnée." @@ -4987,6 +5070,9 @@ msgstr "Rien n’a été poussé vers GIt durant la période sélectionnée." msgid "No repository" msgstr "Aucun dépôt" +msgid "No runners found" +msgstr "Aucun exécuteur trouvé" + msgid "No schedules" msgstr "Aucune planification" @@ -5023,6 +5109,9 @@ msgstr "Pas confidentiel·le" msgid "Not enough data" msgstr "Données insuffisantes" +msgid "Not now" +msgstr "Pas maintenant" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "Notez que la branche principale « master » est automatiquement protégée. %{link_to_protected_branches}" @@ -5057,7 +5146,7 @@ msgid "NotificationEvent|Merge merge request" msgstr "Fusionner la demande de fusion" msgid "NotificationEvent|New epic" -msgstr "" +msgstr "Nouvelle épopée" msgid "NotificationEvent|New issue" msgstr "Nouveau ticket" @@ -5146,13 +5235,13 @@ msgid "Online IDE integration settings." msgstr "Paramètres d’intégration de l’EDI en ligne." msgid "Only admins" -msgstr "" +msgstr "Seulement les administrateurs" msgid "Only comments from the following commit are shown below" msgstr "Seuls les commentaires du commit suivant sont affichés ci‐dessous" msgid "Only mirror protected branches" -msgstr "" +msgstr "Ne mettre en miroir que les branches protégées" msgid "Only project members can comment." msgstr "Seuls les membres du projet peuvent commenter." @@ -5218,7 +5307,7 @@ msgid "Overview" msgstr "Vue d’ensemble" msgid "Overwrite diverged branches" -msgstr "" +msgstr "Écraser les branches divergentes" msgid "Owner" msgstr "Propriétaire" @@ -5269,7 +5358,7 @@ msgid "Pending" msgstr "En attente" msgid "People without permission will never get a notification and won't be able to comment." -msgstr "" +msgstr "Les personnes sans autorisation ne recevront jamais de notifications et ne pourront pas commenter." msgid "Per job. If a job passes this threshold, it will be marked as failed" msgstr "Par tâche. Si une tâche dépasse ce seuil, elle sera marquée comme ayant échoué" @@ -5290,7 +5379,7 @@ msgid "Pipeline" msgstr "Pipeline" msgid "Pipeline %{pipelineLinkStart} #%{pipelineId} %{pipelineLinkEnd} from %{pipelineLinkRefStart} %{pipelineRef} %{pipelineLinkRefEnd}" -msgstr "" +msgstr "Pipeline %{pipelineLinkStart} nᵒ %{pipelineId} %{pipelineLinkEnd} de %{pipelineLinkRefStart} %{pipelineRef} %{pipelineLinkRefEnd}" msgid "Pipeline Health" msgstr "État de santé du pipeline" @@ -5380,7 +5469,7 @@ msgid "Pipelines|Clear Runner Caches" msgstr "Vider les caches des exécuteurs" 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." -msgstr "" +msgstr "L’intégration continue peut aider à détecter les bogues en exécutant vos tests automatiquement, tandis que la livraison continue peut vous aider à déployer du code dans votre environnement de production." msgid "Pipelines|Get started with Pipelines" msgstr "Premiers pas avec les pipelines" @@ -5404,7 +5493,7 @@ msgid "Pipelines|There are currently no pipelines." msgstr "Il n’y a actuellement aucun pipeline." msgid "Pipelines|There was an error fetching the pipelines. Try again in a few moments or contact your support team." -msgstr "" +msgstr "Une erreur est survenue lors de la récupération des pipelines. Réessayez dans quelques instants ou contactez votre équipe d’assistance." msgid "Pipelines|This project is not currently set up to run pipelines." msgstr "Ce projet n’est actuellement pas configuré pour exécuter des pipelines." @@ -5454,12 +5543,6 @@ msgstr "avec les étapes" msgid "Plain diff" msgstr "Diff brut" -msgid "Planned finish date" -msgstr "Date de fin prévisionnelle" - -msgid "Planned start date" -msgstr "Date de début prévisionnelle" - msgid "PlantUML" msgstr "PlantUML" @@ -5499,9 +5582,15 @@ msgstr "Préférences" msgid "Preferences|Navigation theme" msgstr "Thème de navigation" +msgid "Press Enter or click to search" +msgstr "Appuyez sur Entrée ou cliquez pour rechercher" + msgid "Preview" msgstr "Aperçu" +msgid "Preview payload" +msgstr "Aperçu de la charge utile" + msgid "Primary" msgstr "Principal" @@ -5538,6 +5627,9 @@ msgstr "Vous êtes sur le point de supprimer définitivement %{yourAccount}, ain msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "Vous êtes sur le point de changer le nom d’utilisateur %{currentUsernameBold} en %{newUsernameBold}. Le profil et les projets seront redirigés vers l’espace de noms %{newUsername}, mais cette redirection expire si un nouvel utilisateur ou un nouveau groupe est créé avec l’ancien nom %{currentUsername}. Veuillez mettre à jour vos dépôts Git dès que possible." +msgid "Profiles|%{author_name} made a private contribution" +msgstr "%{author_name} a fait une contribution privée" + msgid "Profiles|Account scheduled for removal." msgstr "Compte programmé pour suppression." @@ -5547,15 +5639,30 @@ msgstr "Ajouter une clef" msgid "Profiles|Add status emoji" msgstr "Ajouter un émoji de statut" +msgid "Profiles|Avatar cropper" +msgstr "Rogneur d’avatar" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "L’avatar sera supprimé. Êtes‐vous sûr·e ?" + msgid "Profiles|Change username" msgstr "Changer le nom d’utilisateur·rice" +msgid "Profiles|Choose file..." +msgstr "Choisir un fichier…" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "Afficher les contributions de projets privés sur votre profil public sans aucune information sur les projets, les dépôts ou les organisations." + msgid "Profiles|Clear status" msgstr "Effacer le statut" msgid "Profiles|Current path: %{path}" msgstr "Chemin d’accès actuel : %{path}" +msgid "Profiles|Current status" +msgstr "État actuel" + msgid "Profiles|Delete Account" msgstr "Supprimer un compte" @@ -5568,20 +5675,68 @@ msgstr "Supprimer votre compte ?" msgid "Profiles|Deleting an account has the following effects:" msgstr "Supprimer un compte aura les conséquences suivantes :" +msgid "Profiles|Do not show on profile" +msgstr "Ne pas montrer sur le profil" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "Ne pas afficher les informations personnelles liées à l’activité sur vos profils" + +msgid "Profiles|Edit Profile" +msgstr "Modifier le profil" + msgid "Profiles|Invalid password" msgstr "Mot de passe incorrect" msgid "Profiles|Invalid username" msgstr "Nom d’utilisateur incorrect" +msgid "Profiles|Main settings" +msgstr "Paramètres principaux" + +msgid "Profiles|No file chosen" +msgstr "Aucun fichier choisi" + msgid "Profiles|Path" msgstr "Chemin d’accès" +msgid "Profiles|Position and size your new avatar" +msgstr "Position et taille de votre nouvel avatar" + +msgid "Profiles|Private contributions" +msgstr "Contributions privées" + +msgid "Profiles|Public Avatar" +msgstr "Avatar public" + +msgid "Profiles|Remove avatar" +msgstr "Supprimer l’avatar" + +msgid "Profiles|Set new profile picture" +msgstr "Définir une nouvelle photo de profil" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "Certaines options ne sont pas disponibles pour les comptes LDAP" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "Parlez‐nous de vous en moins de 250 caractères." + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "La taille de fichier maximale autorisée est de 200 Kio." + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "Ceci ne ressemble pas à une clef SSH publique, êtes‐vous sûr(e) de vouloir l’ajouter ?" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "Cette adresse de courriel sera affichée sur votre profil public." + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." -msgstr "" +msgstr "Cet émoji et ce message apparaîtront sur votre profil et partout dans l’interface." + +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "Cette fonctionnalité est expérimentale et les traductions ne sont pas encore complètes." + +msgid "Profiles|This information will appear on your profile." +msgstr "Cette information apparaîtra sur votre profil." msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "Saisissez votre %{confirmationValue} pour confirmer :" @@ -5589,17 +5744,38 @@ msgstr "Saisissez votre %{confirmationValue} pour confirmer :" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "Commence généralement par « ssh-rsa […] »" +msgid "Profiles|Update profile settings" +msgstr "Mettre à jour les paramètres du profil" + msgid "Profiles|Update username" msgstr "Mettre à jour le nom d’utilisateur" +msgid "Profiles|Upload new avatar" +msgstr "Téléverser un nouvel avatar" + msgid "Profiles|Username change failed - %{message}" msgstr "Le changement de nom d’utilisateur a échoué : %{message}" msgid "Profiles|Username successfully changed" msgstr "Changement de nom d’utilisateur effectué" +msgid "Profiles|Website" +msgstr "Site Web" + msgid "Profiles|What's your status?" -msgstr "" +msgstr "Quel est votre statut ?" + +msgid "Profiles|You can change your avatar here" +msgstr "Vous pouvez changer votre avatar ici" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "Vous pouvez changer votre avatar ici ou supprimer l’avatar actuel et revenir à %{gravatar_link}" + +msgid "Profiles|You can upload your avatar here" +msgstr "Vous pouvez téléverser votre avatar ici" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "Vous pouvez téléverser votre avatar ici ou le changer en %{gravatar_link}" msgid "Profiles|You don't have access to delete this user." msgstr "Vous n’avez pas les autorisations suffisantes pour supprimer cet utilisateur ou cette utilisatrice." @@ -5610,8 +5786,17 @@ msgstr "Vous devez transférer la propriété ou supprimer ces groupes avant de msgid "Profiles|Your account is currently an owner in these groups:" msgstr "Votre compte est actuellement propriétaire des groupes suivants :" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "Votre adresse de courriel a été automatiquement définie en fonction de votre compte %{provider_label}." + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "Votre localisation a été automatiquement définie en fonction de votre compte %{provider_label}." + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "Votre nom a été automatiquement défini en fonction de votre compte %{provider_label}, afin que les personnes que vous connaissez puissent vous identifier." + msgid "Profiles|Your status" -msgstr "" +msgstr "Votre statut" msgid "Profiles|e.g. My MacBook key" msgstr "p. ex., Ma clef MacBook" @@ -5644,7 +5829,10 @@ msgid "Project '%{project_name}' was successfully updated." msgstr "Mise à jour du projet « %{project_name} » effectuée." msgid "Project Badges" -msgstr "Badges de projet" +msgstr "Badges numériques du projet" + +msgid "Project URL" +msgstr "URL du projet" msgid "Project access must be granted explicitly to each user." msgstr "L’accès au projet doit être explicitement accordé à chaque utilisateur." @@ -5673,6 +5861,9 @@ msgstr "L’exportation du projet a débuté. Un lien de téléchargement sera e msgid "Project name" msgstr "Nom du projet" +msgid "Project slug" +msgstr "Identifiant « slug » du projet" + msgid "ProjectActivityRSS|Subscribe" msgstr "S’abonner" @@ -5700,17 +5891,38 @@ msgstr "Jamais" msgid "ProjectLifecycle|Stage" msgstr "Étape" +msgid "ProjectOverview|Fork" +msgstr "Créer une divergence" + +msgid "ProjectOverview|Forks" +msgstr "Divergences" + +msgid "ProjectOverview|Go to your fork" +msgstr "Aller à votre divergence" + +msgid "ProjectOverview|Star" +msgstr "Mettre une étoile" + +msgid "ProjectOverview|Unstar" +msgstr "Supprimer l’étoile" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "Vous devez vous authentifier afin de pouvoir ajouter une étoile à un projet" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "Identifiant de projet : %{project_id}" msgid "ProjectSettings|Badges" -msgstr "" +msgstr "Badges numériques" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "Contactez un administrateur pour modifier ce paramètre." msgid "ProjectSettings|Customize your project badges." -msgstr "" +msgstr "Personnalisez les badges numériques de votre projet." msgid "ProjectSettings|Failed to protect the tag" msgstr "Impossible de protéger l’étiquette" @@ -5719,7 +5931,7 @@ msgid "ProjectSettings|Failed to update tag!" msgstr "Impossible de mettre à jour l’étiquette !" msgid "ProjectSettings|Learn more about badges." -msgstr "" +msgstr "En savoir plus sur les badges numériques." msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "Seuls les commits signés peuvent être poussés sur ce dépôt Git." @@ -5761,7 +5973,7 @@ msgid "ProjectsDropdown|Sorry, no projects matched your search" msgstr "Désolé, aucun projet ne correspond à votre recherche" msgid "ProjectsDropdown|This feature requires browser localStorage support" -msgstr "" +msgstr "Cette fonctionnalité nécessite un navigateur prenant en charge localStorage" msgid "PrometheusAlerts|Add alert" msgstr "Ajouter une alerte" @@ -5899,49 +6111,49 @@ msgid "Protected" msgstr "Protégé" msgid "Protected Environments" -msgstr "" +msgstr "Environnements protégés" msgid "ProtectedEnvironment|%{environment_name} will be writable for developers. Are you sure?" -msgstr "" +msgstr "%{environment_name} sera accessible en écriture aux développeurs. Êtes‐vous sûr de vouloir cela ?" msgid "ProtectedEnvironment|Allowed to deploy" -msgstr "" +msgstr "Autorisé à déployer" msgid "ProtectedEnvironment|Choose who is allowed to deploy" -msgstr "" +msgstr "ProtectedEnvironment|Choisissez qui est autorisé à déployer" msgid "ProtectedEnvironment|Environment" -msgstr "" +msgstr "Environnement" msgid "ProtectedEnvironment|Protect" -msgstr "" +msgstr "Protéger" msgid "ProtectedEnvironment|Protect Environments in order to restrict who can execute deployments." -msgstr "" +msgstr "Protéger les environnements afin de restreindre les déploiements aux personnes autorisées." msgid "ProtectedEnvironment|Protect an environment" -msgstr "" +msgstr "Protéger un environnement" msgid "ProtectedEnvironment|Protected Environment (%{protected_environments_count})" -msgstr "" +msgstr "Environnements protégés (%{protected_environments_count})" msgid "ProtectedEnvironment|Select an environment" -msgstr "" +msgstr "Sélectionner un environnement" msgid "ProtectedEnvironment|There are currently no protected environments, protect an environment with the form above." -msgstr "" +msgstr "Il n’y a actuellement aucun environnement protégé, protégez‐en un avec le formulaire ci‐dessus." msgid "ProtectedEnvironment|Unprotect" -msgstr "" +msgstr "Déprotéger" msgid "ProtectedEnvironment|Your environment can't be unprotected" -msgstr "" +msgstr "Votre environnement ne peut pas être déprotégé" msgid "ProtectedEnvironment|Your environment has been protected." -msgstr "" +msgstr "Votre environnement a été protégé." msgid "ProtectedEnvironment|Your environment has been unprotected" -msgstr "" +msgstr "Votre environnement a été déprotégé" msgid "Protip:" msgstr "Astuce :" @@ -6006,6 +6218,9 @@ msgstr "LisezMoi" msgid "Real-time features" msgstr "Fonctionnalités en temps réel" +msgid "Recent searches" +msgstr "Recherches récentes" + msgid "Reference:" msgstr "Référence :" @@ -6014,14 +6229,14 @@ msgstr "Actualiser" msgid "Refreshing in a second to show the updated status..." msgid_plural "Refreshing in %d seconds to show the updated status..." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "L’affichage sera réactualisé dans une seconde avec le statut mis à jour..." +msgstr[1] "L’affichage sera réactualisé dans %d secondes avec le statut mis à jour…" msgid "Regenerate key" -msgstr "" +msgstr "Régénérer la clef" msgid "Regex pattern" -msgstr "" +msgstr "Expression rationnelle" msgid "Register / Sign In" msgstr "Inscription / Connexion" @@ -6075,13 +6290,16 @@ msgid "Remove project" msgstr "Supprimer le projet" msgid "Rename" -msgstr "" +msgstr "Renommer" msgid "Rename file" -msgstr "" +msgstr "Renommer le fichier" msgid "Rename folder" -msgstr "" +msgstr "Renommer le dossier" + +msgid "Reopen epic" +msgstr "Rouvrir l’épopée" msgid "Repair authentication" msgstr "Réparer l’authentification" @@ -6092,32 +6310,53 @@ msgstr "Répondez directement à ce courriel ou %{view_it_on_gitlab}." msgid "Repo by URL" msgstr "Dépôt par URL" +msgid "Reporting" +msgstr "Rapports" + msgid "Reports|%{failedString} and %{resolvedString}" -msgstr "" +msgstr "%{failedString} et %{resolvedString}" msgid "Reports|Class" -msgstr "" +msgstr "Classe" + +msgid "Reports|Confidence" +msgstr "Confiance" + +msgid "Reports|Dismiss Vulnerability" +msgstr "Rejeter la vulnérabilité" msgid "Reports|Execution time" -msgstr "" +msgstr "Durée d’exécution" msgid "Reports|Failure" -msgstr "" +msgstr "Échec" + +msgid "Reports|More info" +msgstr "Plus d’informations" + +msgid "Reports|New Issue" +msgstr "Nouveau ticket" + +msgid "Reports|Severity" +msgstr "Sévérité" msgid "Reports|System output" -msgstr "" +msgstr "Sortie du système" msgid "Reports|Test summary" -msgstr "" +msgstr "Synthèse des tests" msgid "Reports|Test summary failed loading results" -msgstr "" +msgstr "Échec du chargement des résultats de la synthèse des tests" msgid "Reports|Test summary results are being parsed" -msgstr "" +msgstr "Les résultats de la synthèse des tests sont en cours d’analyse" + +msgid "Reports|Vulnerability" +msgstr "Vulnérabilité" msgid "Reports|no changed test results" -msgstr "" +msgstr "aucun résultat de test modifié" msgid "Repository" msgstr "Dépôt" @@ -6170,9 +6409,21 @@ msgstr "Résoudre les conflits sur la branche source" msgid "Resolve discussion" msgstr "Résoudre la discussion" +msgid "Response metrics (AWS ELB)" +msgstr "Métriques de réponse (AWS ELB)" + msgid "Response metrics (Custom)" msgstr "Métriques de réponse (personnalisées)" +msgid "Response metrics (HA Proxy)" +msgstr "Métriques de réponse (HA Proxy)" + +msgid "Response metrics (NGINX Ingress)" +msgstr "Métriques de réponse (nginx Ingress)" + +msgid "Response metrics (NGINX)" +msgstr "Métriques de réponse (nginx)" + msgid "Resume" msgstr "Reprendre" @@ -6186,7 +6437,7 @@ msgid "Retry verification" msgstr "Relancer la vérification" msgid "Reveal Variables" -msgstr "" +msgstr "Révéler les variables" msgid "Reveal value" msgid_plural "Reveal values" @@ -6221,11 +6472,26 @@ msgid "Run CI/CD pipelines for external repositories" msgstr "Exécuter des pipelines CI / CD pour les dépôts externes" msgid "Run untagged jobs" -msgstr "" +msgstr "Exécuter les tâches non étiquetées" + +msgid "Runner cannot be assigned to other projects" +msgstr "L’exécuteur ne peut être affecté à d’autres projets" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "L’exécuteur exécute des tâches de tous les projets non attribués" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "L’exécuteur exécute des tâches de tous les projets non attribués de son groupe" + +msgid "Runner runs jobs from assigned projects" +msgstr "L’exécuteur exécute des tâches de projets attribués" msgid "Runner token" msgstr "Jeton de l’exécuteur" +msgid "Runner will not receive any new jobs" +msgstr "L’exécuteur ne recevra aucune nouvelle tâche" + msgid "Runners" msgstr "Exécuteurs" @@ -6235,14 +6501,20 @@ msgstr "API des exécuteurs" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "Les exécuteurs peuvent être placés sur différents utilisateurs et serveurs, voire sur votre machine locale." +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "Les exécuteurs peuvent fonctionner sur différents serveurs, avec différents comptes d’utilisateur, y compris sur votre machine locale." + +msgid "Runners currently online: %{active_runners_count}" +msgstr "Exécuteurs actuellement en ligne : %{active_runners_count}" + msgid "Runners page" -msgstr "" +msgstr "Page des exécuteurs" msgid "Runners page." -msgstr "" +msgstr "Page des exécuteurs." msgid "Runners|You have used all your shared Runners pipeline minutes." -msgstr "" +msgstr "Vous avez utilisé tout le temps de pipeline partagé de vos exécuteurs." msgid "Running" msgstr "En cours d’exécution" @@ -6259,6 +6531,9 @@ msgstr "Authentification unique SAML" msgid "SAML Single Sign On Settings" msgstr "Paramètres d’authentification unique SAML" +msgid "SAST" +msgstr "SAST" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "Empreinte SHA-1 du certificat de signature de jetons SAML. Obtenez‐la auprès de votre fournisseur d’identité, parfois sous la dénomination « Thumbprint »." @@ -6337,8 +6612,11 @@ msgstr "Rechercher des demandes de fusion" msgid "Search milestones" msgstr "Rechercher des jalons" +msgid "Search or filter results..." +msgstr "Rechercher ou filtrer les résultats…" + msgid "Search or jump to…" -msgstr "" +msgstr "Rechercher ou aller à…" msgid "Search project" msgstr "Rechercher des projets" @@ -6347,28 +6625,28 @@ msgid "Search users" msgstr "Rechercher des utilisateurs et utilisatrices" msgid "SearchAutocomplete|All GitLab" -msgstr "" +msgstr "Dans tout GitLab" msgid "SearchAutocomplete|Issues I've created" -msgstr "" +msgstr "Les tickets que j’ai créés" msgid "SearchAutocomplete|Issues assigned to me" -msgstr "" +msgstr "Les tickets qui me sont assignés" msgid "SearchAutocomplete|Merge requests I've created" -msgstr "" +msgstr "Demandes de fusion que j’ai créées" msgid "SearchAutocomplete|Merge requests assigned to me" -msgstr "" +msgstr "Demandes de fusion qui me sont assignées" msgid "SearchAutocomplete|in all GitLab" -msgstr "" +msgstr "Dans tout GitLab" msgid "SearchAutocomplete|in this group" -msgstr "" +msgstr "Dans ce groupe" msgid "SearchAutocomplete|in this project" -msgstr "" +msgstr "Dans ce projet" msgid "Seconds before reseting failure information" msgstr "Nombre de secondes avant réinitialisation des informations d’échec" @@ -6380,21 +6658,13 @@ msgid "Secret:" msgstr "Secret :" msgid "Security" -msgstr "" +msgstr "Sécurité" msgid "Security Dashboard" msgstr "Tableau de bord de sécurité" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." -msgstr "" +msgstr "Le tableau de bord de sécurité affiche le dernier rapport de sécurité. Utilisez‐le pour rechercher et corriger les vulnérabilités." msgid "SecurityDashboard|Monitor vulnerabilities in your code" msgstr "Surveiller les vulnérabilités dans votre code" @@ -6408,6 +6678,9 @@ msgstr "Sélectionner" msgid "Select Archive Format" msgstr "Sélectionnez le format de l’archive" +msgid "Select a group to invite" +msgstr "Sélectionnez un groupe à inviter" + msgid "Select a namespace to fork the project" msgstr "Sélectionnez un espace de noms afin de créer une divergence du projet" @@ -6441,8 +6714,11 @@ msgstr "Sélectionner une branche source" msgid "Select target branch" msgstr "Sélectionner une branche cible" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "Sélectionnez la branche que vous souhaitez définir comme branche par défaut pour ce projet. Toutes les demandes de fusion et les commits seront automatiquement effectués sur cette branche, à moins que vous n’en spécifiez une autre." + msgid "Select the custom project template source group." -msgstr "" +msgstr "Sélectionnez le groupe source de modèles de projet personnalisés." msgid "Selecting a GitLab user will add a link to the GitLab user in the descriptions of issues and comments (e.g. \"By @johnsmith\"). It will also associate and/or assign these issues and comments with the selected user." msgstr "La sélection d’un utilisateur de GitLab va ajouter un lien vers cet utilisateur dans les descriptions des tickets et des commentaires (p. ex., « Par @johnsmith »). Les tickets et commentaires seront également associés ou assignés à cet utilisateur." @@ -6453,6 +6729,9 @@ msgstr "Synchronisation sélective" msgid "Send email" msgstr "Envoyer un courriel" +msgid "Send usage data" +msgstr "Envoyer des données d’utilisation" + msgid "Sep" msgstr "sept." @@ -6481,7 +6760,7 @@ msgid "Set default and restrict visibility levels. Configure import sources and msgstr "Définissez les valeurs par défaut et restreignez les niveaux de visibilité. Configurez les sources d’importation et le protocole d’accès pour Git." msgid "Set instance-wide template repository" -msgstr "" +msgstr "Définir un dépôt de modèles au niveau de l’instance" msgid "Set max session time for web terminal." msgstr "Définissez le temps maximal de la session pour le terminal Web." @@ -6498,11 +6777,17 @@ msgstr "Configuration CI/CD" msgid "Set up Koding" msgstr "Configurer Koding" +msgid "Set up a %{type} Runner manually" +msgstr "Configurer manuellement un exécuteur %{type}" + +msgid "Set up a specific Runner automatically" +msgstr "Configurer automatiquement un exécuteur spécifique" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "Configure les assertions, attributs et revendications (courriel, prénom et nom), ainsi que le NameID, conformément à %{docsLinkStart}la documentation %{icon}%{docsLinkEnd}" msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." -msgstr "" +msgstr "Configurez votre projet afin de pouvoir pousser et/ou récupérer automatiquement les modifications vers ou depuis un autre dépôt. Les branches, les étiquetets et les commits seront automatiquement synchronisés." msgid "SetPasswordToCloneLink|set a password" msgstr "définir un mot de passe" @@ -6510,12 +6795,6 @@ msgstr "définir un mot de passe" msgid "Settings" msgstr "Paramètres" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "Configurer automatiquement un exécuteur spécifique" - msgid "Share" msgstr "Partager" @@ -6525,6 +6804,9 @@ msgstr "Partager le %{sso_label} avec les membres afin qu’ils msgid "Shared Runners" msgstr "Exécuteurs partagés" +msgid "Shared projects" +msgstr "Projets partagés" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "En réinitialisant le compteur de minutes du pipeline pour cet espace de noms, les minutes actuellement utilisées seront mises à zéro." @@ -6600,7 +6882,7 @@ msgid "Sign-up restrictions" msgstr "Restrictions d’inscription" msgid "Size" -msgstr "" +msgstr "Taille" msgid "Size and domain settings for static websites" msgstr "Paramètres de taille et de domaine pour les sites Web statiques" @@ -6608,8 +6890,8 @@ msgstr "Paramètres de taille et de domaine pour les sites Web statiques" msgid "Slack application" msgstr "Application Slack" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." -msgstr "" +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." +msgstr "L’intégration de Slack permet d’interagir avec GitLab via des commandes slash dans une fenêtre de messagerie instantanée." msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" msgstr "Plus lent, mais permet de s’assurer que l’espace de travail du projet est vierge, comme il clone le dépôt à partir de zéro pour chaque tâche" @@ -6627,10 +6909,10 @@ msgid "Something went wrong on our end. Please try again!" msgstr "Quelque chose s’est mal passé de notre côté. Veuillez réessayer." msgid "Something went wrong trying to change the confidentiality of this issue" -msgstr "" +msgstr "Une erreur est survenue lors de la tentative de modification de la confidentialité de ce ticket" msgid "Something went wrong trying to change the locked state of this %{issuableDisplayName}" -msgstr "" +msgstr "Une erreur est survenue lors de la tentative de modification de l’état de verrouillage de ce·t·te %{issuableDisplayName}" msgid "Something went wrong when toggling the button" msgstr "Une erreur s’est produite lors du basculement du bouton" @@ -6639,7 +6921,7 @@ msgid "Something went wrong while closing the %{issuable}. Please try again late msgstr "Une erreur s’est produite lors de la fermeture du / de la %{issuable}. Veuillez réessayer plus tard" msgid "Something went wrong while fetching %{listType} list" -msgstr "" +msgstr "Une erreur est survenue lors de la récupération de la liste de %{listType}" msgid "Something went wrong while fetching group member contributions" msgstr "Une erreur s’est produite lors de la récupération des contributions des membres du groupe" @@ -6692,6 +6974,9 @@ msgstr "Taille de groupe" msgid "SortOptions|Largest repository" msgstr "Taille de dépôt" +msgid "SortOptions|Last Contact" +msgstr "Contact le plus récent" + msgid "SortOptions|Last created" msgstr "Créé récemment" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "Popularité décroissante" +msgid "SortOptions|Most stars" +msgstr "Avec le plus d’étoiles" + msgid "SortOptions|Name" msgstr "Nom" @@ -6752,6 +7040,9 @@ msgstr "Priorité" msgid "SortOptions|Recent sign in" msgstr "Date d’inscription décroissante" +msgid "SortOptions|Start date" +msgstr "Date de début" + msgid "SortOptions|Start later" msgstr "Commence plus tard" @@ -6783,7 +7074,7 @@ msgid "Specific Runners" msgstr "Exécuteurs spécifiques" msgid "Specify an e-mail address regex pattern to identify default internal users." -msgstr "" +msgstr "Spécifiez un motif d’expression rationnelle permettant l’identification des adresses de courriel des utilisateurs internes." msgid "Specify the following URL during the Runner setup:" msgstr "Spécifiez l’URL suivante lors de la configuration de l’exécuteur :" @@ -6827,6 +7118,9 @@ msgstr "Projets favoris" msgid "Start a %{new_merge_request} with these changes" msgstr "Créer une %{new_merge_request} avec ces changements" +msgid "Start date" +msgstr "Date de début" + msgid "Start the Runner!" msgstr "Démarrer l’exécuteur !" @@ -6860,6 +7154,9 @@ msgstr "Stockage :" msgid "Subgroups" msgstr "Sous‐groupes" +msgid "Subgroups and projects" +msgstr "Sous‐groupes et projets" + msgid "Submit as spam" msgstr "Soumettre comme indésirable" @@ -6893,6 +7190,9 @@ msgstr "En‐tête et pied de page du système :" msgid "System metrics (Custom)" msgstr "Métriques du système (personnalisées)" +msgid "System metrics (Kubernetes)" +msgstr "Métriques du système (Kubernetes)" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "Étiquette (%{tag_count})" @@ -6902,7 +7202,7 @@ msgid "Tags" msgstr "Étiquettes" msgid "Tags feed" -msgstr "" +msgstr "Flux d’étiquettes" msgid "Tags:" msgstr "Étiquettes :" @@ -6986,10 +7286,10 @@ msgid "Team" msgstr "Équipe" msgid "Template" -msgstr "" +msgstr "Modèle" msgid "Templates" -msgstr "" +msgstr "Modèles " msgid "Terms of Service Agreement and Privacy Policy" msgstr "Conditions générales d’utilisation et politique de confidentialité" @@ -7004,10 +7304,10 @@ msgid "Thanks! Don't show me this again" msgstr "Merci ! Ne plus afficher ce message" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "La recherche globale avancée de GitLab est un outil puissant qui vous fait gagner du temps. Au lieu de perdre du temps à recréer du code existant, vous pouvez maintenant faire des recherches dans le code d’autres équipes afin de vous aider sur votre projet." +msgstr "La recherche globale avancée de Gitlab est un outil puissant qui vous fait gagner du temps. Au lieu de perdre du temps à recréer du code existant, vous pouvez maintenant faire des recherches dans le code d’autres équipes afin de vous aider sur votre projet." msgid "The Git LFS objects will not be synced." -msgstr "" +msgstr "Les objets Git LFS ne sont pas synchronisés." msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project" msgstr "Le système de suivi est un endroit où l’on peut ouvrir un ticket pour signaler des choses à améliorer ou des dysfonctionnements à résoudre dans un projet" @@ -7019,7 +7319,7 @@ msgid "The X509 Certificate to use when mutual TLS is required to communicate wi msgstr "Le certificat X.509 à utiliser lorsque l’authentification TLS mutuelle est requise pour communiquer avec le service d’autorisation externe. Si ce champ est vide, le certificat du serveur est tout de même validé lors de l’accès via HTTPS." msgid "The character highlighter helps you keep the subject line to %{titleLength} characters and wrap the body at %{bodyLength} so they are readable in git." -msgstr "" +msgstr "Le surligneur de caractères vous aide à garder la longueur de l’objet à %{titleLength} caractères maximum et à faire des renvois à la ligne pour limiter les lignes du corps du message à %{bodyLength} caractères, afin de les rendre lisibles sous Git." msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request." msgstr "Le présentoir de code affiche le temps entre le premier commit et la création de la demande de fusion. Les données seront automatiquement ajoutées ici une fois que vous aurez créé votre première demande de fusion." @@ -7031,7 +7331,7 @@ msgid "The connection will time out after %{timeout}. For repositories that take msgstr "La connexion expirera après %{timeout}. Pour les dépôts qui nécessitent plus de temps, utilisez une combinaison de clone et push." msgid "The deployment of this job to %{environmentLink} did not succeed." -msgstr "" +msgstr "Le déploiement de cette tâche sur %{environmentLink} a échoué." msgid "The fork relationship has been removed." msgstr "La relation de divergence a été supprimée." @@ -7061,7 +7361,7 @@ msgid "The phase of the development lifecycle." msgstr "La phase du cycle de développement." msgid "The pipelines schedule runs pipelines in the future, repeatedly, for specific branches or tags. Those scheduled pipelines will inherit limited project access based on their associated user." -msgstr "" +msgstr "La planification des pipelines permet l’exécution de pipelines programmés, de manière récurrente, pour des branches ou des étiquettes spécifiques. Ces pipelines programmés hériteront d’un accès limité aux projets en fonction de l’utilisateur qui leur est associé." msgid "The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit." msgstr "L’étape de planification montre le temps entre l’étape précédente et l’envoi de votre premier commit. Ce temps sera automatiquement ajouté quand vous pousserez votre premier commit." @@ -7091,7 +7391,7 @@ msgid "The repository must be accessible over http://, https: msgstr "Le dépôt doit être accessible via http://, https:// ou git://." msgid "The repository must be accessible over http://, https://, ssh:// and git://." -msgstr "" +msgstr "Le dépôt doit être accessible via http://, https://, ssh:// ou git://." msgid "The review stage shows the time from creating the merge request to merging it. The data will automatically be added after you merge your first merge request." msgstr "L’étape d’évaluation montre le temps entre la création de la demande de fusion et la fusion effective de celle‐ci. Ces données seront automatiquement ajoutées après que vous aurez fusionné votre première demande de fusion." @@ -7106,7 +7406,7 @@ msgid "The staging stage shows the time between merging the MR and deploying cod msgstr "L’étape de pré-production indique le temps entre l’acceptation d’une demande fusion et le déploiement du code dans l’environnent de production. Les données seront automatiquement ajoutées lorsque vous aurez fait votre première mise en production." msgid "The tabs below will be removed in a future version" -msgstr "" +msgstr "Les onglets ci‐dessous seront supprimés dans une prochaine version" msgid "The testing stage shows the time GitLab CI takes to run every pipeline for the related merge request. The data will automatically be added after your first pipeline finishes running." msgstr "L’étape de test montre le temps que que met l’intégration continue de GitLab pour exécuter chaque pipeline pour une demande de fusion donnée. Les données seront automatiquement ajoutées après que votre premier pipeline s’achèvera." @@ -7124,7 +7424,10 @@ msgid "The time taken by each data entry gathered by that stage." msgstr "Le temps pris par chaque entrée récoltée durant cette étape." msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." -msgstr "" +msgstr "L’action de mise à jour expirera au bout de %{number_of_minutes} minutes. Pour les gros dépôts, utilisez une combinaison de clone et push." + +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "La collecte des données d’utilisation est désactivée et ne peut pas être configurée par le biais de ce formulaire." msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "La carte des utilisateurs (user map) est un document JSON qui met en correspondance les utilisateurs de Google Code qui ont participé à vos projets en précisant la manière dont leurs adresses de courriel et leurs noms d’utilisateur sont importés dans GitLab. Vous pouvez y apporter des modifications en changeant la valeur à droite du « : ». Assurez‐vous de conserver les guillemets droits doubles (\"), les autres signes de ponctuation, ainsi que l’adresse de courriel ou le nom d’utilisateur à gauche du deux‐points." @@ -7135,6 +7438,9 @@ msgstr "La carte des utilisateurs met en correspondance les utilisateurs de FogB msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "La valeur située au point médian d’une série de valeur observée. Par exemple., entre 3, 5 et 9, le médian est 5. Entre 3, 5, 7 et 8, le médian est (5+7)/2 = 6." +msgid "There are no archived projects yet" +msgstr "Il n’y a pas encore de projets archivés" + msgid "There are no issues to show" msgstr "Il n’y a aucun ticket à afficher" @@ -7144,14 +7450,23 @@ msgstr "Il n’y a pas encore d’étiquette" msgid "There are no merge requests to show" msgstr "Il n’y a aucune demande de fusion à afficher" +msgid "There are no projects shared with this group yet" +msgstr "Il n’y a pas encore de projets partagés avec ce groupe" + +msgid "There are no staged changes" +msgstr "Il n’y a aucune modification indexée" + +msgid "There are no unstaged changes" +msgstr "Il n’y a aucune modification non indexée" + msgid "There are problems accessing Git storage: " msgstr "Il y a des difficultés à accéder aux données Git : " msgid "There was an error adding a todo." -msgstr "" +msgstr "Une erreur est survenue lors de l’ajout d’une tâche à accomplir (todo)." msgid "There was an error deleting the todo." -msgstr "" +msgstr "Une erreur est survenue lors de la suppression de la tâche à accomplir (todo)." msgid "There was an error loading users activity calendar." msgstr "Une erreur s’est produite lors du chargement du calendrier d’activité des utilisateurs." @@ -7190,13 +7505,16 @@ msgid "This board's scope is reduced" msgstr "La portée de ce tableau est réduite" msgid "This branch has changed since you started editing. Would you like to create a new branch?" -msgstr "" +msgstr "Cette branche a changé depuis que vous y avez apporté des modifications. Souhaitez‐vous créer une nouvelle branche ?" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." -msgstr "" +msgid "This container registry has been scheduled for deletion." +msgstr "Ce registre de conteneur a été programmé pour suppression." -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." -msgstr "" +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "Cette date est postérieure à la date d’échéance, cette épopée n’apparaîtra donc pas dans la feuille de route." + +msgid "This date is before the start date, so this epic won't appear in the roadmap." +msgstr "Cette date est antérieure à la date de début, cette épopée n’apparaîtra donc pas dans la feuille de route." msgid "This diff is collapsed." msgstr "Ce diff est replié." @@ -7250,28 +7568,28 @@ msgid "This job has not started yet" msgstr "Cette tâche n’a pas encore commencée" msgid "This job is an out-of-date deployment to %{environmentLink}." -msgstr "" +msgstr "Cette tâche est un déploiement obsolète sur %{environmentLink}." msgid "This job is an out-of-date deployment to %{environmentLink}. View the most recent deployment %{deploymentLink}." -msgstr "" +msgstr "Cette tâche est un déploiement obsolète sur %{environmentLink}. Afficher le déploiement le plus récent %{deploymentLink}." msgid "This job is creating a deployment to %{environmentLink} and will overwrite the last %{deploymentLink}." -msgstr "" +msgstr "Cette tâche va effectuer un déploiement sur %{environmentLink} et écrasera le dernier %{deploymentLink}." msgid "This job is creating a deployment to %{environmentLink}." -msgstr "" +msgstr "Cette tâche va effectuer un déploiement sur %{environmentLink}." msgid "This job is in pending state and is waiting to be picked by a runner" msgstr "Cette tâche est en attente d’être choisie par un exécuteur" msgid "This job is stuck, because you don't have any active runners online with any of these tags assigned to them:" -msgstr "" +msgstr "Cette tâche est bloquée parce que vous n’avez aucun exécuteur actif en ligne auquel l’une des étiquettes suivantes est assignée :" msgid "This job is stuck, because you don't have any active runners that can run this job." -msgstr "" +msgstr "Cette tâche est bloquée parce que vous n’avez aucun exécuteur actif pouvant la prendre en charge." msgid "This job is the most recent deployment to %{link}." -msgstr "" +msgstr "Cette tâche est le déploiement le plus récent sur %{link}." msgid "This job requires a manual action" msgstr "Cette tâche nécessite une action manuelle" @@ -7283,7 +7601,7 @@ msgid "This merge request is locked." msgstr "Cette demande de fusion est verrouillée." msgid "This option is disabled as you don't have write permissions for the current branch" -msgstr "" +msgstr "Cette option est désactivée car vous n’avez pas les droits d’écriture sur la branche actuelle" msgid "This option is disabled while you still have unstaged changes" msgstr "Cette option est désactivée tant que vous avez des changements non indexés" @@ -7301,28 +7619,28 @@ msgid "This project does not belong to a group and can therefore not make use of msgstr "Ce projet n’appartient pas à un groupe et ne peut donc pas faire appel à un exécuteur de groupe." msgid "This project does not have billing enabled. To create a cluster, enable billing and try again." -msgstr "" +msgstr "Ce projet n’a pas de facturation activée. Afin de créer une grappe de serveurs, veuillez activer la facturation et réessayer." msgid "This repository" msgstr "Ce dépôt" msgid "This runner will only run on pipelines triggered on protected branches" -msgstr "" +msgstr "Cet exécuteur ne fonctionnera que sur les pipelines déclenchés sur des branches protégées" msgid "This source diff could not be displayed because it is too large." msgstr "Ce diff n’a pas pu être affiché car il est trop grand." msgid "This timeout will take precedence when lower than Project-defined timeout" -msgstr "" +msgstr "Ce délai d’attente aura préséance lorsqu’il est inférieur au délai d’attente défini pour le projet" msgid "This user has no identities" msgstr "Cet utilisateur ou cette utilisatrice n’a aucune identité" msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches." -msgstr "" +msgstr "Cet utilisateur sera l’auteur de tous les événements du flux d’activité résultant d’une mise à jour, comme la création de nouvelles branches ou les nouveaux commits poussés vers des branches existantes." msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches. Upon creation or when reassigning you can only assign yourself to be the mirror user." -msgstr "" +msgstr "Cet utilisateur sera l’auteur de tous les événements du flux d’activité résultant d’une mise à jour, comme la création de nouvelles branches ou les nouveaux commits poussés vers des branches existantes. Lors de la création ou lors de la réaffectation, vous ne pouvez assigner que vous‐même comme utilisateur du miroir." msgid "This will delete the custom metric, Are you sure?" msgstr "Ceci va supprimer la métrique personnalisée. Êtes‐vous sûr(e) ?" @@ -7527,7 +7845,10 @@ msgid "To connect an SVN repository, check out %{svn_link}." msgstr "Pour connecter un dépôt SVN, veuillez consulter %{svn_link}." msgid "To define internal users, first enable new users set to external" -msgstr "" +msgstr "Afin de définir les utilisateurs internes, veuillez d’abord activer les nouveaux utilisateurs définis comme externes" + +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "Afin d’activer et d’afficher les cohortes d’utilisateurs, consultez les %{application_settings_link_start}paramètres de l’application%{application_settings_link_end}." msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "Pour commencer, entrez votre URL FogBugz et vos informations de connexion ci‐dessous. Dans les étapes suivantes, vous pourrez mettre en correspondance les comptes des utilisateurs et sélectionner les projets à importer." @@ -7535,6 +7856,12 @@ msgstr "Pour commencer, entrez votre URL FogBugz et vos informations de connexio msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "Pour commencer, entrez l’URL de votre hôte Gitea et un %{link_to_personal_token}." +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "Afin d’aider à améliorer GitLab et son expérience utilisateur, GitLab va recueillir périodiquement des informations sur son utilisation." + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "Afin d’aider à améliorer GitLab, nous aimerions recueillir périodiquement des informations sur son utilisation. Vous pourrez modifier ceci à tout moment dans les %{settings_link_start}paramètres%{link_end}. %{info_link_start}Plus d’informations…%{link_end}" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "Pour importer les dépôts GitHub, vous pouvez utiliser un %{personal_access_token_link}. Lorsque vous créez votre jeton d’accès, vous devrez sélectionner le champ repo, afin que nous puissions afficher une liste de vos dépôts publics et privés qui sont disponibles pour être importés." @@ -7562,8 +7889,8 @@ msgstr "À cette instance de GitLab" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "Pour valider vos configurations GitLab CI, allez dans « CI / CD » → « Pipelines » dans votre projet, et cliquez sur le bouton « CI Lint »." -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." -msgstr "Pour afficher la feuille de route, ajoutez une date de début ou de fin planifiée à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Seules les épopées des trois derniers mois et des trois prochains mois sont affichées." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "Afin d’afficher la feuille de route, ajoutez une date de début ou d’échéance à l’une de vos épopées dans ce groupe ou ses sous‐groupes. Dans la vue multi‐mensuelle, seules les épopées du mois dernier, du mois courant et des cinq prochains mois sont affichées." msgid "To widen your search, change or remove filters." msgstr "Afin d’élargir votre recherche, modifiez ou supprimez des filtres." @@ -7577,6 +7904,9 @@ msgstr "À faire" msgid "Toggle Sidebar" msgstr "Afficher/masquer la barre latérale" +msgid "Toggle commit description" +msgstr "Afficher ou masquer la description du commit" + msgid "Toggle discussion" msgstr "Basculer la discussion" @@ -7593,7 +7923,7 @@ msgid "ToggleButton|Toggle Status: ON" msgstr "État du commutateur : Actif" msgid "Token" -msgstr "" +msgstr "Jeton" msgid "Too many changes to show." msgstr "Trop de changements à afficher." @@ -7623,13 +7953,13 @@ msgid "Trending" msgstr "Tendance" msgid "Trigger" -msgstr "" +msgstr "Déclencheur" msgid "Trigger pipelines for mirror updates" -msgstr "" +msgstr "Déclencher des pipelines pour les mises à jour de miroirs" msgid "Trigger pipelines when branches or tags are updated from the upstream repository. Depending on the activity of the upstream repository, this may greatly increase the load on your CI runners. Only enable this if you know they can handle the load." -msgstr "" +msgstr "Déclenche les pipelines lorsque les branches ou les étiquettes sont mises à jour sur le dépôt en amont. Selon l’activité du dépôt en amont, cela peut considérablement augmenter la charge de vos exécuteurs d’intégration continue. N’activez ceci que si vous savez qu’ils peuvent tenir la charge." msgid "Trigger this manual action" msgstr "Déclencher cette action manuelle" @@ -7647,7 +7977,7 @@ msgid "Twitter" msgstr "Twitter" msgid "Type" -msgstr "" +msgstr "Type" msgid "Unable to load the diff. %{button_try_again}" msgstr "Impossible de charger le diff. %{button_try_again}" @@ -7655,6 +7985,12 @@ msgstr "Impossible de charger le diff. %{button_try_again}" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "Impossible de vous connecter au groupe via SAML en raison de « %{reason} »" +msgid "Unable to update this epic at this time." +msgstr "Impossible de mettre à jour cette épopée pour le moment." + +msgid "Undo" +msgstr "Annuler" + msgid "Unknown" msgstr "Inconnu" @@ -7662,7 +7998,7 @@ msgid "Unlock" msgstr "Déverrouiller" msgid "Unlock this %{issuableDisplayName}? Everyone will be able to comment." -msgstr "" +msgstr "Déverrouiller %{issuableDisplayName} ? Tout le monde sera en mesure de commenter." msgid "Unlocked" msgstr "Déverrouillé" @@ -7670,6 +8006,9 @@ msgstr "Déverrouillé" msgid "Unresolve discussion" msgstr "Marquer la discussion comme non résolue" +msgid "Unstage" +msgstr "Désindexer" + msgid "Unstage all changes" msgstr "Désindexer les changements en étape" @@ -7707,13 +8046,13 @@ msgid "Update" msgstr "Mettre à jour" msgid "Update now" -msgstr "" +msgstr "Mettre à jour maintenant" msgid "Update your group name, description, avatar, and other general settings." msgstr "Modifiez le nom du groupe, sa description, son logo et d’autres paramètres généraux." msgid "Updating" -msgstr "" +msgstr "Mise à jour en cours" msgid "Upgrade your plan to activate Advanced Global Search." msgstr "Mettez à niveau votre forfait pour activer la recherche globale avancée." @@ -7739,15 +8078,15 @@ msgstr "Téléverser un nouveau fichier" msgid "Upload file" msgstr "Téléverser un fichier" -msgid "Upload new avatar" -msgstr "Importer un nouvel avatar" - msgid "UploadLink|click to upload" msgstr "Cliquez pour envoyer" msgid "Upvotes" msgstr "Votes positifs" +msgid "Usage ping is not enabled" +msgstr "L’envoi des données d’utilisation est désactivé" + msgid "Usage statistics" msgstr "Statistiques d’utilisation" @@ -7764,7 +8103,7 @@ msgid "Use one line per URI" msgstr "Utilisez une ligne par URI" msgid "Use template" -msgstr "" +msgstr "Utiliser un modèle" msgid "Use the following registration token during setup:" msgstr "Utiliser le jeton d’inscription suivant pendant l’installation :" @@ -7775,6 +8114,9 @@ msgstr "Utiliser vos paramètres de notification globaux" msgid "Used by members to sign in to your group in GitLab" msgstr "Utilisé par les membres pour se connecter à votre groupe dans GitLab" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "Les cohortes d’utilisateurs ne sont affichées que lorsque la %{usage_ping_link_start}collecte des données d’utilisation%{usage_ping_link_end} est activée." + msgid "User Settings" msgstr "Paramètres de l’utilisateur" @@ -7787,9 +8129,6 @@ msgstr "Correspondance entre utilisateurs" msgid "Users" msgstr "Utilisateurs et utilisatrices" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "Variables" @@ -7812,7 +8151,7 @@ msgid "Verified" msgstr "Vérifié" msgid "Version" -msgstr "" +msgstr "Version" msgid "View epics list" msgstr "Afficher la liste des épopées" @@ -8105,11 +8444,14 @@ msgstr "Vous ne pouvez ajouter de fichier que dans une branche" msgid "You can only edit files when you are on a branch" msgstr "Vous ne pouvez modifier des fichiers que dans une branche" +msgid "You can reset runners registration token by pressing a button below." +msgstr "Vous pouvez réinitialiser le jeton d’inscription des exécuteurs en appuyant sur un bouton ci‐dessous." + 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}" msgstr "Vous pouvez résoudre le conflit de fusion Git soit en mode interactif, en cliquant sur les boutons « %{use_ours} » ou « %{use_theirs} », soit en modifiant directement les fichiers. Valider ces modifications dans la branche « %{branch_name} »" msgid "You can set up jobs to only use Runners with specific tags. Separate tags with commas." -msgstr "" +msgstr "Vous pouvez configurer des tâches pour n’utiliser des exécuteurs qu’avec des étiquettes spécifiques. Séparez les étiquettes par des virgules." msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." msgstr "Vous ne pouvez pas écrire sur une instance GitLab Geo secondaire en lecture seule. Veuillez utiliser le %{link_to_primary_node} à la place." @@ -8138,9 +8480,6 @@ msgstr "Vous devez accepter les conditions générales d’utilisation et la pol msgid "You must have maintainer access to force delete a lock" msgstr "Seul un responsable peut forcer la suppression d’un verrou" -msgid "You must sign in to star a project" -msgstr "Vous devez vous connecter pour mettre un projet en favori" - msgid "You need a different license to enable FileLocks feature" msgstr "Vous avez besoin d’une licence différente pour activer la fonctionnalité de verrouillage de fichiers FileLocks" @@ -8150,6 +8489,12 @@ msgstr "Pour aller plus loin, vous devez disposer de git-lfs en version %{min_g msgid "You need permission." msgstr "Vous avez besoin d’une autorisation." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "Vous allez perdre toutes les modifications apportées à ce fichier. Cette action ne peut pas être annulée." + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "Vous allez perdre toutes les modifications non indexées que vous avez effectuées sur ce projet. Cette action ne peut pas être annulée." + msgid "You will not get any notifications via email" msgstr "Vous ne recevrez aucune notification par courriel" @@ -8229,7 +8574,7 @@ msgid "Your projects" msgstr "Vos projets" msgid "a deleted user" -msgstr "" +msgstr "un utilisateur supprimé" msgid "ago" msgstr "auparavant " @@ -8237,16 +8582,6 @@ msgstr "auparavant " msgid "among other things" msgstr "entre autres choses" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "et une vulnérabilité corrigée" -msgstr[1] "et %d vulnérabilités corrigées" - msgid "assign yourself" msgstr "assignez vous" @@ -8274,20 +8609,55 @@ msgstr "%{namespace} est affecté par « %{vulnerability} »." msgid "ciReport|%{remainingPackagesCount} more" msgstr "%{remainingPackagesCount} restant(s)" -msgid "ciReport|%{reportName} is loading" -msgstr "%{reportName} est en cours de chargement" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" -msgid "ciReport|%{reportName} resulted in error while loading results" -msgstr "%{reportName} a provoqué une erreur lors du chargement des résultats" +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" -msgstr "%{type} n’a détecté aucune nouvelle vulnérabilité de sécurité" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" -msgid "ciReport|%{type} detected no security vulnerabilities" -msgstr "%{type} n’a détecté aucune vulnérabilité de sécurité" +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" -msgstr "%{type} n’a détecté aucune vulnérabilité" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" + +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} is loading" +msgstr "" + +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" + +msgid "ciReport|(errors when loading results)" +msgstr "" + +msgid "ciReport|(is loading)" +msgstr "" + +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" msgid "ciReport|Class" msgstr "Classe" @@ -8298,39 +8668,30 @@ msgstr "Qualité du code" msgid "ciReport|Confidence" msgstr "Niveau de confiance" +msgid "ciReport|Container scanning" +msgstr "" + msgid "ciReport|Container scanning detected" msgstr "Analyse de conteneur détectée" msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "L’analyse des conteneurs permet la détection de vulnérabilités connues dans vos images Docker." -msgid "ciReport|Container scanning is loading" -msgstr "Chargement de l’analyse de conteneur en cours" - -msgid "ciReport|Container scanning resulted in error while loading results" -msgstr "L’analyse de conteneur a provoqué une erreur lors du chargement des résultats" +msgid "ciReport|DAST" +msgstr "" msgid "ciReport|DAST detected" msgstr "DAST détecté" -msgid "ciReport|DAST is loading" -msgstr "DAST en cours de chargement" - -msgid "ciReport|DAST resulted in error while loading results" -msgstr "DAST a provoqué une erreur lors du chargement des résultats" - msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgstr "L’analyse des dépendances a détecté une vulnérabilité connue dans les dépendances de votre code source." + +msgid "ciReport|Dependency scanning" msgstr "" msgid "ciReport|Dependency scanning detected" msgstr "Analyse de dépendances détectée" -msgid "ciReport|Dependency scanning is loading" -msgstr "Chargement de l’analyse des dépendances en cours" - -msgid "ciReport|Dependency scanning resulted in error while loading results" -msgstr "L’analyse des dépendance a provoqué une erreur lors du chargement des résultats" - msgid "ciReport|Description" msgstr "Description" @@ -8361,21 +8722,18 @@ msgstr "Instances" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "En savoir plus sur l’interaction avec les rapports de sécurité (alpha)." -msgid "ciReport|Learn more about whitelisting" -msgstr "En savoir plus sur la mise en liste blanche" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Le gestionnaire de licences a détecté %d licence pour la seule branche source" +msgstr[1] "Le gestionnaire de licences a détecté %d licences pour la seule branche source" msgid "ciReport|License management detected %d new license" msgid_plural "ciReport|License management detected %d new licenses" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Le gestionnaire de licences a détecté %d nouvelle licence" +msgstr[1] "Le gestionnaire de licences a détecté %d nouvelles licences" msgid "ciReport|License management detected no licenses for the source branch only" -msgstr "" +msgstr "Le gestionnaire de licences n’a détecté aucune licence pour la seule branche source" msgid "ciReport|License management detected no new licenses" msgstr "Le gestionnaire de licences n’a détecté aucune nouvelle licence" @@ -8404,24 +8762,18 @@ msgstr "Indicateurs de performance" msgid "ciReport|Revert dismissal" msgstr "Annuler le rejet" +msgid "ciReport|SAST" +msgstr "" + msgid "ciReport|SAST detected" msgstr "SAST détecté" -msgid "ciReport|SAST is loading" -msgstr "Chargement de SAST en cours" - -msgid "ciReport|SAST resulted in error while loading results" -msgstr "SAST a provoqué une erreur lors du chargement des résultats" - msgid "ciReport|Security scanning" msgstr "Analyse de sécurité" msgid "ciReport|Security scanning failed loading any results" msgstr "L’analyse de sécurité n’a pas réussi à charger de résultats" -msgid "ciReport|Security scanning is loading" -msgstr "Chargement de l’analyse de sécurité en cours" - msgid "ciReport|Severity" msgstr "Sévérité" @@ -8452,16 +8804,13 @@ msgstr "Une erreur s’est produite lors du chargement du rapport d’analyse de msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "Une erreur s’est produite lors de l’annulation du rejet. Veuillez réessayer." -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "Les vulnérabilités non approuvées (en rouge) peuvent être marquées comme approuvées." - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "Mise à niveau de %{name} de %{version} à %{fixed}." msgid "ciReport|Used by %{packagesString}" msgid_plural "ciReport|Used by %{packagesString}, and %{lastPackage}" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Utilisé par %{packagesString}" +msgstr[1] "Utilisé par %{packagesString} et %{lastPackage}" msgid "ciReport|View full report" msgstr "Voir le rapport complet" @@ -8476,10 +8825,10 @@ msgid "command line instructions" msgstr "instructions en ligne de commande" msgid "confidentiality|You are going to turn off the confidentiality. This means everyone will be able to see and leave a comment on this issue." -msgstr "" +msgstr "Vous êtes sur le point de désactiver la confidentialité. Cela signifie que tout le monde sera en mesure de voir et de laisser un commentaire sur ce ticket." msgid "confidentiality|You are going to turn on the confidentiality. This means that only team members with at least Reporter access are able to see and leave comments on the issue." -msgstr "" +msgstr "Vous êtes sur le point de d’activer la confidentialité. Cela signifie que seuls les membres de l’équipe avec au moins un accès en tant que rapporteur seront en mesure de voir et de laisser des commentaires sur le ticket." msgid "connecting" msgstr "connexion en cours" @@ -8498,19 +8847,6 @@ msgstr[1] "jours" msgid "deploy token" msgstr "jeton de déploiement" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "a détecté %d vulnérabilité corrigée" -msgstr[1] "a détecté %d vulnérabilités corrigées" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "a détecté %d nouvelle vulnérabilité" -msgstr[1] "a détecté %d nouvelles vulnérabilités" - -msgid "detected no vulnerabilities" -msgstr "n’a détecté aucune vulnérabilité" - msgid "disabled" msgstr "désactivé" @@ -8530,7 +8866,7 @@ msgid "here" msgstr "ici" msgid "https://your-bitbucket-server" -msgstr "" +msgstr "https://votre-serveur-bitbucket" msgid "import flow" msgstr "flux d’importation" @@ -8540,8 +8876,8 @@ msgstr "importation en cours" msgid "instance completed" msgid_plural "instances completed" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "instance terminée" +msgstr[1] "instances terminées" msgid "is invalid because there is downstream lock" msgstr "n’est pas valide, car il y a un verrou en aval" @@ -8553,13 +8889,13 @@ msgid "is not a valid X509 certificate." msgstr "n’est pas un certificat X.509 valide." msgid "issue boards" -msgstr "" +msgstr "tableaux des tickets" msgid "latest version" msgstr "dernière version" msgid "license management" -msgstr "" +msgstr "gestion des licences" msgid "locked by %{path_lock_user_name} %{created_at}" msgstr "verrouillé par %{path_lock_user_name} %{created_at}" @@ -8591,7 +8927,7 @@ msgid "mrWidget|An error occured while removing your approval." msgstr "Une erreur est survenue lors de la suppression de votre approbation." msgid "mrWidget|An error occured while retrieving approval data for this merge request." -msgstr "" +msgstr "Une erreur est survenue lors de la récupération des données d’approbation pour cette demande de fusion." msgid "mrWidget|An error occurred while submitting your approval." msgstr "Une erreur est survenue lors de l’envoi de votre approbation." @@ -8642,7 +8978,7 @@ msgid "mrWidget|Failed to load deployment statistics" msgstr "Impossible de charger les statistiques de déploiement" msgid "mrWidget|Fast-forward merge is not possible. To merge this request, first rebase locally." -msgstr "" +msgstr "La fusion rapide fast‐forward n’est pas possible. Pour réaliser cette fusion, vous devez d’abord effectuer un « git rebase » en local." msgid "mrWidget|If the %{branch} branch exists in your local repository, you can merge this merge request manually using the" msgstr "Si la branche %{branch} existe dans votre dépôt local, vous pouvez fusionner cette demande de fusion manuellement à l’aide de" @@ -8684,13 +9020,13 @@ msgid "mrWidget|Open in Web IDE" msgstr "Ouvrir dans l’EDI Web" msgid "mrWidget|Pipeline blocked. The pipeline for this merge request requires a manual action to proceed" -msgstr "" +msgstr "Pipeline bloqué. Le pipeline de cette demande de fusion nécessite une action manuelle pour continuer" msgid "mrWidget|Plain diff" msgstr "Diff simple" msgid "mrWidget|Ready to be merged automatically. Ask someone with write access to this repository to merge this request" -msgstr "" +msgstr "Prête à être fusionnée automatiquement. Demandez à quelqu’un ayant un accès en écriture à ce dépôt d’effectuer cette fusionner" msgid "mrWidget|Refresh" msgstr "Actualiser" @@ -8715,19 +9051,19 @@ msgstr "Demande de fusion de" msgid "mrWidget|Requires 1 more approval" msgid_plural "mrWidget|Requires %d more approvals" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Nécessite encore une approbation" +msgstr[1] "Nécessite encore %d approbations" msgid "mrWidget|Requires 1 more approval by" msgid_plural "mrWidget|Requires %d more approvals by" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Nécessite encore l’approbation de" +msgstr[1] "Nécessite encore %d approbations de" msgid "mrWidget|Resolve conflicts" msgstr "Résoudre les conflits" msgid "mrWidget|Resolve these conflicts or ask someone with write access to this repository to merge it locally" -msgstr "" +msgstr "Résolvez ces conflits ou demandez à une personne ayant un accès en écriture à ce dépôt d’effectuer la fusion localement" msgid "mrWidget|Revert" msgstr "Défaire" @@ -8748,16 +9084,16 @@ msgid "mrWidget|The changes will be merged into" msgstr "Les modifications seront fusionnées dans" msgid "mrWidget|The pipeline for this merge request failed. Please retry the job or push a new commit to fix the failure" -msgstr "" +msgstr "Le pipeline de cette demande de fusion a échoué. Veuillez réexécutez la tâche ou pousser un nouveau commit pour résoudre le problème" msgid "mrWidget|The source branch HEAD has recently changed. Please reload the page and review the changes before merging" -msgstr "" +msgstr "La branche source HEAD a changé récemment. Veuillez recharger la page et vérifier les modifications avant d’effectuer la fusion" msgid "mrWidget|The source branch has been removed" msgstr "La branche source a été supprimée" msgid "mrWidget|The source branch is %{commitsBehindLinkStart}%{commitsBehind}%{commitsBehindLinkEnd} the target branch" -msgstr "" +msgstr "La branche source est à %{commitsBehindLinkStart}%{commitsBehind}%{commitsBehindLinkEnd} de la branche cible" msgid "mrWidget|The source branch is being removed" msgstr "La branche source est en cours de suppression" @@ -8783,6 +9119,9 @@ msgstr "Cette demande de fusion est en cours de fusion" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "Ce projet est archivé, l’accès en écriture a été désactivé" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "Vous n’êtes pas autorisé à modifier directement ce projet. Veuillez créer un projet divergent afin d’effectuer des changements." + msgid "mrWidget|You can merge this merge request manually using the" msgstr "Vous pouvez fusionner cette demande de fusion manuellement à l’aide de la" @@ -8801,6 +9140,9 @@ msgstr "dans" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "pour être fusionnée automatiquement lorsque le pipeline réussit" +msgid "n/a" +msgstr "non disponible" + msgid "new merge request" msgstr "nouvelle demande de fusion" @@ -8856,6 +9198,9 @@ msgstr "ce document" msgid "to help your contributors communicate effectively!" msgstr "pour aider vos contributeurs à communiquer efficacement !" +msgid "toggle collapse" +msgstr "déplier ou replier" + msgid "username" msgstr "nom d’utilisateur" diff --git a/locale/gl_ES/gitlab.po b/locale/gl_ES/gitlab.po index 5574ed0613f..2b6dcc6595e 100644 --- a/locale/gl_ES/gitlab.po +++ b/locale/gl_ES/gitlab.po @@ -13,13 +13,13 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: gl\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:29\n" msgid " Status" msgstr "" msgid " and" -msgstr "" +msgstr " e" msgid " degraded on %d point" msgid_plural " degraded on %d points" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/he_IL/gitlab.po b/locale/he_IL/gitlab.po index 4eeac683e67..f34f862b9b1 100644 --- a/locale/he_IL/gitlab.po +++ b/locale/he_IL/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:26\n" msgid " Status" msgstr "" @@ -158,6 +158,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -205,35 +208,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -382,6 +363,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -424,6 +411,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -463,15 +453,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -490,6 +480,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -787,6 +780,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -946,6 +942,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -982,9 +981,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1469,6 +1465,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1631,6 +1633,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1679,10 +1684,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1709,6 +1714,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1775,9 +1786,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1811,15 +1819,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1844,12 +1843,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1907,6 +1900,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1937,9 +1933,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1979,12 +1972,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -2003,6 +1999,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -2021,9 +2020,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -2033,6 +2029,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2086,6 +2085,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2158,24 +2160,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2260,6 +2256,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2293,6 +2292,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2398,9 +2406,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2518,6 +2523,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2723,9 +2731,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2885,6 +2905,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -3020,10 +3046,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3134,6 +3160,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3215,6 +3244,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3227,9 +3259,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3257,7 +3298,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3296,19 +3337,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3366,6 +3403,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3543,6 +3583,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3585,6 +3628,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3597,6 +3643,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3624,6 +3673,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3639,6 +3694,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3717,12 +3775,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3783,13 +3835,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3876,6 +3928,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3888,19 +3943,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3942,6 +3997,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4108,6 +4166,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4178,6 +4239,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4217,9 +4284,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4256,7 +4320,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4365,6 +4429,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4609,6 +4676,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4663,9 +4733,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4690,6 +4757,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4870,9 +4940,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -5027,6 +5094,9 @@ 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 due date" msgstr "" @@ -5048,6 +5118,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -5075,6 +5148,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5111,6 +5187,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5544,12 +5623,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5589,9 +5662,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5628,6 +5707,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5637,15 +5719,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5658,39 +5755,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5700,6 +5866,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5736,6 +5911,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5763,6 +5941,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5790,6 +5971,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6096,6 +6298,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6175,6 +6380,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6184,18 +6392,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6208,6 +6434,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6262,9 +6491,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6317,9 +6558,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6329,6 +6585,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6353,6 +6615,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6431,6 +6696,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6479,16 +6747,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6504,6 +6762,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6537,6 +6798,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6549,6 +6813,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6594,22 +6861,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6621,6 +6888,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6706,7 +6976,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6790,6 +7060,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6820,6 +7093,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6850,6 +7126,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6925,6 +7204,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6958,6 +7240,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6991,6 +7276,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7226,6 +7514,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7235,6 +7526,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7244,6 +7538,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7292,10 +7595,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7633,12 +7939,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7666,7 +7981,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7681,6 +7996,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7759,6 +8077,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7774,6 +8098,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7843,15 +8170,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7879,6 +8206,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7891,9 +8221,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8209,6 +8536,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8242,9 +8572,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8254,6 +8581,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8341,20 +8674,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "assign yourself" msgstr "" @@ -8382,61 +8701,95 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8469,9 +8822,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8516,13 +8866,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8531,9 +8878,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8564,9 +8908,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8614,23 +8955,6 @@ msgstr[3] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8911,6 +9235,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8929,6 +9256,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8988,6 +9318,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/id_ID/gitlab.po b/locale/id_ID/gitlab.po index e185f4f71b7..ba43d50b726 100644 --- a/locale/id_ID/gitlab.po +++ b/locale/id_ID/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: id\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:28\n" msgid " Status" msgstr "" @@ -107,6 +107,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -148,23 +151,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -280,6 +273,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -322,6 +321,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -361,15 +363,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -388,6 +390,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -685,6 +690,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -844,6 +852,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -880,9 +891,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1364,6 +1372,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1526,6 +1540,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1574,10 +1591,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1604,6 +1621,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1670,9 +1693,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1706,15 +1726,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1739,12 +1750,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1802,6 +1807,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1832,9 +1840,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1874,12 +1879,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1898,6 +1906,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1916,9 +1927,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1928,6 +1936,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -1975,6 +1986,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2047,24 +2061,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2149,6 +2157,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2182,6 +2193,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2287,9 +2307,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2407,6 +2424,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2609,9 +2629,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2771,6 +2803,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2906,10 +2944,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3020,6 +3058,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3101,6 +3142,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3113,9 +3157,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3143,7 +3196,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3182,16 +3235,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3249,6 +3301,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3426,6 +3481,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3468,6 +3526,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3480,6 +3541,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3507,6 +3571,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3522,6 +3592,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3600,12 +3673,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3666,13 +3733,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3759,6 +3826,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3771,19 +3841,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3825,6 +3895,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -3988,6 +4061,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4055,6 +4131,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4094,9 +4176,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4133,7 +4212,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4239,6 +4318,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4480,6 +4562,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4534,9 +4619,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4561,6 +4643,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4741,9 +4826,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4895,6 +4977,9 @@ 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 due date" msgstr "" @@ -4916,6 +5001,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4943,6 +5031,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -4979,6 +5070,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5409,12 +5503,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5454,9 +5542,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5493,6 +5587,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5502,15 +5599,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5523,39 +5635,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5565,6 +5746,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5601,6 +5791,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5628,6 +5821,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5655,6 +5851,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -5961,6 +6178,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6037,6 +6257,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6046,18 +6269,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6070,6 +6311,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6124,9 +6368,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6176,9 +6432,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6188,6 +6459,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6212,6 +6489,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6290,6 +6570,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6338,13 +6621,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6360,6 +6636,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6393,6 +6672,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6405,6 +6687,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6450,22 +6735,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6477,6 +6762,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6559,7 +6847,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6643,6 +6931,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6673,6 +6964,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6703,6 +6997,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6778,6 +7075,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6811,6 +7111,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6844,6 +7147,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7076,6 +7382,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7085,6 +7394,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7094,6 +7406,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7142,10 +7463,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7477,12 +7801,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7510,7 +7843,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7525,6 +7858,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7603,6 +7939,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7618,6 +7960,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7687,15 +8032,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7723,6 +8068,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7735,9 +8083,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8053,6 +8398,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8086,9 +8434,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8098,6 +8443,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8185,14 +8536,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - msgid "assign yourself" msgstr "" @@ -8220,61 +8563,83 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgstr "" + +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8307,9 +8672,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8348,13 +8710,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST is loading" -msgstr "" - -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8363,9 +8722,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8396,9 +8752,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8440,17 +8793,6 @@ msgstr[0] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8719,6 +9061,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8737,6 +9082,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8790,6 +9138,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/it/gitlab.po b/locale/it/gitlab.po index 8d7bc9aff91..375311ccf72 100644 --- a/locale/it/gitlab.po +++ b/locale/it/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: it\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:28\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -143,7 +146,7 @@ msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow msgstr "%{number_of_failures} di %{maximum_failures} fallimenti. GitLab consentirà l'accesso al prossimo tentativo." msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." -msgstr "%{number_of_failures} di %{maximum_failures} fallimenti. GitLab non ritenterà automaticamente. Ripristina l'informazioni d'archiviazione quando il problema è risolto." +msgstr "%{number_of_failures} di %{maximum_failures} fallimenti. Gitlab non ritenterà automaticamente. Ripristina l'informazioni d'archiviazione quando il problema è risolto." msgid "%{openOrClose} %{noteable}" msgstr "" @@ -167,27 +170,13 @@ msgstr "%{text} è disponibile" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Un insieme di grafici riguardo la Continuous Integration" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "Token di accesso" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Aggiungi Licenza" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "Aprile" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Sei sicuro di voler cancellare questa pipeline programmata?" @@ -878,6 +882,9 @@ msgstr "Farà automaticamente le build, i test e i rilasci della tua applicazion msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "Approfondisci: %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1091,7 +1095,7 @@ msgstr[0] "" msgstr[1] "" msgid "Branch %{branch_name} was created. To set up auto deploy, choose a GitLab CI Yaml template and commit your changes. %{link_to_autodeploy_doc}" -msgstr "La branch %{branch_name} è stata creata. Per impostare un rilascio automatico scegli un template CI di GitLab e committa le tue modifiche %{link_to_autodeploy_doc}" +msgstr "La branch %{branch_name} è stata creata. Per impostare un rilascio automatico scegli un template CI di Gitlab e committa le tue modifiche %{link_to_autodeploy_doc}" msgid "Branch has changed" msgstr "La branche è cambiata" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "Clona repository" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "Certificato CA" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "Certificate Authority bundle (formato PEM)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1661,7 +1680,7 @@ msgid "ClusterIntegration|GitLab Integration" msgstr "" msgid "ClusterIntegration|GitLab Runner" -msgstr "GitLab Runner" +msgstr "Gitlab Runner" msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." msgstr "" @@ -1705,9 +1724,6 @@ msgstr "Installa" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "Installato" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "Tipo di macchina" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "Commit" msgid "CommitMessage|Add %{file_name}" msgstr "Aggiungi %{file_name}" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Commits" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2163,7 +2167,7 @@ msgid "ContainerRegistry|Use different image names" msgstr "Utilizza nomi d'immagine differenti" msgid "ContainerRegistry|With the Docker Container Registry integrated into GitLab, every project can have its own space to store its Docker images." -msgstr "Con il Docker Container Registry integrato in GitLab, ogni progetto può avere il suo spazio d'archiviazione sulle immagini Docker." +msgstr "Con il Docker Container Registry integrato in Gitlab, ogni progetto può avere il suo spazio d'archiviazione sulle immagini Docker." msgid "ContainerRegistry|You can also use a %{deploy_token} for read-only access to the registry images." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "Guida per contribuire" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "Crea nuovo..." msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "Fork" - msgid "CreateTag|Tag" msgstr "Tag" @@ -2444,6 +2457,9 @@ msgstr "Dicembre" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "Febbraio" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Files" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Filtra per messaggio di commit" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Trova in percorso" @@ -3181,7 +3230,7 @@ msgstr "Push di" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Fork" -msgstr[1] "Forks" - msgid "ForkedFromProjectPath|Forked from" msgstr "Fork da" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "Vai il tuo fork" - -msgid "GoToYourFork|Fork" -msgstr "Fork" - msgid "Google Code import" msgstr "" @@ -3652,7 +3714,7 @@ msgid "Google Takeout" msgstr "" msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service." -msgstr "L'autenticazione Google non è %{link_to_documentation}. Richiedi al tuo amministratore GitLab se desideri utilizzare il servizio." +msgstr "L'autenticazione Google non è %{link_to_documentation}. Richiedi al tuo amministratore Gitlab se desideri utilizzare il servizio." msgid "Got it!" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "Intervallo di Pattern" msgid "Introducing Cycle Analytics" msgstr "Introduzione delle Analisi Cicliche" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "Ultima Pipeline" msgid "Last commit" msgstr "Ultimo Commit" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "Ultima modifica %{date}" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "Nessuna Repository" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Nessuna pianificazione" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "Dati insufficienti " +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "con più stadi" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "Preferenze" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "Account pianificato per la rimozione." @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "Elimina account" @@ -5568,39 +5675,108 @@ msgstr "Eliminare il tuo account?" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "Password non valida" msgid "Profiles|Invalid username" msgstr "Username non valido" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "Inserisci il tuo %{confirmationValue} per confermare:" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "Non hai i permessi per eliminare questo utente." @@ -5610,6 +5786,15 @@ msgstr "Devi trasferire la proprietà o eliminare questi gruppi prima che tu pos msgid "Profiles|Your account is currently an owner in these groups:" msgstr "Il tuo account è attualmente proprietario in questi gruppi:" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "Il Progetto '%{project_name}' è stato aggiornato con successo." msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "L'accesso al progetto dev'esser fornito esplicitamente ad ogni utente" @@ -5673,6 +5861,9 @@ msgstr "Esportazione del progetto iniziata. Un link di download sarà inviato vi msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "Iscriviti" @@ -5700,6 +5891,27 @@ msgstr "Mai" msgid "ProjectLifecycle|Stage" msgstr "Stadio" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "Leggimi" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "Seleziona formato d'archivio" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "Seleziona una branch di destinazione" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "Set" @@ -6498,6 +6777,12 @@ msgstr "" msgid "Set up Koding" msgstr "Configura Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6510,12 +6795,6 @@ msgstr "imposta una password" msgid "Settings" msgstr "Impostazioni" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "inizia una %{new_merge_request} con queste modifiche" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "Il tempo aggregato relativo eventi/data entry raccolto in quello stadio. msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "Il valore falsato nel mezzo di una serie di dati osservati. ES: tra 3,5,9 il mediano è 5. Tra 3,5,7,8 il mediano è (5+7)/2 quindi 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "Carica un nuovo file" msgid "Upload file" msgstr "Carica file" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "clicca per caricare" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "Usa le tue impostazioni globali " msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "Puoi aggiungere files solo quando sei in una branch" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "Devi accedere per porre una star al progetto" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "Necessiti del permesso." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "Non riceverai alcuna notifica via email" @@ -8237,16 +8582,6 @@ msgstr "fa" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "giorni" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "Nuova richiesta di merge" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/ja/gitlab.po b/locale/ja/gitlab.po index f1d84529a25..a618fa97381 100644 --- a/locale/ja/gitlab.po +++ b/locale/ja/gitlab.po @@ -13,10 +13,10 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: ja\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 11:46\n" msgid " Status" -msgstr "" +msgstr " ステータス" msgid " and" msgstr " と" @@ -107,6 +107,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "%{group_docs_link_start}グループ%{group_docs_link_end}を使用すると、複数のプロジェクトを管理して共同作業を行うことができます。グループのメンバーは、所属するプロジェクトのすべてにアクセスできます。" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} 開始" @@ -140,7 +143,7 @@ msgstr[0] "%{storage_name}: 失敗したアクセスの試行回数 %{failed_att msgid "%{text} %{files}" msgid_plural "%{text} %{files} files" -msgstr[0] "" +msgstr[0] "%{text} %{files} ファイル" msgid "%{text} is available" msgstr "%{text} が利用できます。" @@ -148,25 +151,15 @@ msgstr "%{text} が利用できます。" msgid "%{title} changes" msgstr "%{title} の変更" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type} が %{vulnerabilityCount} 個の脆弱性を検出しました" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged} 件の未ステージの変更と、 %{staged} 件のステージ済み変更" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + msgid "+ %{moreCount} more" msgstr "+ 他 %{moreCount} 件" @@ -197,7 +190,7 @@ msgstr[0] "%d件のクローズされたマージリクエスト" msgid "1 group" msgid_plural "%d groups" -msgstr[0] "" +msgstr[0] "%dグループ" msgid "1 merged merge request" msgid_plural "%d merged merge requests" @@ -221,7 +214,7 @@ msgstr[0] "" msgid "1 user" msgid_plural "%d users" -msgstr[0] "" +msgstr[0] "%dユーザー" msgid "1st contribution!" msgstr "最初の貢献!" @@ -245,16 +238,16 @@ msgid "404|Please contact your GitLab administrator if you think this is a mista msgstr "このページが正しくない場合、GitLab 管理者に連絡してください。" msgid "\"johnsmith@example.com\": \"@johnsmith\" will add \"By @johnsmith\" to all issues and comments originally created by johnsmith@example.com, and will set @johnsmith as the assignee on all issues originally assigned to johnsmith@example.com." -msgstr "" +msgstr "\"johnsmith@example.com\": \"@johnsmith\" は johnsmith@example.com による全ての課題とコメントに \"By @johnsmith\" を追加します。また、 @johnsmith を元々 johnsmith@example.com に割り当てられていた全ての課題の担当者として設定します。" msgid "\"johnsmith@example.com\": \"John Smith\" will add \"By John Smith\" to all issues and comments originally created by johnsmith@example.com." -msgstr "" +msgstr "\"johnsmith@example.com\": \"John Smith\" は、johnsmith@example.com によって元々作成された全ての課題とコメントに \"By John Smith\" を追加します。" msgid "\"johnsmith@example.com\": \"johnsm...@example.com\" will add \"By johnsm...@example.com\" to all issues and comments originally created by johnsmith@example.com. The email address or username is masked to ensure the user's privacy." -msgstr "" +msgstr "\"johnsmith@example.com\": \"johnsm...@example.com\" は、johnsmith@example.com が作成した全ての課題とコメントに \"By johnsm...@example.com\" を追加します。このメールアドレスやユーザー名を隠してユーザーのプライバシーを保護されます。" msgid "\"johnsmith@example.com\": \"johnsmith@example.com\" will add \"By johnsmith@example.com\" to all issues and comments originally created by johnsmith@example.com. By default, the email address or username is masked to ensure the user's privacy. Use this option if you want to show the full email address." -msgstr "" +msgstr "\"johnsmith@example.com\": \"johnsmith@example.com\" は、johnsmith@example.com が作成した全ての課題とコメントに \"By johnsmith@example.com\" を追加します。デフォルトで、メールアドレスやユーザー名を隠してユーザーのプライバシーを保護されます。メールアドレスを全て表示したい場合、この方法を指定してください。" msgid "%{changedFilesLength} unstaged and %{stagedFilesLength} staged changes" msgstr "" @@ -266,7 +259,7 @@ msgid "%{created_count} created, %{closed_count}%{created_count}を作成、%{closed_count}個をクローズしました。" msgid "%{group_name} group members" -msgstr "" +msgstr "%{group_name} グループのメンバー" msgid "%{pushes} pushes, more than %{commits} commits by %{people} contributors." msgstr "%{pushes}回のプッシュ、%{commits}回以上のコミットが貢献者%{people}によって行われました。" @@ -275,11 +268,17 @@ msgid "Removes source branch" msgstr "ソースブランチを削除" msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." -msgstr "「Runner」はジョブを実行するプロセスです。必要な数の Runner を任意にセットアップできます。" +msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "CIについてのグラフ" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "フォークに新しいブランチが作成され、新しいマージリクエストが開始します。" @@ -320,6 +319,9 @@ msgid "Access Tokens" msgstr "アクセス トークン" msgid "Access denied! Please verify you can add deploy keys to this repository." +msgstr "アクセスが拒否されました!このリポジトリにデプロイキーを追加できることを確認してください。" + +msgid "Access expiration date" msgstr "" msgid "Access to '%{classification_label}' not allowed" @@ -329,7 +331,7 @@ msgid "Access to failing storages has been temporarily disabled to allow the mou msgstr "mount によって復旧できるように、失敗が発生しているストレージへのアクセスを一時的に抑止しました。再度アクセスするためには、問題を解決してからストレージ情報をリセットしてください。" msgid "Access your runner token, customize your pipeline configuration, and view your pipeline status and coverage report." -msgstr "" +msgstr "Runner トークンにアクセスし、パイプラインの設定をカスタマイズ、そしてパイプラインの状態とカバレッジレポートを閲覧します。" msgid "Account" msgstr "アカウント" @@ -361,15 +363,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "Kubernetes クラスターを追加" -msgid "Add License" -msgstr "ライセンスを追加" - msgid "Add Readme" msgstr "Readmeを追加" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "すべてのメールに表示するテキストを追加します。 ただし、%{character_limit} 文字の制限があります。" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "新しいアプリケーションを追加" @@ -388,6 +390,9 @@ msgstr "" msgid "Add users to group" msgstr "ユーザーをグループへ追加" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "追加テキスト" @@ -395,7 +400,7 @@ msgid "Admin Area" msgstr "" msgid "Admin Overview" -msgstr "" +msgstr "管理者用概要" msgid "Admin area" msgstr "" @@ -476,7 +481,7 @@ msgid "All features are enabled for blank projects, from templates, or when impo msgstr "空のプロジェクト、テンプレートから、またはインポート時にすべての機能が有効になっていますが、後でプロジェクト設定で無効にすることができます。" msgid "All users" -msgstr "" +msgstr "すべてのユーザー" msgid "Allow commits from members who can merge to the target branch." msgstr "ターゲットブランチにマージできるメンバーからのコミットを許可します。" @@ -509,10 +514,10 @@ msgid "An SSH key will be automatically generated when the form is submitted. Fo msgstr "" msgid "An application called %{link_to_client} is requesting access to your GitLab account." -msgstr "" +msgstr "アプリケーションの %{link_to_client} があなたの GitLab アカウントへのアクセスを要求しています。" msgid "An empty GitLab User field will add the FogBugz user's full name (e.g. \"By John Smith\") in the description of all issues and comments. It will also associate and/or assign these issues and comments with the project creator." -msgstr "" +msgstr "GitLab ユーザフィールドが空の場合、すべての問題とコメントの説明に FogBugz ユーザのフルネーム (例えば、By John Smith)を追加します。また、これらの問題やコメントをプロジェクト作成者に関連付けるか、または割り当てます。" msgid "An error accured whilst committing your changes." msgstr "変更のコミット中にエラーが発生しました。" @@ -632,7 +637,7 @@ msgid "An error occurred while retrieving diff" msgstr "差分を取得の際にエラーが発生しました" msgid "An error occurred while saving LDAP override status. Please try again." -msgstr "" +msgstr "LDAP のオーバーライド状態を保存するときにエラーが発生しました。もう一度お試しください。" msgid "An error occurred while saving assignees" msgstr "担当者の登録中にエラーが発生しました" @@ -653,7 +658,7 @@ msgid "Anonymous" msgstr "匿名" msgid "Anti-spam verification" -msgstr "" +msgstr "スパム対策の検証" msgid "Any" msgstr "任意の" @@ -685,6 +690,9 @@ msgstr "4月" msgid "Archived project! Repository and other project resources are read-only" msgstr "このプロジェクトはアーカイブされています。リポジトリおよびその他のプロジェクトリソースは読み取り専用です" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "このパイプラインスケジュールを削除しますか?" @@ -722,7 +730,7 @@ msgid "Ascending" msgstr "昇順" msgid "Ask your group maintainer to set up a group Runner." -msgstr "グループ Runner の設定は、グループの Maintainer に依頼してください。" +msgstr "" msgid "Assertion consumer service URL" msgstr "アサーション コンシューマー サービス URL" @@ -791,10 +799,10 @@ msgid "Authorization code:" msgstr "" msgid "Authorization was granted by entering your username and password in the application." -msgstr "" +msgstr "このアプリケーションにあなたのユーザー名とパスワードが入力されたので、承認が許可されました。" msgid "Authorize" -msgstr "" +msgstr "承認する" msgid "Authorize %{link_to_client} to use your account?" msgstr "" @@ -844,6 +852,9 @@ msgstr "あらかじめ定義された CI/CD の構成を基に自動的にア msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "詳しくは、 %{link_to_documentation} を見てください。" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "このプロジェクトの %{link_to_auto_devops_settings} をする場合、自動ビルドおよびテストすることができます。%{link_to_add_kubernetes_cluster} した場合、自動デプロイすることもできます。" @@ -880,9 +891,6 @@ msgstr "バックグラウンドジョブ" msgid "Background color" msgstr "背景色" -msgid "Background jobs" -msgstr "バックグラウンドジョブ" - msgid "Badges" msgstr "バッジ" @@ -968,7 +976,7 @@ msgid "Below are examples of regex for existing tools:" msgstr "" msgid "Below you will find all the groups that are public." -msgstr "" +msgstr "以下に公開されている全グループを表示します。" msgid "Billing" msgstr "請求" @@ -1034,7 +1042,7 @@ msgid "BillingPlans|paid annually at %{price_per_year}" msgstr "" msgid "BillingPlans|per user" -msgstr "" +msgstr "1ユーザーにつき" msgid "Bitbucket Server Import" msgstr "" @@ -1209,7 +1217,7 @@ msgid "Browse files" msgstr "ファイルを表示" msgid "Built-In" -msgstr "" +msgstr "ビルトイン" msgid "Business metrics (Custom)" msgstr "ビジネスメトリクス(カスタム)" @@ -1275,7 +1283,7 @@ msgid "CICD|You need to specify a domain if you want to use Auto Review Apps and msgstr "自動 Review Apps と自動デプロイステージを使用したい場合は、ドメインを指定する必要があります。" msgid "CICD|instance enabled" -msgstr "" +msgstr "インスタンスが有効" msgid "Callback URL" msgstr "コールバック URL" @@ -1305,7 +1313,7 @@ msgid "Change Weight" msgstr "ウェイトを変更する" msgid "Change template" -msgstr "" +msgstr "テンプレートを変更" msgid "Change this value to influence how frequently the GitLab UI polls for updates." msgstr "GitLab UI の更新頻度を変更するにはこの値を変更してください。" @@ -1364,6 +1372,12 @@ msgstr "ファイルを選択..." msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "変更内容を確認したりマージリクエストを作成するために、Branch/tag (例: %{master}) を選択するか、コミットID(例: %{sha})を入力してください。" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "カラーを選択してください。" @@ -1526,6 +1540,9 @@ msgstr "リポジトリをクローン" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1574,11 +1591,11 @@ msgstr "CA 証明書" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "認証局バンドル (PEM形式)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "どのプロジェクト環境でこの Kubernetes クラスターを使うか選択してください。" +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "Kubernetes クラスターと GitLab の統合方法の制御" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" msgid "ClusterIntegration|Copy API URL" msgstr "API URLをコピー" @@ -1604,6 +1621,12 @@ msgstr "Kubernetes クラスターを作成" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "Kubernetes クラスターの詳細を入力してください" @@ -1670,9 +1693,6 @@ msgstr "インストール" msgid "ClusterIntegration|Install Prometheus" msgstr "Prometheus をインストール" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "インストール済み" @@ -1706,15 +1726,6 @@ msgstr "Kubernetes クラスターの稼働状態" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Kubernetes クラスターの統合" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "Kubernetes クラスターの統合がこのプロジェクトで無効です。" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "Kubernetes クラスターの統合がこのプロジェクトで有効です。" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "Kubernetes クラスターの統合がこのプロジェクトで有効です。この統合を無効にしても Kubernetes クラスターには影響せず、GitLab との接続が一時的に切断されるだけです。" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "Kubernetes クラスターを Google Kubernetes Engine 上に作成しています..." @@ -1739,12 +1750,6 @@ msgstr "%{help_link_start}Kubernetes%{help_link_end}の詳細。" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "%{help_link_start}ゾーン%{help_link_end}の詳細。" -msgid "ClusterIntegration|Learn more about environments" -msgstr "環境の詳細" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "セキュリティ設定の詳細" - msgid "ClusterIntegration|Machine type" msgstr "マシンタイプ" @@ -1782,7 +1787,7 @@ msgid "ClusterIntegration|Number of nodes" msgstr "ノード数" msgid "ClusterIntegration|Please enter access information for your Kubernetes cluster. If you need help, you can read our %{link_to_help_page} on Kubernetes" -msgstr "" +msgstr "Kubernetes クラスターのアクセス情報を入力してください。不明点は %{link_to_help_page} の Kubernetes の項目をご覧ください。" msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "Google アカウントが次の要件を満たしていることを確認してください。" @@ -1802,6 +1807,9 @@ msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "Kubernetes クラスターの統合については、%{link_to_help_page} をお読みください。" @@ -1832,9 +1840,6 @@ msgstr "プロジェクトの検索" msgid "ClusterIntegration|Search zones" msgstr "ゾーンを検索" -msgid "ClusterIntegration|Security" -msgstr "セキュリティ" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Kubernetes クラスターの詳細を閲覧、編集する" @@ -1874,12 +1879,15 @@ msgstr "%{title} のインストール中に問題が発生しました" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "既定のクラスター設定では、コンテナ化されたアプリケーションを正常にビルドやデプロイするために必要な様々な機能にアクセスできます。" +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "このアカウントは %{link_to_container_project} で Kubernetes クラスターを作成するのに以下の権限が必要です" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "Kubernetes クラスターを切り替え" @@ -1898,6 +1906,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "このプロジェクトに Kubernetes クラスターを関連付けることで、Review Apps の使用、アプリケーションのデプロイ、パイプラインの実行などを簡単に行うことができます。" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "アカウントに %{link_to_kubernetes_engine} が必要です。" @@ -1916,9 +1927,6 @@ msgstr "ドキュメント" msgid "ClusterIntegration|help page" msgstr "ヘルプ ページ" -msgid "ClusterIntegration|installing applications" -msgstr "アプリケーションをインストールしています" - msgid "ClusterIntegration|meets the requirements" msgstr "必要条件" @@ -1928,6 +1936,9 @@ msgstr "正しく設定されている" msgid "ClusterIntegration|sign up" msgstr "新規登録" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -1975,6 +1986,9 @@ msgstr "コミット" msgid "CommitMessage|Add %{file_name}" msgstr "%{file_name} を追加" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "コミット" @@ -1988,7 +2002,7 @@ msgid "Commits per day of month" msgstr "" msgid "Commits per weekday" -msgstr "" +msgstr "週ごとのコミット数" msgid "Commits|An error occurred while fetching merge requests data." msgstr "マージリクエストデータの取得中にエラーが発生しました。" @@ -2042,29 +2056,23 @@ msgid "Confidential" msgstr "非公開" msgid "Confidentiality" -msgstr "" +msgstr "機密性" msgid "Configure Gitaly timeouts." msgstr "Gitaly のタイムアウトを設定します。" -msgid "Configure Sidekiq job throttling." -msgstr "Sidekiq job throttling の設定" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "リポジトリに対して自動実行する Git チェックとハウスキーピングを設定します。" msgid "Configure limits for web and API requests." msgstr "ウェブおよびAPIリクエストの制限を設定する。" -msgid "Configure push and pull mirrors." -msgstr "プッシュミラーとプルミラーを構成します。" +msgid "Configure push mirrors." +msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "ストレージのパスとサーキットブレーカーを設定する。" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "ユーザーが新しいアカウントを作成する方法を設定します。" @@ -2149,6 +2157,9 @@ msgstr "貢献度" msgid "Contribution guide" msgstr "貢献者向けガイド" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "グループメンバーの貢献度" @@ -2182,6 +2193,15 @@ msgstr "この Geo ノードの検証操作の最大同時実行数を制御す msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "SSH 公開鍵をクリップボードにコピー" @@ -2287,9 +2307,6 @@ msgstr "新規作成" msgid "Create project label" msgstr "プロジェクトラベルを作成" -msgid "CreateNewFork|Fork" -msgstr "フォーク" - msgid "CreateTag|Tag" msgstr "タグ" @@ -2333,7 +2350,7 @@ msgid "CurrentUser|Settings" msgstr "設定" msgid "Custom" -msgstr "" +msgstr "カスタム" msgid "Custom CI config path" msgstr "" @@ -2396,7 +2413,7 @@ msgid "Date picker" msgstr "" msgid "Debug" -msgstr "" +msgstr "デバッグ" msgid "Dec" msgstr "12月" @@ -2407,6 +2424,9 @@ msgstr "12月" msgid "Decline and sign out" msgstr "辞退してサインアウト" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "デフォルト分類ラベル" @@ -2609,9 +2629,21 @@ msgstr "このプロジェクトでは無効にする" msgid "Disable group Runners" msgstr "グループ Runner を無効にする" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "変更を破棄する" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "下書きを破棄" @@ -2700,7 +2732,7 @@ msgid "Edit application" msgstr "アプリケーションの編集" msgid "Edit files in the editor and commit changes here" -msgstr "" +msgstr "エディターでファイルを編集し、ここで変更をコミットします" msgid "Edit group: %{group_name}" msgstr "グループを編集:%{group_name}" @@ -2739,7 +2771,7 @@ msgid "Enable SAML authentication for this group" msgstr "このグループの SAML 認証を有効にする" msgid "Enable Sentry for error reporting and logging." -msgstr "" +msgstr "エラー報告とログ記録のために Sentry を有効にする。" msgid "Enable and configure InfluxDB metrics." msgstr "InfluxDB のメトリクスを有効にして設定する。" @@ -2771,6 +2803,12 @@ msgstr "reCAPTCHA または Akismet の有効、および IP 制限を設定す msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "有効" @@ -2856,7 +2894,7 @@ msgid "Environments|Re-deploy to environment" msgstr "" msgid "Environments|Read more about environments" -msgstr "" +msgstr "環境の詳細について読む" msgid "Environments|Rollback environment" msgstr "" @@ -2906,10 +2944,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -2934,10 +2972,10 @@ msgid "Error fetching network graph." msgstr "ネットワークグラフの取得中にエラーが発生しました。" msgid "Error fetching refs" -msgstr "" +msgstr "参照の取得中にエラーが発生" msgid "Error fetching usage ping data." -msgstr "" +msgstr "Ping データ取得中にエラーが発生しました。" msgid "Error loading branch data. Please try again." msgstr "ブランチ データの読み込み中にエラーが発生しました。もう一度やり直してください。" @@ -3020,6 +3058,9 @@ msgstr "すべて展開" msgid "Expand sidebar" msgstr "サイドバーを開く" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3101,6 +3142,9 @@ msgstr "2月" msgid "Fields on this page are now uneditable, you can configure" msgstr "このページの項目は編集できない設定です。次の Kubernetes クラスターを設定できます。" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "ファイル" @@ -3111,11 +3155,20 @@ msgid "Fill in the fields below, turn on %{enable_label}, and p msgstr "下記項目に必要事項を入力し、 %{enable_label}をオンにして、 %{save_changes}を押してください。" msgid "Filter" +msgstr "フィルター" + +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." msgstr "" msgid "Filter by commit message" msgstr "コミットメッセージで絞り込み" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "パスで検索" @@ -3143,7 +3196,7 @@ msgstr "プッシュした人" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3182,16 +3235,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "フォーク" - msgid "ForkedFromProjectPath|Forked from" msgstr "フォーク元" @@ -3249,6 +3301,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "初期設定ラベルセットを生成する" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3426,6 +3481,9 @@ msgstr "" msgid "Geo|All projects" msgstr "すべてのプロジェクト" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3468,6 +3526,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "特定グループのプロジェクト" @@ -3480,6 +3541,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "リポジトリ同期容量" @@ -3507,6 +3571,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3522,6 +3592,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "Git" @@ -3600,12 +3673,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "自分のフォークへ移動" - -msgid "GoToYourFork|Fork" -msgstr "フォーク" - msgid "Google Code import" msgstr "" @@ -3666,14 +3733,14 @@ msgstr "申し訳ありません、検索にマッチするエピックはあり msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "ロードマップは時間の経過とともにエピックの進行を表示します" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." -msgstr "ロードマップを表示するには、予定開始日か予定終了日をこのグループか子グループのエピックの1つに追加してください。月表示では、前月、当月、もしくは5ヶ月先のエピックのみが表示されます。 – %{startDate} 〜 %{endDate}" +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." -msgstr "ロードマップを表示するには、予定開始日か予定終了日をこのグループか子グループのエピックの1つに追加してください。四半期表示では、前四半期、当四半期、もしくは4つ先の四半期までのエピックのみが表示されます。 – %{startDate} 〜 %{endDate}" +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." -msgstr "ロードマップを表示するには、予定開始日か予定終了日をこのグループか子グループのエピックの1つに追加してください。週表示では、先週、今週、もしくは4週先までのエピックのみが表示されます。 – %{startDate} 〜 %{endDate}" +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "検索対象を広げるには、フィルターを変更するか削除してください。月表示では、先月、今月もしくは5ヶ月先までのエピックのみが表示されます。 – %{startDate} 〜 %{endDate}" @@ -3759,6 +3826,9 @@ msgstr "グループはありません" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "グループメンバーの権限管理、およびグループ内の各プロジェクトのアクセス権限を管理できます。" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "このグループにプロジェクトを作成する。" @@ -3771,20 +3841,20 @@ msgstr "グループを編集" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "グループの唯一のオーナーとなっているため、このグループから離脱することができません。" -msgid "GroupsTree|Filter by name..." -msgstr "名前で絞り込み..." - msgid "GroupsTree|Leave this group" msgstr "このグループから離脱する" msgid "GroupsTree|Loading groups" msgstr "グループの読み込み中" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "すみません、検索に一致するグループが存在しません" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "すみません、検索に一致するプロジェクトかグループが存在しません" +msgid "GroupsTree|Search by name" +msgstr "" msgid "Have your users email" msgstr "ユーザーにメールを送信" @@ -3825,6 +3895,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "非表示" @@ -3988,6 +4061,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4016,7 +4092,7 @@ msgid "Install GitLab Runner" msgstr "" msgid "Install Runner on Kubernetes" -msgstr "" +msgstr "Kubernetes に Runner をインストール" msgid "Instance" msgid_plural "Instances" @@ -4029,19 +4105,19 @@ msgid "Instance Statistics visibility" msgstr "" msgid "Instance does not support multiple Kubernetes clusters" -msgstr "" +msgstr "インスタンスはマルチ Kubernetes クラスターをサポートしていません" msgid "Integrations" -msgstr "" +msgstr "インテグレーション" msgid "Integrations Settings" msgstr "" msgid "Interested parties can even contribute by pushing commits if they want to." -msgstr "" +msgstr "貢献をしたい関係者は、コミットをプッシュすることで貢献することもできます。" msgid "Internal - The group and any internal projects can be viewed by any logged in user." -msgstr "" +msgstr "内部 - グループおよび内部プロジェクトは、ログインしているすべてのユーザーが見ることができます。" msgid "Internal - The project can be accessed by any logged in user." msgstr "" @@ -4055,6 +4131,12 @@ msgstr "間隔のパターン" msgid "Introducing Cycle Analytics" msgstr "サイクル分析のご紹介" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4065,7 +4147,7 @@ msgid "Issue events" msgstr "課題イベント" msgid "IssueBoards|Board" -msgstr "" +msgstr "ボード" msgid "IssueBoards|Boards" msgstr "" @@ -4094,9 +4176,6 @@ msgstr "ジョブが消去されました" msgid "Jobs" msgstr "ジョブ" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4133,7 +4212,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4167,7 +4246,7 @@ msgid "Kubernetes cluster creation time exceeds timeout; %{timeout}" msgstr "" msgid "Kubernetes cluster integration was not removed." -msgstr "" +msgstr "Kubernetes クラスターの統合は削除されませんでした。" msgid "Kubernetes cluster integration was successfully removed." msgstr "" @@ -4179,7 +4258,7 @@ msgid "Kubernetes configured" msgstr "Kubernetes 構成済み" msgid "Kubernetes service integration has been deprecated. %{deprecated_message_content} your Kubernetes clusters using the new Kubernetes Clusters page" -msgstr "" +msgstr "Kubernetes サービスの統合は廃止されました。%{deprecated_message_content} 新しいKubernetes クラスター のページを使用してください" msgid "LFS" msgstr "LFS" @@ -4215,7 +4294,7 @@ msgid "Labels can be applied to %{features}. Group labels are available for any msgstr "ラベルを%{features} に適用できます。グループラベルはグループ内のすべてのプロジェクトで使用できます。" msgid "Labels can be applied to issues and merge requests to categorize them." -msgstr "" +msgstr "ラベルを使用して、課題やマージリクエストを分類できます。" msgid "Labels can be applied to issues and merge requests." msgstr "ラベルは課題とマージリクエストに適用できます。" @@ -4239,6 +4318,9 @@ msgstr "最新パイプライン" msgid "Last commit" msgstr "最新コミット" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "最終編集日 %{date}" @@ -4270,7 +4352,7 @@ msgid "Learn more about Kubernetes" msgstr "" msgid "Learn more about protected branches" -msgstr "" +msgstr "保護されたブランチについての詳細" msgid "Learn more in the" msgstr "詳しく見る:" @@ -4312,7 +4394,7 @@ msgid "LicenseManagement|Blacklisted" msgstr "" msgid "LicenseManagement|License" -msgstr "" +msgstr "ライセンス" msgid "LicenseManagement|License Management" msgstr "" @@ -4324,7 +4406,7 @@ msgid "LicenseManagement|Manage approved and blacklisted licenses for this proje msgstr "" msgid "LicenseManagement|Packages" -msgstr "" +msgstr "パッケージ" msgid "LicenseManagement|Remove license" msgstr "" @@ -4480,6 +4562,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4534,9 +4619,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "検討の更新に失敗しました" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4561,6 +4643,9 @@ msgstr "メトリクス - Influx" msgid "Metrics - Prometheus" msgstr "メトリクス - Prometheus" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "ビジネス" @@ -4741,9 +4826,6 @@ msgstr "月" msgid "More" msgstr "" -msgid "More actions" -msgstr "その他の操作" - msgid "More info" msgstr "" @@ -4895,6 +4977,9 @@ msgstr "Gitaly サーバーに接続できませんでした。ログを確認 msgid "No container images stored for this project. Add one by following the instructions above." msgstr "" +msgid "No contributions were found" +msgstr "" + msgid "No due date" msgstr "期限なし" @@ -4916,6 +5001,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4943,6 +5031,9 @@ msgstr "" msgid "No repository" msgstr "リポジトリがありません" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "スケジュールなし" @@ -4974,11 +5065,14 @@ msgid "Not available for protected branches" msgstr "保護されたブランチでは利用できません" msgid "Not confidential" -msgstr "" +msgstr "機密ではない" msgid "Not enough data" msgstr "データ不足" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "マスターブランチは自動的に保護されることに留意してください。%{link_to_protected_branches}" @@ -5098,7 +5192,7 @@ msgid "One or more of your Google Code projects cannot be imported into GitLab d msgstr "" msgid "Online IDE integration settings." -msgstr "" +msgstr "オンライン IDE 統合設定。" msgid "Only admins" msgstr "" @@ -5164,7 +5258,7 @@ msgid "Other information" msgstr "その他の情報" msgid "Otherwise it is recommended you start with one of the options below." -msgstr "" +msgstr "そうでない場合は、次のいずれかのオプションで開始することを推奨します。" msgid "Outbound requests" msgstr "" @@ -5185,7 +5279,7 @@ msgid "Package was removed" msgstr "" msgid "Packages" -msgstr "" +msgstr "パッケージ" msgid "Pages" msgstr "Pages" @@ -5194,16 +5288,16 @@ msgid "Pagination|Last »" msgstr "最後 »" msgid "Pagination|Next" -msgstr "" +msgstr "次ページ" msgid "Pagination|Prev" -msgstr "" +msgstr "前ページ" msgid "Pagination|« First" msgstr "« 最初" msgid "Part of merge request changes" -msgstr "" +msgstr "マージリクエストでの変更箇所" msgid "Password" msgstr "パスワード" @@ -5215,7 +5309,7 @@ msgid "Path:" msgstr "パス:" msgid "Pause" -msgstr "" +msgstr "停止" msgid "Paused Runners don't accept new jobs" msgstr "" @@ -5338,13 +5432,13 @@ msgid "Pipelines|Continuous Integration can help catch bugs by running your test msgstr "" msgid "Pipelines|Get started with Pipelines" -msgstr "" +msgstr "パイプラインの利用を開始する" msgid "Pipelines|Loading Pipelines" msgstr "パイプラインを読み込み中" msgid "Pipelines|Project cache successfully reset." -msgstr "" +msgstr "プロジェクトのキャッシュを正常にリセットしました。" msgid "Pipelines|Run Pipeline" msgstr "パイプライン実行" @@ -5353,16 +5447,16 @@ msgid "Pipelines|Something went wrong while cleaning runners cache." msgstr "" msgid "Pipelines|There are currently no %{scope} pipelines." -msgstr "" +msgstr "%{scope} パイプラインは現在ありません。" msgid "Pipelines|There are currently no pipelines." -msgstr "" +msgstr "パイプラインは現在ありません。" msgid "Pipelines|There was an error fetching the pipelines. Try again in a few moments or contact your support team." msgstr "" msgid "Pipelines|This project is not currently set up to run pipelines." -msgstr "" +msgstr "このプロジェクトは現在パイプラインを実行するように設定されていません。" msgid "Pipeline|Create for" msgstr "実行対象" @@ -5409,12 +5503,6 @@ msgstr "ステージあり" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "PlantUML" @@ -5446,7 +5534,7 @@ msgid "Please wait while we connect to your repository. Refresh at will." msgstr "リポジトリに接続できるまで、しばらくお待ちください。完了すると、画面が自動的に更新されます。" msgid "Please wait while we import the repository for you. Refresh at will." -msgstr "" +msgstr "リポジトリをインポートしているので、しばらくお待ちください。完了すると、画面が自動的に更新されます。" msgid "Preferences" msgstr "基本設定" @@ -5454,9 +5542,15 @@ msgstr "基本設定" msgid "Preferences|Navigation theme" msgstr "ナビゲーションテーマ" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5473,7 +5567,7 @@ msgid "Prioritized label" msgstr "優先ラベル" msgid "Private - Project access must be granted explicitly to each user." -msgstr "" +msgstr "プライベート - 各ユーザーにプロジェクトのアクセス権限を明示的に許可する必要があります。" msgid "Private - The group and its projects can only be viewed by members." msgstr "プライベート - グループとプロジェクトはメンバーのみが閲覧できます。" @@ -5493,24 +5587,42 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" -msgid "Profiles|Account scheduled for removal." +msgid "Profiles|%{author_name} made a private contribution" msgstr "" +msgid "Profiles|Account scheduled for removal." +msgstr "削除予定のアカウントです。" + msgid "Profiles|Add key" msgstr "キーを追加" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "ユーザー名の変更" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "現在のパス: %{path}" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "アカウント削除" @@ -5523,46 +5635,124 @@ msgstr "あなたのアカウントを削除しますか?" msgid "Profiles|Deleting an account has the following effects:" msgstr "アカウントを削除すると次のような影響があります:" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "パスワードが正しくありません" msgid "Profiles|Invalid username" msgstr "ユーザー名が正しくありません" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "パス" -msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" +msgid "Profiles|Position and size your new avatar" msgstr "" -msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." +msgid "Profiles|Private contributions" msgstr "" -msgid "Profiles|Type your %{confirmationValue} to confirm:" -msgstr "確認のため %{confirmationValue} を入力してください:" +msgid "Profiles|Public Avatar" +msgstr "" -msgid "Profiles|Typically starts with \"ssh-rsa …\"" +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + +msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" +msgstr "" + +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + +msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." +msgstr "" + +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + +msgid "Profiles|Type your %{confirmationValue} to confirm:" +msgstr "確認のため %{confirmationValue} を入力してください:" + +msgid "Profiles|Typically starts with \"ssh-rsa …\"" +msgstr "" + +msgid "Profiles|Update profile settings" msgstr "" msgid "Profiles|Update username" msgstr "ユーザー名を更新" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "ユーザー名の変更に失敗しました - %{message}" msgid "Profiles|Username successfully changed" msgstr "ユーザー名は正常に変更されました" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "このユーザーを削除する権限がありません" msgid "Profiles|You must transfer ownership or delete these groups before you can delete your account." -msgstr "" +msgstr "アカウントを削除する前にこれらのグループを削除、または所有権を譲渡してください。" msgid "Profiles|Your account is currently an owner in these groups:" +msgstr "このアカウントは現在これらのグループのオーナーです:" + +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." msgstr "" msgid "Profiles|Your status" @@ -5601,6 +5791,9 @@ msgstr "'%{project_name}' プロジェクトは正常に更新されました。 msgid "Project Badges" msgstr "プロジェクトバッジ" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "ユーザーごとにプロジェクトアクセスの権限を指定しなければなりません。" @@ -5628,6 +5821,9 @@ msgstr "プロジェクトのエクスポートを開始しました。ダウン msgid "Project name" msgstr "プロジェクト名" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "講読" @@ -5655,11 +5851,32 @@ msgstr "記録なし" msgid "ProjectLifecycle|Stage" msgstr "ステージ" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" msgid "ProjectSettings|Badges" -msgstr "" +msgstr "バッジ" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "この設定を変更するには管理者に連絡してください。" @@ -5710,7 +5927,7 @@ msgid "ProjectsDropdown|Search your projects" msgstr "プロジェクトを検索" msgid "ProjectsDropdown|Something went wrong on our end." -msgstr "" +msgstr "問題が発生しました。" msgid "ProjectsDropdown|Sorry, no projects matched your search" msgstr "検索条件に一致したプロジェクトはありませんでした" @@ -5755,7 +5972,7 @@ msgid "PrometheusService|%{exporters} with %{metrics} were found" msgstr "%{metrics} の %{exporters} が見つかりました" msgid "PrometheusService|

No common metrics were found

" -msgstr "" +msgstr "

共通メトリクスは見つかりませんでした

" msgid "PrometheusService|Active" msgstr "アクティブ" @@ -5764,7 +5981,7 @@ msgid "PrometheusService|Auto configuration" msgstr "" msgid "PrometheusService|Automatically deploy and configure Prometheus on your clusters to monitor your project’s environments" -msgstr "" +msgstr "プロジェクト環境を監視するため、クラスターに Prometheus を自動的にデプロイし設定する" msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." msgstr "" @@ -5794,13 +6011,13 @@ msgid "PrometheusService|Manual configuration" msgstr "手動構成" msgid "PrometheusService|Metrics" -msgstr "" +msgstr "メトリクス一覧" msgid "PrometheusService|Missing environment variable" msgstr "未設定の環境変数" msgid "PrometheusService|More information" -msgstr "" +msgstr "詳細情報" msgid "PrometheusService|New metric" msgstr "新規メトリクス" @@ -5809,19 +6026,19 @@ msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example msgstr "" msgid "PrometheusService|Prometheus is being automatically managed on your clusters" -msgstr "" +msgstr "Prometheus はクラスター上で自動的に管理されています" msgid "PrometheusService|These metrics will only be monitored after your first deployment to an environment" msgstr "" msgid "PrometheusService|Time-series monitoring service" -msgstr "" +msgstr "時系列監視サービス" msgid "PrometheusService|To enable manual configuration, uninstall Prometheus from your clusters" msgstr "" msgid "PrometheusService|To enable the installation of Prometheus on your clusters, deactivate the manual configuration below" -msgstr "" +msgstr "クラスターに Prometheus をインストールするには、以下の手動設定を無効にしてください" msgid "PrometheusService|Waiting for your first deployment to an environment to find common metrics" msgstr "" @@ -5830,7 +6047,7 @@ msgid "Promote" msgstr "昇格" msgid "Promote these project milestones into a group milestone." -msgstr "" +msgstr "これらのプロジェクトマイルストーンをグループマイルストーンに昇格する" msgid "Promote to Group Milestone" msgstr "グループマイルストーンに昇格" @@ -5908,7 +6125,7 @@ msgid "Pseudonymizer data collection" msgstr "" msgid "Public - The group and any public projects can be viewed without any authentication." -msgstr "" +msgstr "公開- グループおよび公開プロジェクトは認証無しで閲覧することができます" msgid "Public - The project can be accessed without any authentication." msgstr "公開 - プロジェクトは認証無しにアクセスできます" @@ -5932,7 +6149,7 @@ msgid "Push project from command line" msgstr "コマンドラインからプロジェクトをプッシュ" msgid "Push to create a project" -msgstr "" +msgstr "プッシュしてプロジェクトを作成する" msgid "PushRule|Committer restriction" msgstr "コミッター制限" @@ -5947,7 +6164,7 @@ msgid "Quarters" msgstr "" msgid "Quick actions can be used in the issues description and comment boxes." -msgstr "" +msgstr "クイックアクションは課題の説明とコメント欄で使用できます。" msgid "Read more" msgstr "続きを読む" @@ -5961,6 +6178,9 @@ msgstr "Readme" msgid "Real-time features" msgstr "リアルタイム機能" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "参照:" @@ -5981,7 +6201,7 @@ msgid "Register / Sign In" msgstr "登録 / サインイン" msgid "Register and see your runners for this group." -msgstr "" +msgstr "このグループの Runner の登録と確認" msgid "Register and see your runners for this project." msgstr "" @@ -6037,6 +6257,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "認証の修復" @@ -6046,18 +6269,36 @@ msgstr "" msgid "Repo by URL" msgstr "リポジトリ URL" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6070,6 +6311,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6086,7 +6330,7 @@ msgid "Repository has no locks." msgstr "リポジトリはロックされていません。" msgid "Repository maintenance" -msgstr "" +msgstr "リポジトリの保守" msgid "Repository mirror" msgstr "リポジトリミラー" @@ -6124,14 +6368,26 @@ msgstr "ソースブランチでの競合を解決する" msgid "Resolve discussion" msgstr "検討を解決" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "再開" msgid "Retry" -msgstr "" +msgstr "再試行" msgid "Retry this job" msgstr "ジョブを再試行してください" @@ -6144,7 +6400,7 @@ msgstr "" msgid "Reveal value" msgid_plural "Reveal values" -msgstr[0] "" +msgstr[0] "値を表示する" msgid "Revert this commit" msgstr "このコミットをリバート" @@ -6159,7 +6415,7 @@ msgid "Review the process for configuring service providers in your identity pro msgstr "" msgid "Reviewing" -msgstr "" +msgstr "レビュー中" msgid "Reviewing (merge request !%{mergeRequestId})" msgstr "" @@ -6176,9 +6432,24 @@ msgstr "外部リポジトリ用 CI/CD パイプラインを実行" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "Runner トークン" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "Runner" @@ -6188,6 +6459,12 @@ msgstr "Runner API" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "Runner は別々のユーザー、サーバー、さらにはあなたのローカルマシーンにも配置できます。" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6212,6 +6489,9 @@ msgstr "SAML シングル サインオン" msgid "SAML Single Sign On Settings" msgstr "SAML シングル サインオンの設定" +msgid "SAST" +msgstr "SAST" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "SAML トークンの SHA1 フィンガープリントで証明書に署名します。これはサムプリントと呼ばれアイデンティティプロバイダーから取得できます。" @@ -6290,6 +6570,9 @@ msgstr "マージリクエストを検索" msgid "Search milestones" msgstr "マイルストーンを検索" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6327,7 +6610,7 @@ msgid "Seconds before reseting failure information" msgstr "失敗情報をリセットするまでの秒数" msgid "Seconds to wait for a storage access attempt" -msgstr "" +msgstr "ストレージアクセスを再試行するまでの秒数" msgid "Secret:" msgstr "" @@ -6338,13 +6621,6 @@ msgstr "セキュリティ" msgid "Security Dashboard" msgstr "セキュリティダッシュボード" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6360,9 +6636,12 @@ msgstr "選択" msgid "Select Archive Format" msgstr "アーカイブのフォーマットを選択" -msgid "Select a namespace to fork the project" +msgid "Select a group to invite" msgstr "" +msgid "Select a namespace to fork the project" +msgstr "プロジェクトをフォークする名前空間を選択してください" + msgid "Select a timezone" msgstr "タイムゾーンを選択" @@ -6393,6 +6672,9 @@ msgstr "ソースブランチを選択" msgid "Select target branch" msgstr "ターゲットブランチを選択" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6405,6 +6687,9 @@ msgstr "" msgid "Send email" msgstr "メールを送信" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "9月" @@ -6424,7 +6709,7 @@ msgid "Service URL" msgstr "サービス URL" msgid "Session expiration, projects limit and attachment size." -msgstr "" +msgstr "セッションの有効期限、プロジェクトの上限、添付ファイルのサイズ" msgid "Set a password on your account to pull or push via %{protocol}." msgstr "%{protocol} プロコトル経由でプル、プッシュするためにアカウントのパスワードを設定。" @@ -6450,6 +6735,12 @@ msgstr "CI/CD を設定" msgid "Set up Koding" msgstr "Koding を設定" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6462,12 +6753,6 @@ msgstr "パスワードを設定" msgid "Settings" msgstr "設定" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "共有" @@ -6477,6 +6762,9 @@ msgstr "メンバーと%{sso_label}を共有すると、自身 msgid "Shared Runners" msgstr "共有 Runner" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6545,7 +6833,7 @@ msgid "Sign out" msgstr "サインアウト" msgid "Sign-in restrictions" -msgstr "" +msgstr "サインインの制限" msgid "Sign-up restrictions" msgstr "サインアップの制限" @@ -6559,7 +6847,7 @@ msgstr "静的なウェブサイトのサイズとドメインの設定" msgid "Slack application" msgstr "Slack アプリケーション" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6608,7 +6896,7 @@ msgid "Something went wrong while resolving this discussion. Please try again." msgstr "この検討を解決しているときに問題が発生しました。もう一度やり直してください。" msgid "Something went wrong. Please try again." -msgstr "" +msgstr "問題が発生しました。再試行してください。" msgid "Sorry, no epics matched your search" msgstr "申し訳ありません、検索に一致するエピックはありません" @@ -6643,6 +6931,9 @@ msgstr "グループの大きい順" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "最新作成順" @@ -6662,10 +6953,10 @@ msgid "SortOptions|Milestone" msgstr "マイルストーン順" msgid "SortOptions|Milestone due later" -msgstr "" +msgstr "マイルストーン期限の遅い順" msgid "SortOptions|Milestone due soon" -msgstr "" +msgstr "マイルストーン期限の近い順" msgid "SortOptions|More weight" msgstr "ウエイトが大きい順" @@ -6673,6 +6964,9 @@ msgstr "ウエイトが大きい順" msgid "SortOptions|Most popular" msgstr "人気順" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "名前" @@ -6703,6 +6997,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "最近のサインイン順" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "古い順" @@ -6778,6 +7075,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "この変更で %{new_merge_request} を作成する" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "Runner を起動!" @@ -6811,6 +7111,9 @@ msgstr "" msgid "Subgroups" msgstr "サブグループ" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6844,6 +7147,9 @@ msgstr "システムヘッダーとフッター:" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "タグ(%{tag_count})" @@ -6861,10 +7167,10 @@ msgid "TagsPage|Browse commits" msgstr "" msgid "TagsPage|Browse files" -msgstr "" +msgstr "ファイルを表示" msgid "TagsPage|Can't find HEAD commit for this tag" -msgstr "" +msgstr "このタグの HEAD コミットが見つかりません" msgid "TagsPage|Cancel" msgstr "キャンセル" @@ -6912,7 +7218,7 @@ msgid "TagsPage|Tags" msgstr "タグ一覧" msgid "TagsPage|Tags give the ability to mark specific points in history as being important" -msgstr "" +msgstr "タグは、履歴の特定の位置を重要なものとしてマークする機能を提供します" msgid "TagsPage|This tag has no release notes." msgstr "このタグにはリリースノートがありません。" @@ -6924,7 +7230,7 @@ msgid "TagsPage|Write your release notes or drag files here…" msgstr "" msgid "TagsPage|protected" -msgstr "" +msgstr "保護" msgid "Target Branch" msgstr "ターゲットブランチ" @@ -7062,10 +7368,10 @@ msgid "The testing stage shows the time GitLab CI takes to run every pipeline fo msgstr "テスティングステージでは、GitLab CI が関連するマージリクエストの各パイプラインを実行する時間が表示されます。このデータは最初のパイプラインが完了したときに自動的に追加されます。" msgid "The time in seconds GitLab will keep failure information. When no failures occur during this time, information about the mount is reset." -msgstr "" +msgstr "GitLab は障害情報を秒単位で保存しています。この間に障害が発生しなかった場合、マウントに関する情報はリセットされます。" msgid "The time in seconds GitLab will try to access storage. After this time a timeout error will be raised." -msgstr "" +msgstr "GitLab がストレージにアクセスしようとする時間(秒)。この時間が経過すると、タイムアウトエラーが発生します。" msgid "The time in seconds between storage checks. If a check did not complete yet, GitLab will skip the next check." msgstr "" @@ -7076,6 +7382,9 @@ msgstr "このステージに収集されたデータ毎の時間" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7085,6 +7394,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "得られた一連のデータを小さい順に並べたときに中央に位置する値。例えば、3, 5, 9 の中央値は 5。3, 5, 7, 8 の中央値は (5+7)/2 = 6。" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "表示する課題がありません" @@ -7094,6 +7406,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "表示するマージリクエストがありません" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "Git ストレージへのアクセスに問題があります: " @@ -7142,10 +7463,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7170,16 +7494,16 @@ msgid "This is the author's first Merge Request to this project." msgstr "" msgid "This issue is confidential" -msgstr "" +msgstr "この課題は非公開設定です" msgid "This issue is confidential and locked." -msgstr "" +msgstr "この課題は非公開でロックされています" msgid "This issue is locked." msgstr "この課題はロックされています。" msgid "This job depends on a user to trigger its process. Often they are used to deploy code to production environments" -msgstr "" +msgstr "このジョブはプロセスをトリガーにするユーザーに依存します。多くの場合、本番環境へコードをデプロイするために使用されます。" msgid "This job depends on upstream jobs that need to succeed in order for this job to be triggered" msgstr "" @@ -7212,7 +7536,7 @@ msgid "This job is creating a deployment to %{environmentLink}." msgstr "" msgid "This job is in pending state and is waiting to be picked by a runner" -msgstr "" +msgstr "このジョブは保留中で Runner が動作するのを待っています。" msgid "This job is stuck, because you don't have any active runners online with any of these tags assigned to them:" msgstr "" @@ -7299,7 +7623,7 @@ msgid "Time spent" msgstr "経過時間" msgid "Time tracking" -msgstr "" +msgstr "タイムトラッキング" msgid "Time until first merge request" msgstr "最初のマージリクエストまでの時間" @@ -7320,7 +7644,7 @@ msgid "Timeago|%s days remaining" msgstr "残り %s日間" msgid "Timeago|%s hours ago" -msgstr "" +msgstr "%s 時間前" msgid "Timeago|%s hours remaining" msgstr "残り %s時間" @@ -7477,15 +7801,24 @@ msgstr "SVN リポジトリに接続するときは、%{svn_link} をご確認 msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" -msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." msgstr "" +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + +msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." +msgstr "GitHub リポジトリをインポートするために %{personal_access_token_link} を使用できます。個人用アクセストークンを作成する際は、 repo スコープを選択する必要があります。これによりインポートできる公開・非公開リポジトリの一覧を表示することができます。" + msgid "To import GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" msgstr "" @@ -7508,9 +7841,9 @@ msgid "To this GitLab instance" msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." -msgstr "" +msgstr "GitLab CI の設定ファイルを検証するには、プロジェクト内の「CI / CD→Pipelines」に行き、「CI Lint」ボタンをクリックしてください。" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7525,6 +7858,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "サイドバーを切り替え" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "検討の表示・非表示を切り替える" @@ -7603,6 +7939,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7618,6 +7960,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "検討を未解決にする" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "すべての変更のステージを取り消す" @@ -7687,15 +8032,15 @@ msgstr "新規ファイルをアップロード" msgid "Upload file" msgstr "ファイルをアップロード" -msgid "Upload new avatar" -msgstr "新しいアバターをアップロード" - msgid "UploadLink|click to upload" msgstr "クリックしてアップロード" msgid "Upvotes" msgstr "いいね" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "使用状況の統計" @@ -7706,7 +8051,7 @@ msgid "Use Service Desk to connect with your users (e.g. to offer customer suppo msgstr "サービスデスクを使用して、GitLab 内のメールでユーザと接続(例:顧客サポート)" msgid "Use group milestones to manage issues from multiple projects in the same milestone." -msgstr "" +msgstr "グループマイルストーンを使用して、同じマイルストーン内の複数のプロジェクトの課題を管理します。" msgid "Use one line per URI" msgstr "" @@ -7723,6 +8068,9 @@ msgstr "全体通知設定を利用" msgid "Used by members to sign in to your group in GitLab" msgstr "メンバーが GitLab のグループにサインインするために使用されます" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7735,14 +8083,11 @@ msgstr "" msgid "Users" msgstr "ユーザー" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "変数" msgid "Variables are applied to environments via the runner. They can be protected by only exposing them to protected branches or tags. You can use variables for passwords, secret keys, or whatever you want." -msgstr "" +msgstr "変数は Runner を介して環境に適用されます。また、保護されたブランチやタグだけに変数へのアクセスを制限し、変数を保護することができます。これにより、パスワード、秘密鍵などを格納するために変数を使用できます。" msgid "Various container registry settings." msgstr "各種コンテナレジストリの設定。" @@ -7871,7 +8216,7 @@ msgid "WikiClone|It is recommended to install %{markdown} so that GFM features r msgstr "" msgid "WikiClone|Start Gollum and edit locally" -msgstr "" +msgstr "Gollum を起動してローカルで編集する" msgid "WikiEditPageTip|Tip: You can move this page by adding the path to the beginning of the title." msgstr "" @@ -7880,31 +8225,31 @@ msgid "WikiEdit|There is already a page with the same title in that path." msgstr "" msgid "WikiEmptyIssueMessage|Suggest wiki improvement" -msgstr "" +msgstr "Wiki の改善を提案する" msgid "WikiEmptyIssueMessage|You must be a project member in order to add wiki pages. If you have suggestions for how to improve the wiki for this project, consider opening an issue in the %{issues_link}." -msgstr "" +msgstr "Wiki ページを追加するには、プロジェクトメンバーでなければなりません。このプロジェクトの Wiki を改善する方法の提案がある場合は、 %{issues_link} で問題を開くことを検討してください。" msgid "WikiEmptyIssueMessage|issue tracker" msgstr "" msgid "WikiEmpty|A wiki is where you can store all the details about your project. This can include why you've created it, its principles, how to use it, and so on." -msgstr "" +msgstr "Wiki はプロジェクトに関するすべての詳細を保存する場所です。これには、プロジェクトを作成した理由、プロジェクトの原則、プロジェクトの使用方法などが含まれます。" msgid "WikiEmpty|Create your first page" msgstr "最初のページを作成" msgid "WikiEmpty|Suggest wiki improvement" -msgstr "" +msgstr "Wiki の改善を提案する" msgid "WikiEmpty|The wiki lets you write documentation for your project" -msgstr "" +msgstr "Wiki では、プロジェクトのドキュメントを書くことができます" msgid "WikiEmpty|This project has no wiki pages" -msgstr "" +msgstr "このプロジェクトに Wiki ページはありません" msgid "WikiEmpty|You must be a project member in order to add wiki pages." -msgstr "" +msgstr "Wiki ページを追加するには、プロジェクトメンバーである必要があります。" msgid "WikiHistoricalPage|This is an old version of this page." msgstr "このページの古いバージョンが表示されています。" @@ -8033,7 +8378,7 @@ msgid "You can also create a project from the command line." msgstr "コマンドラインからプロジェクトを作成することもできます。" msgid "You can also star a label to make it a priority label." -msgstr "" +msgstr "ラベルにスターを付けて優先ラベルにすることもできます。" msgid "You can also test your .gitlab-ci.yml in the %{linkStart}Lint%{linkEnd}" msgstr "%{linkStart}Lint%{linkEnd}で .gitlab-ci.yml をテストすることもできます" @@ -8042,7 +8387,7 @@ msgid "You can easily contribute to them by requesting to join these groups." msgstr "" msgid "You can easily install a Runner on a Kubernetes cluster. %{link_to_help_page}" -msgstr "" +msgstr "Kubernetes クラスターに Runner を簡単にインストールできます。%{link_to_help_page}" msgid "You can move around the graph by using the arrow keys." msgstr "" @@ -8053,6 +8398,9 @@ msgstr "ファイルを追加するには、どこかのブランチにいなけ msgid "You can only edit files when you are on a branch" msgstr "ファイルを編集するには、どこかのブランチにいなければいけません" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8075,7 +8423,7 @@ msgid "You don't have any authorized applications" msgstr "" msgid "You have no permissions" -msgstr "" +msgstr "権限がありません" msgid "You have reached your project limit" msgstr "プロジェクト数の上限に達しています" @@ -8086,9 +8434,6 @@ msgstr "アカウントを登録するには、利用規約とプライバシー msgid "You must have maintainer access to force delete a lock" msgstr "ロックを強制的に削除するには、Maintainer のアクセス権が必要です" -msgid "You must sign in to star a project" -msgstr "プロジェクトにスターをつけたい場合はログインしてください" - msgid "You need a different license to enable FileLocks feature" msgstr "ファイルロック機能を有効にするには別のライセンスが必要です" @@ -8098,6 +8443,12 @@ msgstr "" msgid "You need permission." msgstr "権限が必要です" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "通知メールを送信しません" @@ -8120,7 +8471,7 @@ msgid "You won't be able to pull or push project code via SSH until you %{add_ss msgstr "" msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" -msgstr "" +msgstr "SSH 鍵をプロフィールに追加しない限り、SSH 経由でプロジェクトのコードをプルしたりプッシュすることができません。" msgid "You'll need to use different branch names to get a valid comparison." msgstr "有効な比較を行うためには、異なるブランチ名を使用する必要があります。" @@ -8141,7 +8492,7 @@ msgid "Your Groups" msgstr "所属グループ" msgid "Your Kubernetes cluster information on this page is still editable, but you are advised to disable and reconfigure" -msgstr "" +msgstr "このページの Kubernetes クラスター情報は編集可能ですが、無効にして再設定することを推奨します" msgid "Your Projects (default)" msgstr "プロジェクト(デフォルト)" @@ -8159,7 +8510,7 @@ msgid "Your authorized applications" msgstr "" msgid "Your changes can be committed to %{branch_name} because a merge request is open." -msgstr "" +msgstr "マージリクエストが開いているため、変更は %{branch_name} にコミットできます。" msgid "Your changes have been committed. Commit %{commitId} %{commitStats}" msgstr "" @@ -8183,15 +8534,7 @@ msgid "ago" msgstr "前" msgid "among other things" -msgstr "" - -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" +msgstr "その他のもの" msgid "assign yourself" msgstr "自分に割り当て" @@ -8220,20 +8563,51 @@ msgstr "%{namespace} は %{vulnerability} の影響を受けます。" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" -msgstr "%{reportName} 結果の読込中にエラーが発生しました" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" -msgstr "%{type} 新たなセキュリティの脆弱性は検出されませんでした" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" -msgstr "%{type} セキュリティの脆弱性は検出されませんでした" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" -msgid "ciReport|%{type} detected no vulnerabilities" -msgstr "%{type} 脆弱性は検出されませんでした" +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} is loading" +msgstr "" + +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" + +msgid "ciReport|(errors when loading results)" +msgstr "" + +msgid "ciReport|(is loading)" +msgstr "" + +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" msgid "ciReport|Class" msgstr "クラス" @@ -8244,39 +8618,30 @@ msgstr "" msgid "ciReport|Confidence" msgstr "" +msgid "ciReport|Container scanning" +msgstr "" + msgid "ciReport|Container scanning detected" msgstr "コンテナスキャンが検出されました" msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "コンテナスキャンは、Docker イメージに存在する既知の脆弱性を検出します。" -msgid "ciReport|Container scanning is loading" -msgstr "コンテナスキャンを読み込み中" - -msgid "ciReport|Container scanning resulted in error while loading results" -msgstr "コンテナスキャンの読み込み中にエラーが発生しました" +msgid "ciReport|DAST" +msgstr "" msgid "ciReport|DAST detected" msgstr "DAST が検出されました" -msgid "ciReport|DAST is loading" -msgstr "DAST を読み込み中" - -msgid "ciReport|DAST resulted in error while loading results" -msgstr "DAST の読み込み中にエラーが発生しました" - msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" +msgid "ciReport|Dependency scanning" +msgstr "" + msgid "ciReport|Dependency scanning detected" msgstr "依存関係スキャンが検出されました" -msgid "ciReport|Dependency scanning is loading" -msgstr "依存性スキャンを読み込み中" - -msgid "ciReport|Dependency scanning resulted in error while loading results" -msgstr "依存性スキャンの読み込み中にエラーが発生しました" - msgid "ciReport|Description" msgstr "説明" @@ -8307,9 +8672,6 @@ msgstr "インスタンス" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "ホワイトリストについて" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8348,13 +8710,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8363,9 +8722,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "セキュリティスキャンを読み込み中" - msgid "ciReport|Severity" msgstr "" @@ -8396,9 +8752,6 @@ msgstr "依存関係スキャンレポートの読み込み中にエラーが発 msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "未承認の脆弱性(赤色)を承認済としてマークできます。" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "%{name} を %{version} から %{fixed} へアップグレードしてください。" @@ -8440,17 +8793,6 @@ msgstr[0] "日" msgid "deploy token" msgstr "デプロイトークン" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "修正された脆弱性(%d)を検出しました" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "無効" @@ -8550,10 +8892,10 @@ msgid "mrWidget|Checking ability to merge automatically" msgstr "" msgid "mrWidget|Cherry-pick" -msgstr "" +msgstr "チェリーピック" msgid "mrWidget|Cherry-pick this merge request in a new merge request" -msgstr "" +msgstr "このマージリクエストをチェリーピックして、新しいマージリクエストを作成する" msgid "mrWidget|Closed" msgstr "" @@ -8574,10 +8916,10 @@ msgid "mrWidget|Did not close" msgstr "" msgid "mrWidget|Email patches" -msgstr "" +msgstr "メールパッチ" msgid "mrWidget|Failed to load deployment statistics" -msgstr "" +msgstr "デプロイ統計のロードに失敗しました" msgid "mrWidget|Fast-forward merge is not possible. To merge this request, first rebase locally." msgstr "" @@ -8589,7 +8931,7 @@ msgid "mrWidget|If the %{missingBranchName} branch exists in your local reposito msgstr "" msgid "mrWidget|Loading deployment statistics" -msgstr "" +msgstr "デプロイ統計を読み込み中" msgid "mrWidget|Mentions" msgstr "メンション" @@ -8598,10 +8940,10 @@ msgid "mrWidget|Merge" msgstr "マージ" msgid "mrWidget|Merge failed." -msgstr "" +msgstr "マージに失敗しました。" msgid "mrWidget|Merge locally" -msgstr "" +msgstr "ローカルでマージ" msgid "mrWidget|Merge request approved" msgstr "" @@ -8678,10 +9020,10 @@ msgid "mrWidget|The changes were merged into" msgstr "" msgid "mrWidget|The changes were not merged into" -msgstr "" +msgstr "この変更は次のブランチにマージされませんでした" msgid "mrWidget|The changes will be merged into" -msgstr "" +msgstr "この変更は次のブランチにマージされます" msgid "mrWidget|The pipeline for this merge request failed. Please retry the job or push a new commit to fix the failure" msgstr "" @@ -8719,9 +9061,12 @@ msgstr "このマージリクエストはマージ実行中です" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "このプロジェクトはアーカイブされているため、書き込みは無効です。" -msgid "mrWidget|You can merge this merge request manually using the" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." msgstr "" +msgid "mrWidget|You can merge this merge request manually using the" +msgstr "このマージリクエストを手動でマージできます" + msgid "mrWidget|You can remove source branch now" msgstr "" @@ -8737,6 +9082,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "パイプラインが成功したときは自動的にマージされます" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "新規マージリクエスト" @@ -8790,6 +9138,9 @@ msgstr "このドキュメント" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "ユーザー名" diff --git a/locale/ko/gitlab.po b/locale/ko/gitlab.po index 416e0712a75..ce0c069712d 100644 --- a/locale/ko/gitlab.po +++ b/locale/ko/gitlab.po @@ -13,10 +13,10 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: ko\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:28\n" msgid " Status" -msgstr "" +msgstr " 상태" msgid " and" msgstr " 그리고" @@ -47,11 +47,11 @@ msgstr[0] "%d 내보내기" msgid "%d failed test result" msgid_plural "%d failed test results" -msgstr[0] "" +msgstr[0] "%d건의 테스트가 실패하였습니다." msgid "%d fixed test result" msgid_plural "%d fixed test results" -msgstr[0] "" +msgstr[0] "%d건의 테스트 결과를 고쳤습니다." msgid "%d issue" msgid_plural "%d issues" @@ -107,6 +107,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "%{group_docs_link_start}그룹%{group_docs_link_end}을 사용하면 여러 프로젝트를 관리하고 공동 작업을 수행 할 수 있습니다. 그룹 회원은 모든 프로젝트에 액세스 할 수 있습니다." +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "%{issuableType}이 삭제됩니다! 확실합니까?" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} 시작됨" @@ -148,25 +151,15 @@ msgstr "%{text} 사용 가능" msgid "%{title} changes" msgstr "%{title} 변경" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type} 에서 취약점 %{vulnerabilityCount} 개를 찾았습니다" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged} 건이 스테이징되지 않았고, %{staged} 건이 스테이징 되었습니다." +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + msgid "+ %{moreCount} more" msgstr "+ %{moreCount} 더" @@ -197,7 +190,7 @@ msgstr[0] "%d건의 머지리퀘스트 닫힘" msgid "1 group" msgid_plural "%d groups" -msgstr[0] "" +msgstr[0] "%d 그룹" msgid "1 merged merge request" msgid_plural "%d merged merge requests" @@ -224,25 +217,25 @@ msgid_plural "%d users" msgstr[0] "" msgid "1st contribution!" -msgstr "" +msgstr "첫번째 기여!" msgid "2FA enabled" msgstr "2FA 사용" msgid "403|Please contact your GitLab administrator to get the permission." -msgstr "403|권한을 얻으려면 GitLab 관리자에게 문의하십시오." +msgstr "권한을 얻으려면 GitLab 관리자에게 문의하십시오." msgid "403|You don't have the permission to access this page." -msgstr "403|이 페이지에 대한 액세스 권한이 없습니다." +msgstr "이 페이지에 대한 액세스 권한이 없습니다." msgid "404|Make sure the address is correct and the page hasn't moved." -msgstr "404|주소가 정확하고 페이지가 이동하지 않았는지 확인하십시오." +msgstr "주소가 정확하고 페이지가 이동하지 않았는지 확인하십시오." msgid "404|Page Not Found" -msgstr "404|페이지를 찾을 수 없습니다" +msgstr "페이지를 찾을 수 없습니다" msgid "404|Please contact your GitLab administrator if you think this is a mistake." -msgstr "404|이것이 실수에 의한 것이라고 생각한다면 GitLab 관리자에게 문의하세요." +msgstr "이것이 실수에 의한 것이라고 생각한다면 GitLab 관리자에게 문의하세요." msgid "\"johnsmith@example.com\": \"@johnsmith\" will add \"By @johnsmith\" to all issues and comments originally created by johnsmith@example.com, and will set @johnsmith as the assignee on all issues originally assigned to johnsmith@example.com." msgstr "" @@ -275,11 +268,17 @@ msgid "Removes source branch" msgstr "" msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." -msgstr "'러너(Runner)'는 작업을 실행하는 프로세스입니다. 필요한 만큼 러너를 셋업할 수 있습니다." +msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "지속적인 통합에 관한 그래프 모음" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -322,6 +321,9 @@ msgstr "액세스 토큰" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -347,7 +349,7 @@ msgid "Activity" msgstr "활동" msgid "Add" -msgstr "" +msgstr "추가" msgid "Add Changelog" msgstr "변경 로그 추가" @@ -359,10 +361,7 @@ msgid "Add Group Webhooks and GitLab Enterprise Edition." msgstr "" msgid "Add Kubernetes cluster" -msgstr "" - -msgid "Add License" -msgstr "라이선스 추가" +msgstr "Kubernetes 클러스터 추가" msgid "Add Readme" msgstr "" @@ -370,35 +369,41 @@ msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "라이선스 추가" + msgid "Add new application" -msgstr "" +msgstr "새 애플리케이션 추가" msgid "Add new directory" msgstr "새 디렉토리 추가" msgid "Add reaction" -msgstr "" +msgstr "반응 추가" msgid "Add todo" -msgstr "" +msgstr "할 일 추가" msgid "Add user(s) to the group:" msgstr "" msgid "Add users to group" +msgstr "그룹에 사용자 추가" + +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" msgstr "" msgid "Additional text" msgstr "" msgid "Admin Area" -msgstr "" +msgstr "관리자 영역" msgid "Admin Overview" msgstr "" msgid "Admin area" -msgstr "" +msgstr "관리자 영역" msgid "AdminArea| You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." msgstr "" @@ -407,19 +412,19 @@ msgid "AdminArea| You are about to permanently delete the user %{username}. This msgstr "" msgid "AdminArea|Stop all jobs" -msgstr "" +msgstr "모든 작업 중지" msgid "AdminArea|Stop all jobs?" -msgstr "" +msgstr "모든 작업을 중지하시겠습니까?" msgid "AdminArea|Stop jobs" -msgstr "" +msgstr "작업 중지" msgid "AdminArea|Stopping jobs failed" -msgstr "" +msgstr "작업 중지에 실패했습니다." msgid "AdminArea|You’re about to stop all jobs.This will halt all current jobs that are running." -msgstr "" +msgstr "모든 작업을 중지합니다. 현재 실행중인 모든 작업이 중지됩니다." msgid "AdminHealthPageLink|health page" msgstr "상태 페이지" @@ -428,13 +433,13 @@ msgid "AdminProjects| You’re about to permanently delete the project %{project msgstr "" msgid "AdminProjects|Delete" -msgstr "" +msgstr "삭제" msgid "AdminProjects|Delete Project %{projectName}?" -msgstr "" +msgstr "%{projectName} 프로젝트를 삭제하시겠습니까?" msgid "AdminProjects|Delete project" -msgstr "" +msgstr "프로젝트 삭제" msgid "AdminSettings|Specify a domain to use by default for every project's Auto Review Apps and Auto Deploy stages." msgstr "" @@ -455,7 +460,7 @@ msgid "AdminUsers|Delete user and contributions" msgstr "" msgid "AdminUsers|To confirm, type %{projectName}" -msgstr "" +msgstr "확인을 위해 %{projectName} 를 입력해주세요." msgid "AdminUsers|To confirm, type %{username}" msgstr "" @@ -470,13 +475,13 @@ msgid "All" msgstr "전체" msgid "All changes are committed" -msgstr "" +msgstr "모든 변경사항이 커밋되었습니다." msgid "All features are enabled for blank projects, from templates, or when importing, but you can disable them afterward in the project settings." msgstr "" msgid "All users" -msgstr "" +msgstr "모든 사용자" msgid "Allow commits from members who can merge to the target branch." msgstr "대상 브랜치에 머지할 수 있는 멤버의 커밋을 허용합니다." @@ -518,10 +523,10 @@ msgid "An error accured whilst committing your changes." msgstr "" msgid "An error has occurred" -msgstr "" +msgstr "에러가 발생했습니다." msgid "An error occured creating the new branch." -msgstr "" +msgstr "새 브랜치를 만드는 동안 오류가 발생했습니다." msgid "An error occured whilst fetching the job trace." msgstr "" @@ -530,13 +535,13 @@ msgid "An error occured whilst fetching the latest pipline." msgstr "" msgid "An error occured whilst loading all the files." -msgstr "" +msgstr "모든 파일을 로드하는 중에 오류가 발생했습니다." msgid "An error occured whilst loading the file content." -msgstr "" +msgstr "파일 내용을 로드하는 중에 오류가 발생했습니다." msgid "An error occured whilst loading the file." -msgstr "" +msgstr "파일을 로드하는 중에 오류가 발생했습니다." msgid "An error occured whilst loading the merge request changes." msgstr "" @@ -557,7 +562,7 @@ msgid "An error occurred when toggling the notification subscription" msgstr "" msgid "An error occurred when updating the issue weight" -msgstr "" +msgstr "이슈 중요도 업데이트 중 문제가 발생했습니다." msgid "An error occurred while adding approver" msgstr "" @@ -572,13 +577,13 @@ msgid "An error occurred while dismissing the feature highlight. Refresh the pag msgstr "기능 강조 표시를 해제하는 동안 오류가 발생했습니다. 페이지를 새로고침하고, 다시 시도해주세요." msgid "An error occurred while fetching markdown preview" -msgstr "" +msgstr "마크다운 미리보기를 가져 오는 중에 오류가 발생했습니다." msgid "An error occurred while fetching sidebar data" msgstr "" msgid "An error occurred while fetching stages." -msgstr "" +msgstr "스테이지를 가져 오는 중에 오류가 발생했습니다." msgid "An error occurred while fetching the job log." msgstr "" @@ -590,10 +595,10 @@ msgid "An error occurred while fetching the jobs." msgstr "" msgid "An error occurred while fetching the pipeline." -msgstr "" +msgstr "파이프라인을 반영하던 중 오류가 발생하였습니다." msgid "An error occurred while getting projects" -msgstr "" +msgstr "프로젝트를 가져오는 동안 오류가 발생 했습니다." msgid "An error occurred while importing project: %{details}" msgstr "" @@ -608,10 +613,10 @@ msgid "An error occurred while loading diff" msgstr "" msgid "An error occurred while loading filenames" -msgstr "" +msgstr "파일 이름을 로드하는 중 오류가 발생했습니다." msgid "An error occurred while loading the file" -msgstr "" +msgstr "파일 로드 중 오류가 발생하였습니다." msgid "An error occurred while making the request." msgstr "" @@ -635,13 +640,13 @@ msgid "An error occurred while saving LDAP override status. Please try again." msgstr "" msgid "An error occurred while saving assignees" -msgstr "" +msgstr "담당자를 저장하는 중 오류가 발생하였습니다." msgid "An error occurred while subscribing to notifications." -msgstr "" +msgstr "알림을 구독하는 중에 오류가 발생했습니다." msgid "An error occurred while unsubscribing to notifications." -msgstr "" +msgstr "알림 구독을 해제하는 중 오류가 발생했습니다." msgid "An error occurred while validating username" msgstr "" @@ -650,13 +655,13 @@ msgid "An error occurred. Please try again." msgstr "오류가 발생했습니다. 다시 시도해 주세요." msgid "Anonymous" -msgstr "" +msgstr "익명" msgid "Anti-spam verification" -msgstr "" +msgstr "안티 스팸 검증" msgid "Any" -msgstr "" +msgstr "Any" msgid "Any Label" msgstr "" @@ -665,7 +670,7 @@ msgid "Appearance" msgstr "" msgid "Application" -msgstr "" +msgstr "어플리케이션" msgid "Application Id" msgstr "" @@ -677,7 +682,7 @@ msgid "Applications" msgstr "어플리케이션" msgid "Apr" -msgstr "" +msgstr "4월" msgid "April" msgstr "" @@ -685,11 +690,14 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "이 파이프라인 스케쥴을 삭제 하시겠습니까?" msgid "Are you sure you want to lose unsaved changes?" -msgstr "" +msgstr "저장되지 않은 변경사항을 삭제하겠습니까?" msgid "Are you sure you want to regenerate the public key? You will have to update the public key on the remote server before mirroring will work again." msgstr "" @@ -716,13 +724,13 @@ msgid "Artifact ID" msgstr "" msgid "Artifacts" -msgstr "" +msgstr "결과물" msgid "Ascending" msgstr "" msgid "Ask your group maintainer to set up a group Runner." -msgstr "그룹 관리자에게 그룹 Runner 를 설정하도록 요청하세요" +msgstr "" msgid "Assertion consumer service URL" msgstr "" @@ -731,16 +739,16 @@ msgid "Assign custom color like #FF0000" msgstr "" msgid "Assign labels" -msgstr "" +msgstr "라벨 지정" msgid "Assign milestone" -msgstr "" +msgstr "마일스톤 지정" msgid "Assign to" msgstr "" msgid "Assigned Issues" -msgstr "" +msgstr "할당된 이슈" msgid "Assigned Merge Requests" msgstr "" @@ -749,10 +757,10 @@ msgid "Assigned to :name" msgstr "" msgid "Assigned to me" -msgstr "" +msgstr "나에게 할당 됨" msgid "Assignee" -msgstr "" +msgstr "담당자" msgid "Assignee lists not available with your current license" msgstr "" @@ -770,13 +778,13 @@ msgid "Audit Events" msgstr "" msgid "Aug" -msgstr "" +msgstr "8월" msgid "August" -msgstr "" +msgstr "8월" msgid "Authentication Log" -msgstr "" +msgstr "인증 로그" msgid "Authentication log" msgstr "" @@ -785,10 +793,10 @@ msgid "Authentication method" msgstr "" msgid "Author" -msgstr "" +msgstr "작성자" msgid "Authorization code:" -msgstr "" +msgstr "인증 코드:" msgid "Authorization was granted by entering your username and password in the application." msgstr "" @@ -797,7 +805,7 @@ msgid "Authorize" msgstr "" msgid "Authorize %{link_to_client} to use your account?" -msgstr "" +msgstr "%{link_to_client} 을 내 계정으로 인증하시겠어요?" msgid "Authorized At" msgstr "" @@ -809,10 +817,10 @@ msgid "Authors: %{authors}" msgstr "" msgid "Auto DevOps" -msgstr "" +msgstr "자동 DevOps" msgid "Auto DevOps enabled" -msgstr "" +msgstr "자동 DevOps 활성화됨" msgid "Auto DevOps, runners and job artifacts" msgstr "자동 DevOps, Runner 작업 artifacts" @@ -844,14 +852,17 @@ msgstr "애플리케이션의 빌드, 테스트, 배포가 사전에 정의된 C msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "더 알아보기 %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" msgid "AutoDevOps|add a Kubernetes cluster" -msgstr "" +msgstr "Kubernetes cluster 추가" msgid "AutoDevOps|enable Auto DevOps" -msgstr "AutoDevOps | Auto DevOps 활성화" +msgstr "Auto DevOps 활성화" msgid "Automatically marked as default internal user" msgstr "" @@ -866,13 +877,13 @@ msgid "Available group Runners : %{runners}." msgstr "사용 가능한 그룹 Runner: %{runners}." msgid "Avatar will be removed. Are you sure?" -msgstr "" +msgstr "아바타가 삭제됩니다. 확실합니까?" msgid "Average per day: %{average}" msgstr "" msgid "Background Color" -msgstr "" +msgstr "배경 색" msgid "Background Jobs" msgstr "" @@ -880,29 +891,26 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" -msgstr "" +msgstr "배지" msgid "Badges|A new badge was added." -msgstr "" +msgstr "새로운 배지가 추가되었습니다." msgid "Badges|Add badge" -msgstr "" +msgstr "배지 추가" msgid "Badges|Adding the badge failed, please check the entered URLs and try again." msgstr "" msgid "Badges|Badge image URL" -msgstr "" +msgstr "배지 이미지 URL" msgid "Badges|Badge image preview" -msgstr "" +msgstr "배지 이미지 미리 보기" msgid "Badges|Delete badge" -msgstr "" +msgstr "배지 삭제" msgid "Badges|Delete badge?" msgstr "" @@ -911,31 +919,31 @@ msgid "Badges|Deleting the badge failed, please try again." msgstr "" msgid "Badges|Group Badge" -msgstr "" +msgstr "그룹 배지" msgid "Badges|Link" -msgstr "" +msgstr "링크" msgid "Badges|No badge image" msgstr "" msgid "Badges|No image to preview" -msgstr "" +msgstr "미리 볼 이미지가 없습니다" msgid "Badges|Please fill in a valid URL" msgstr "" msgid "Badges|Project Badge" -msgstr "" +msgstr "프로젝트 배지" msgid "Badges|Reload badge image" msgstr "" msgid "Badges|Save changes" -msgstr "" +msgstr "변경 사항 저장" msgid "Badges|Saving the badge failed, please check the entered URLs and try again." -msgstr "" +msgstr "배지 저장 실패, 입력한 URL을 확인하시고 다시 시도하십시오." msgid "Badges|The %{docsLinkStart}variables%{docsLinkEnd} GitLab supports: %{placeholders}" msgstr "" @@ -956,7 +964,7 @@ msgid "Badges|You are going to delete this badge. Deleted badges cannot< msgstr "" msgid "Badges|Your badges" -msgstr "" +msgstr "내 배지" msgid "Badges|e.g. %{exampleUrl}" msgstr "" @@ -971,7 +979,7 @@ msgid "Below you will find all the groups that are public." msgstr "" msgid "Billing" -msgstr "" +msgstr "결제" msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." msgstr "" @@ -980,22 +988,22 @@ msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently n msgstr "" msgid "BillingPlans|Current plan" -msgstr "" +msgstr "현재 요금제" msgid "BillingPlans|Customer Support" -msgstr "" +msgstr "고객 지원" msgid "BillingPlans|Downgrade" -msgstr "" +msgstr "다운그레이드" msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}, or start a free 30-day trial of GitLab.com Gold." -msgstr "" +msgstr "%{faq_link}을 읽음으로써 플랜에 대해 더 자세히 알아보거나 GitLab.com Gold 무료 30 일 평가판을 시작하세요." msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "" +msgstr "%{faq_link} 을 읽어 플랜에 대해 자세히 알아보십시오." msgid "BillingPlans|Manage plan" -msgstr "" +msgstr "플랜 관리" msgid "BillingPlans|Please contact %{customer_support_link} in that case." msgstr "" @@ -1010,31 +1018,31 @@ msgid "BillingPlans|To manage the plan for this group, visit the billing section msgstr "" msgid "BillingPlans|Upgrade" -msgstr "" +msgstr "업그레이드" msgid "BillingPlans|You are currently on the %{plan_link} plan." -msgstr "" +msgstr "현재 %{plan_link} 플랜을 이용중입니다." msgid "BillingPlans|Your GitLab.com trial expired on %{expiration_date}. %{learn_more_text}" -msgstr "" +msgstr "GitLab.com 평가판이 %{expiration_date}에 만료되었습니다. %{learn_more_text}" msgid "BillingPlans|Your Gold trial will expire after %{expiration_date}. You can learn more about GitLab.com Gold by reading about our %{features_link}." -msgstr "" +msgstr "골드 체험판이 %{expiration_date} 후에 만료됩니다.. GitLab.com Gold에 대한 자세한 정보는 %{features_link}에서 읽어볼 수 있습니다." msgid "BillingPlans|features" -msgstr "" +msgstr "기능" msgid "BillingPlans|frequently asked questions" -msgstr "" +msgstr "자주 묻는 질문" msgid "BillingPlans|monthly" -msgstr "" +msgstr "월" msgid "BillingPlans|paid annually at %{price_per_year}" msgstr "" msgid "BillingPlans|per user" -msgstr "" +msgstr "사용자 당" msgid "Bitbucket Server Import" msgstr "" @@ -1083,7 +1091,7 @@ msgid "Branches|Active branches" msgstr "" msgid "Branches|All" -msgstr "" +msgstr "모두" msgid "Branches|Cant find HEAD commit for this branch" msgstr "" @@ -1119,7 +1127,7 @@ msgid "Branches|Merged into %{default_branch}" msgstr "" msgid "Branches|New branch" -msgstr "" +msgstr "새 브랜치" msgid "Branches|No branches to show" msgstr "" @@ -1128,25 +1136,25 @@ msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot msgstr "" msgid "Branches|Only a project maintainer or owner can delete a protected branch" -msgstr "" +msgstr "프로젝트 관리자 또는 소유자 만 보호 브랜치를 삭제할 수 있습니다." msgid "Branches|Overview" -msgstr "" +msgstr "개요" msgid "Branches|Protected branches can be managed in %{project_settings_link}." -msgstr "" +msgstr "보호된 브랜치는 %{project_settings_link} 에서 관리할 수 있습니다." msgid "Branches|Show active branches" -msgstr "" +msgstr "활성된 브랜치 보기" msgid "Branches|Show all branches" -msgstr "" +msgstr "모든 브랜치 보기" msgid "Branches|Show more active branches" -msgstr "" +msgstr "활성된 브랜치 더 보기" msgid "Branches|Show more stale branches" -msgstr "" +msgstr "안정화된 브랜치 더 보기" msgid "Branches|Show overview of the branches" msgstr "" @@ -1233,16 +1241,16 @@ msgid "CI/CD configuration" msgstr "" msgid "CI/CD for external repo" -msgstr "" +msgstr "외부 저장소용 CI/CD" msgid "CI/CD settings" msgstr "CI/CD 설정" msgid "CICD|Auto DevOps" -msgstr "CICD|Auto DevOps" +msgstr "Auto DevOps" msgid "CICD|Auto DevOps will automatically build, test, and deploy your application based on a predefined Continuous Integration and Delivery configuration." -msgstr "CICD|Auto DevOps는 사전에 정의된 Continuous Integration과 Delivery 설정을 바탕으로하여 자동으로 빌드, 테스트 그리고 배포를 수행합니다." +msgstr "Auto DevOps는 사전에 정의된 Continuous Integration과 Delivery 설정을 바탕으로하여 자동으로 빌드, 테스트 그리고 배포를 수행합니다." msgid "CICD|Automatic deployment to staging, manual deployment to production" msgstr "" @@ -1254,19 +1262,19 @@ msgid "CICD|Default to Auto DevOps pipeline" msgstr "" msgid "CICD|Deployment strategy" -msgstr "" +msgstr "배포 전략" msgid "CICD|Deployment strategy needs a domain name to work correctly." -msgstr "" +msgstr "배포 전략이 올바르게 작동하려면 도메인 이름이 필요합니다." msgid "CICD|Do not set up a domain here if you are setting up multiple Kubernetes clusters with Auto DevOps." msgstr "" msgid "CICD|Jobs" -msgstr "" +msgstr "작업" msgid "CICD|Learn more about Auto DevOps" -msgstr "CICD|Auto DevOps에 대해 더 알아보기" +msgstr "Auto DevOps에 대해 더 알아보기" msgid "CICD|The Auto DevOps pipeline will run if no alternative CI configuration file is found." msgstr "" @@ -1275,13 +1283,13 @@ msgid "CICD|You need to specify a domain if you want to use Auto Review Apps and msgstr "" msgid "CICD|instance enabled" -msgstr "" +msgstr "인스턴스 사용" msgid "Callback URL" -msgstr "" +msgstr "콜백 URL" msgid "Callback url" -msgstr "" +msgstr "콜백 url" msgid "Can't find HEAD commit for this branch" msgstr "" @@ -1290,13 +1298,13 @@ msgid "Cancel" msgstr "취소" msgid "Cancel this job" -msgstr "" +msgstr "이 작업 취소" msgid "Cannot be merged automatically" msgstr "" msgid "Cannot modify managed Kubernetes cluster" -msgstr "" +msgstr "이미 구성된 Kubernetes 클러스터는 수정할 수 없습니다" msgid "Certificate fingerprint" msgstr "" @@ -1341,10 +1349,10 @@ msgid "Check interval" msgstr "" msgid "Checking %{text} availability…" -msgstr "" +msgstr "%{text}이(가) 사용 가능한지 확인 중…" msgid "Checking branch availability..." -msgstr "" +msgstr "브랜치가 사용 가능한지 확인 중..." msgid "Cherry-pick this commit" msgstr "이 커밋을 Cherry-pick" @@ -1359,19 +1367,25 @@ msgid "Choose Next at the bottom of the page." msgstr "" msgid "Choose File ..." -msgstr "" +msgstr "파일 선택 ..." msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" -msgid "Choose any color." +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." msgstr "" +msgid "Choose any color." +msgstr "아무 색상을 선택해 주세요." + msgid "Choose between clone or fetch to get the recent application code" msgstr "" msgid "Choose file..." -msgstr "" +msgstr "파일 선택…" msgid "Choose the top-level group for your repository imports." msgstr "" @@ -1383,7 +1397,7 @@ msgid "Choose which repositories you want to connect and run CI/CD pipelines." msgstr "" msgid "Choose which repositories you want to import." -msgstr "" +msgstr "가져올 저장소를 선택해주세요." msgid "Choose which shards you wish to synchronize to this secondary node." msgstr "" @@ -1503,7 +1517,7 @@ msgid "Click the button below to begin the install process by navigating to the msgstr "" msgid "Click to expand it." -msgstr "" +msgstr "클릭하여 확장하십시오." msgid "Click to expand text" msgstr "텍스트를 클릭하여 확장하세요." @@ -1524,13 +1538,16 @@ msgid "Clone repository" msgstr "" msgid "Close" +msgstr "닫기" + +msgid "Close epic" msgstr "" msgid "Closed" -msgstr "" +msgstr "닫힘" msgid "Closed issues" -msgstr "" +msgstr "닫힌 이슈" msgid "ClusterIntegration|%{appList} was successfully installed on your Kubernetes cluster" msgstr "" @@ -1542,16 +1559,16 @@ msgid "ClusterIntegration|API URL" msgstr "" msgid "ClusterIntegration|Add Kubernetes cluster" -msgstr "" +msgstr "Kubernetes 클러스터 추가" msgid "ClusterIntegration|Advanced options on this Kubernetes cluster's integration" -msgstr "" +msgstr "Kubernetes 클러스터 통합에 대한 고급 옵션" msgid "ClusterIntegration|After installing Ingress, you will need to point your wildcard DNS at the generated external IP address in order to view your app after it is deployed. %{ingressHelpLink}" msgstr "" msgid "ClusterIntegration|An error occured while trying to fetch project zones: %{error}" -msgstr "" +msgstr "프로젝트 영역을 가져 오는 동안 오류가 발생했습니다: %{error}" msgid "ClusterIntegration|An error occured while trying to fetch your projects: %{error}" msgstr "" @@ -1563,7 +1580,7 @@ msgid "ClusterIntegration|An error occurred when trying to contact the Google Cl msgstr "" msgid "ClusterIntegration|Applications" -msgstr "" +msgstr "애플리케이션" msgid "ClusterIntegration|Are you sure you want to remove this Kubernetes cluster's integration? This will not delete your actual Kubernetes cluster." msgstr "" @@ -1574,10 +1591,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1604,6 +1621,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "Kubernetes 클러스터의 세부 정보 입력" @@ -1670,9 +1693,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1706,20 +1726,11 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Kubernetes 클러스터 통합" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "이 프로젝트에 대해 Kubernetes 클러스터 통합이 비활성화되어있습니다." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "이 프로젝트에 대해 Kubernetes 클러스터 통합이 활성화되어있습니다." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "Kubernetes 클러스터 통합이 활성화되어있습니다. 이 통합을 비활성화해도 기존 Kubernetes 클러스터에 영향을 주지는 않고 GitLab의 연결을 일시적으로만 해제합니다." - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "Kubernetes 클러스터가 Google Kubernetes Engine에서 생성 중입니다..." msgid "ClusterIntegration|Kubernetes cluster name" -msgstr "" +msgstr "Kubernetes 클러스터 이름" msgid "ClusterIntegration|Kubernetes cluster was successfully created on Google Kubernetes Engine. Refresh the page to see Kubernetes cluster's details" msgstr "" @@ -1739,12 +1750,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "환경에 대해 자세히 알아보십시오." - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "머신 타입" @@ -1752,13 +1757,13 @@ msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to crea msgstr "Kubernetes 클러스터를 만들려면 %{link_to_requirements} 링크에서 계정의 필수사항을 확인하세요." msgid "ClusterIntegration|Manage" -msgstr "" +msgstr "관리" msgid "ClusterIntegration|Manage your Kubernetes cluster by visiting %{link_gke}" msgstr "" msgid "ClusterIntegration|More information" -msgstr "" +msgstr "더 많은 정보" msgid "ClusterIntegration|Multiple Kubernetes clusters are available in GitLab Enterprise Edition Premium and Ultimate" msgstr "" @@ -1767,7 +1772,7 @@ msgid "ClusterIntegration|No machine types matched your search" msgstr "" msgid "ClusterIntegration|No projects found" -msgstr "" +msgstr "프로젝트 없음" msgid "ClusterIntegration|No projects matched your search" msgstr "" @@ -1802,6 +1807,9 @@ msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "Kubernetes 클러스터 통합 알아보기 %{link_to_help_page}" @@ -1827,14 +1835,11 @@ msgid "ClusterIntegration|Search machine types" msgstr "" msgid "ClusterIntegration|Search projects" -msgstr "" +msgstr "ClusterIntegration|프로젝트 검색" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Kubernetes 클러스터의 세부 정보 보기 및 수정" @@ -1842,7 +1847,7 @@ msgid "ClusterIntegration|Select machine type" msgstr "" msgid "ClusterIntegration|Select project" -msgstr "" +msgstr "프로젝트 선택" msgid "ClusterIntegration|Select project and zone to choose machine type" msgstr "" @@ -1874,12 +1879,15 @@ msgstr "설치하는 동안 문제가 발생했습니다. %{title}" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "%{link_to_container_project} 프로젝트에 Kubernetes 클러스터를 만들기 위해서는 이 계정에 아래에 명시된 권한이 필요합니다" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "Kubernetes 클러스터 토글" @@ -1898,6 +1906,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "이 프로젝트에 연결된 Kubernetes 클러스터를 통해 어플리케이션을 리뷰, 배포할 수 있고, 파이프라인을 실행할 수 있습니다. 그 외에도 많은 일을 훨씬 쉬운 방법으로 수행할 수 있습니다." +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1916,9 +1927,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "도움말 페이지" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "요구 사항을 충족" @@ -1928,6 +1936,9 @@ msgstr "정상적으로 구성되었음" msgid "ClusterIntegration|sign up" msgstr "ClusterIntegration|가입" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -1975,6 +1986,9 @@ msgstr "커밋" msgid "CommitMessage|Add %{file_name}" msgstr "%{file_name} 추가" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "커밋" @@ -2047,35 +2061,29 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" msgid "Connect" -msgstr "" +msgstr "연결" msgid "Connect all repositories" -msgstr "" +msgstr "모든 저장소 연결" msgid "Connect repositories from GitHub" -msgstr "" +msgstr "GitHub으로부터 저장소 연결" msgid "Connect your external repositories, and CI/CD pipelines will run for new commits. A GitLab project will be created with only CI/CD features enabled." msgstr "" @@ -2149,6 +2157,9 @@ msgstr "" msgid "Contribution guide" msgstr "기여에 대한 안내" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2165,7 +2176,7 @@ msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limi msgstr "" msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." -msgstr "" +msgstr "잠시만 기다려주십시오, 이 페이지는 준비가 완료되면 자동으로 새로고침됩니다." msgid "Control the display of third party offers." msgstr "" @@ -2182,6 +2193,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2213,7 +2233,7 @@ msgid "Copy token to clipboard" msgstr "" msgid "Create" -msgstr "" +msgstr "만들기" msgid "Create New Directory" msgstr "새 디렉토리 만들기" @@ -2267,7 +2287,7 @@ msgid "Create merge request and branch" msgstr "" msgid "Create new branch" -msgstr "" +msgstr "새 브랜치 생성" msgid "Create new directory" msgstr "새 디렉토리 만들기" @@ -2276,10 +2296,10 @@ msgid "Create new file" msgstr "새 파일 만들기" msgid "Create new file or directory" -msgstr "" +msgstr "새 파일 또는 디렉토리 만들기" msgid "Create new label" -msgstr "" +msgstr "새 라벨 만들기" msgid "Create new..." msgstr "새로 만들기 ..." @@ -2287,9 +2307,6 @@ msgstr "새로 만들기 ..." msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "포크" - msgid "CreateTag|Tag" msgstr "태그" @@ -2303,7 +2320,7 @@ msgid "Created At" msgstr "" msgid "Created by me" -msgstr "" +msgstr "나에 의해 생성됨" msgid "Created on" msgstr "" @@ -2327,10 +2344,10 @@ msgid "Current node" msgstr "" msgid "CurrentUser|Profile" -msgstr "CurrentUser|프로파일" +msgstr "프로파일" msgid "CurrentUser|Settings" -msgstr "CurrentUser|설정" +msgstr "설정" msgid "Custom" msgstr "" @@ -2384,7 +2401,7 @@ msgid "CycleAnalyticsStage|Test" msgstr "테스트" msgid "Dashboard" -msgstr "" +msgstr "대시보드" msgid "DashboardProjects|All" msgstr "모든" @@ -2399,7 +2416,7 @@ msgid "Debug" msgstr "" msgid "Dec" -msgstr "" +msgstr "12월" msgid "December" msgstr "" @@ -2407,6 +2424,9 @@ msgstr "" msgid "Decline and sign out" msgstr "취소 및 로그아웃" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2445,52 +2465,52 @@ msgid "Deploy Keys" msgstr "배포 키" msgid "DeployKeys|+%{count} others" -msgstr "DeployKeys|+%{count} 기타" +msgstr "+%{count} 기타" msgid "DeployKeys|Current project" -msgstr "DeployKeys|현재 프로젝트" +msgstr "현재 프로젝트" msgid "DeployKeys|Deploy key" -msgstr "DeployKeys|배포 키" +msgstr "배포 키" msgid "DeployKeys|Enabled deploy keys" -msgstr "DeployKeys|활성화된 배포 키" +msgstr "활성화된 배포 키" msgid "DeployKeys|Error enabling deploy key" -msgstr "DeployKeys|배포키 사용 오류" +msgstr "배포키 사용 오류" msgid "DeployKeys|Error getting deploy keys" -msgstr "DeployKeys|배포키 가져오기 오류" +msgstr "배포키 가져오기 오류" msgid "DeployKeys|Error removing deploy key" -msgstr "DeployKeys|배포키 제거 오류" +msgstr "배포키 제거 오류" msgid "DeployKeys|Expand %{count} other projects" msgstr "DeployKeys|확장 %{count} 기타 프로젝트" msgid "DeployKeys|Loading deploy keys" -msgstr "DeployKeys|배포키 로드" +msgstr "배포키 로드" msgid "DeployKeys|No deploy keys found. Create one with the form above." -msgstr "DeployKeys|배포키가 존재하지 않습니다. 위의 양식을 이용해 만드세요." +msgstr "배포키가 존재하지 않습니다. 위의 양식을 이용해 만드세요." msgid "DeployKeys|Privately accessible deploy keys" -msgstr "DeployKeys|비공개적으로 엑세스 가능한 배포키" +msgstr "비공개적으로 엑세스 가능한 배포키" msgid "DeployKeys|Project usage" -msgstr "DeployKeys|프로젝트 사용현황" +msgstr "프로젝트 사용현황" msgid "DeployKeys|Publicly accessible deploy keys" -msgstr "DeployKeys|공개적으로 엑세스 가능한 배포키" +msgstr "공개적으로 엑세스 가능한 배포키" msgid "DeployKeys|Read access only" -msgstr "DeployKeys|읽기 엑세스 전용" +msgstr "읽기 엑세스 전용" msgid "DeployKeys|Write access allowed" -msgstr "DeployKeys|쓰기 액세스 허용" +msgstr "쓰기 액세스 허용" msgid "DeployKeys|You are going to remove this deploy key. Are you sure?" -msgstr "DeployKeys|이 배포키를 제거하려고 합니다. 확실합니까?" +msgstr "이 배포키를 제거하려고 합니다. 확실합니까?" msgid "DeployTokens|Active Deploy Tokens (%{active_tokens})" msgstr "" @@ -2609,9 +2629,21 @@ msgstr "이 프로젝트에 대해 사용 중지" msgid "Disable group Runners" msgstr "그룹 Runner 사용 중지" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "변경 사항을 취소" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2622,7 +2654,7 @@ msgid "Discover projects, groups and snippets. Share your projects with others" msgstr "" msgid "Dismiss" -msgstr "" +msgstr "닫기" msgid "Dismiss Cycle Analytics introduction box" msgstr "사이클 분석 소개 박스 제거" @@ -2643,7 +2675,7 @@ msgid "Don't show again" msgstr "다시 표시하지 않음" msgid "Done" -msgstr "" +msgstr "완료" msgid "Download" msgstr "다운로드" @@ -2703,19 +2735,19 @@ msgid "Edit files in the editor and commit changes here" msgstr "" msgid "Edit group: %{group_name}" -msgstr "" +msgstr "그룹 편집: %{group_name}" msgid "Edit identity for %{user_name}" msgstr "" msgid "Elasticsearch" -msgstr "" +msgstr "Elasticsearch" msgid "Elasticsearch intergration. Elasticsearch AWS IAM." msgstr "" msgid "Email" -msgstr "" +msgstr "이메일" msgid "Email patch" msgstr "" @@ -2727,10 +2759,10 @@ msgid "Embed" msgstr "" msgid "Enable" -msgstr "" +msgstr "사용" msgid "Enable Auto DevOps" -msgstr "" +msgstr "자동 DevOps 활성화" msgid "Enable Pseudonymizer data collection" msgstr "" @@ -2771,9 +2803,15 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" -msgid "Enabled" +msgid "Enable usage ping" msgstr "" +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + +msgid "Enabled" +msgstr "활성화됨" + msgid "Ends at (UTC)" msgstr "" @@ -2781,10 +2819,10 @@ msgid "Enter in your Bitbucket Server URL and personal access token below" msgstr "" msgid "Enter the issue description" -msgstr "" +msgstr "이슈 설명 입력" msgid "Enter the issue title" -msgstr "" +msgstr "이슈 제목 입력" msgid "Enter the merge request description" msgstr "" @@ -2808,7 +2846,7 @@ msgid "Environments|Are you sure you want to stop this environment?" msgstr "" msgid "Environments|Commit" -msgstr "" +msgstr "커밋" msgid "Environments|Deploy to..." msgstr "" @@ -2826,7 +2864,7 @@ msgid "Environments|Environments are places where code gets deployed, such as st msgstr "" msgid "Environments|Job" -msgstr "" +msgstr "작업" msgid "Environments|Learn more about stopping environments" msgstr "" @@ -2865,10 +2903,10 @@ msgid "Environments|Show all" msgstr "" msgid "Environments|Stop" -msgstr "" +msgstr "중지" msgid "Environments|Stop environment" -msgstr "" +msgstr "중지 환경" msgid "Environments|Updated" msgstr "" @@ -2877,10 +2915,10 @@ msgid "Environments|You don't have any environments right now." msgstr "" msgid "Environments|protected" -msgstr "" +msgstr "보호됨" msgid "Epic" -msgstr "" +msgstr "에픽" msgid "Epic will be removed! Are you sure?" msgstr "" @@ -2906,14 +2944,14 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" -msgstr "" +msgstr "시작" msgid "Error" msgstr "" @@ -3009,22 +3047,25 @@ msgid "Every week (Sundays at 4:00am)" msgstr "매주 (일요일 오전 4시에)" msgid "Everyone can contribute" -msgstr "" +msgstr "모두가 기여할 수 있음." msgid "Expand" -msgstr "" +msgstr "펼치기" msgid "Expand all" -msgstr "" +msgstr "모두 확장" msgid "Expand sidebar" msgstr "사이드바 확장" -msgid "Explore" +msgid "Expiration date" msgstr "" +msgid "Explore" +msgstr "탐색" + msgid "Explore GitLab" -msgstr "" +msgstr "GitLab 둘러보기" msgid "Explore Groups" msgstr "" @@ -3060,10 +3101,10 @@ msgid "ExternalAuthorizationService|When no classification label is set the defa msgstr "" msgid "Facebook" -msgstr "" +msgstr "Facebook" msgid "Failed" -msgstr "" +msgstr "실패" msgid "Failed Jobs" msgstr "" @@ -3093,7 +3134,7 @@ msgid "Faster as it re-uses the project workspace (falling back to clone if it d msgstr "" msgid "Feb" -msgstr "" +msgstr "2월" msgid "February" msgstr "" @@ -3101,6 +3142,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "파일" @@ -3113,9 +3157,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "커밋 메시지로 필터" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "경로로 찾기" @@ -3143,7 +3196,7 @@ msgstr "푸시한 사용자" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3182,16 +3235,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "포크" - msgid "ForkedFromProjectPath|Forked from" msgstr "포크한 사용자" @@ -3202,10 +3254,10 @@ msgid "Forking in progress" msgstr "" msgid "Format" -msgstr "" +msgstr "포맷" msgid "Found errors in your .gitlab-ci.yml:" -msgstr "" +msgstr ".gitlab-ci.yml에서 오류를 발견했습니다:" msgid "From %{provider_title}" msgstr "" @@ -3249,6 +3301,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3426,6 +3481,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3468,6 +3526,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3480,6 +3541,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3507,6 +3571,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3522,11 +3592,14 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" -msgid "Git" +msgid "Get a free instance review" msgstr "" +msgid "Git" +msgstr "Git" + msgid "Git repository URL" -msgstr "" +msgstr "Git 저장소 URL" msgid "Git revision" msgstr "Git 리비전" @@ -3538,10 +3611,10 @@ msgid "Git strategy for pipelines" msgstr "" msgid "Git version" -msgstr "" +msgstr "Git 버전" msgid "GitHub import" -msgstr "" +msgstr "GitHub 가져오기" msgid "GitLab CI Linter has been moved" msgstr "" @@ -3571,16 +3644,16 @@ msgid "GitLab.com import" msgstr "" msgid "GitLab’s issue tracker" -msgstr "" +msgstr "GitLab의 이슈 트래커" msgid "Gitaly" -msgstr "" +msgstr "Gitaly" msgid "Gitaly Servers" msgstr "Gitaly 서버" msgid "Gitaly|Address" -msgstr "" +msgstr "주소" msgid "Gitea Host URL" msgstr "" @@ -3589,28 +3662,22 @@ msgid "Gitea Import" msgstr "" msgid "Go Back" -msgstr "" +msgstr "이전으로" msgid "Go back" -msgstr "" +msgstr "뒤로 가기" msgid "Go to" msgstr "" msgid "Go to %{link_to_google_takeout}." -msgstr "" - -msgid "Go to your fork" -msgstr "당신의 포크로 이동하세요" - -msgid "GoToYourFork|Fork" -msgstr "포크" +msgstr "%{link_to_google_takeout}로 이동하십시오." msgid "Google Code import" -msgstr "" +msgstr "Google Code 가져오기" msgid "Google Takeout" -msgstr "" +msgstr "Google Takeout" msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service." msgstr "Google 인증을 사용할 수 없습니다. %{link_to_documentation} GitLab 관리자에게 문의하세요." @@ -3622,7 +3689,7 @@ msgid "Graph" msgstr "그래프" msgid "Group" -msgstr "" +msgstr "그룹" msgid "Group CI/CD settings" msgstr "그룹 CI/CD 설정" @@ -3637,13 +3704,13 @@ msgid "Group Runners" msgstr "그룹 Runner" msgid "Group avatar" -msgstr "" +msgstr "그룹 아바타" msgid "Group details" -msgstr "" +msgstr "그룹 세부 정보" msgid "Group info:" -msgstr "" +msgstr "그룹 정보:" msgid "Group maintainers can register group runners in the %{link}" msgstr "" @@ -3666,13 +3733,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3759,6 +3826,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3771,20 +3841,20 @@ msgstr "그룹 편집" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "이 그룹 떠나기" msgid "GroupsTree|Loading groups" msgstr "그룹 로딩중입니다" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "죄송합니다, 검색과 일치하는 그룹이 없습니다" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "죄송합니다, 검색과 일치하는 그룹 혹은 프록젝트가 없습니다" +msgid "GroupsTree|Search by name" +msgstr "" msgid "Have your users email" msgstr "" @@ -3811,7 +3881,7 @@ msgid "HealthCheck|Unhealthy" msgstr "비정상" msgid "Help" -msgstr "" +msgstr "도움말" msgid "Help page" msgstr "" @@ -3825,6 +3895,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -3845,7 +3918,7 @@ msgid "I accept the|Terms of Service and Privacy Policy" msgstr "" msgid "ID" -msgstr "" +msgstr "ID" msgid "IDE|Allow live previews of JavaScript projects in the Web IDE using CodeSandbox client side evaluation." msgstr "" @@ -3857,10 +3930,10 @@ msgid "IDE|Client side evaluation" msgstr "" msgid "IDE|Commit" -msgstr "IDE|커밋" +msgstr "커밋" msgid "IDE|Edit" -msgstr "IDE|편집" +msgstr "편집" msgid "IDE|Get started with Live Preview" msgstr "" @@ -3884,7 +3957,7 @@ msgid "IDE|Review" msgstr "리뷰" msgid "IP Address" -msgstr "" +msgstr "IP 주소" msgid "Identifier" msgstr "" @@ -3902,7 +3975,7 @@ msgid "If disabled, the access level will depend on the user's permissions in th msgstr "" msgid "If enabled" -msgstr "" +msgstr "만약 활성화 된 경우" msgid "If enabled, access to projects will be validated on an external service using their classification label." msgstr "" @@ -3914,7 +3987,7 @@ msgid "If you already have files you can push them using the %{link_to_cli} belo msgstr "" msgid "If your HTTP repository is not publicly accessible, add authentication information to the URL: https://username:password@gitlab.company.com/group/project.git." -msgstr "" +msgstr "HTTP 저장소를 공개적으로 액세스할 수 없는 경우, URL에 인증 정보를 추가하십시오:https://username:password@gitlab.company.com/group/project.git." msgid "ImageDiffViewer|2-up" msgstr "" @@ -3926,19 +3999,19 @@ msgid "ImageDiffViewer|Swipe" msgstr "" msgid "Import" -msgstr "" +msgstr "가져오기" msgid "Import Projects from Gitea" msgstr "" msgid "Import all compatible projects" -msgstr "" +msgstr "호환되는 모든 프로젝트 가져오기" msgid "Import all projects" -msgstr "" +msgstr "모든 프로젝트 가져오기" msgid "Import all repositories" -msgstr "" +msgstr "모든 저장소 가져오기" msgid "Import an exported GitLab project" msgstr "" @@ -3950,7 +4023,7 @@ msgid "Import multiple repositories by uploading a manifest file." msgstr "" msgid "Import project" -msgstr "" +msgstr "프로젝트 가져오기" msgid "Import projects from Bitbucket" msgstr "" @@ -3988,6 +4061,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -3998,7 +4074,7 @@ msgid "Include the username in the URL if required: https://username@gitla msgstr "" msgid "Incompatible Project" -msgstr "" +msgstr "호환되지 않는 프로젝트" msgid "Indicates whether this runner can pick jobs without tags" msgstr "" @@ -4055,6 +4131,12 @@ msgstr "주기 패턴" msgid "Introducing Cycle Analytics" msgstr "Cycle Analytics 소개" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4065,10 +4147,10 @@ msgid "Issue events" msgstr "이슈 이벤트" msgid "IssueBoards|Board" -msgstr "" +msgstr "보드" msgid "IssueBoards|Boards" -msgstr "" +msgstr "보드" msgid "Issues" msgstr "이슈" @@ -4080,40 +4162,37 @@ msgid "Issues closed" msgstr "" msgid "Jan" -msgstr "" +msgstr "1월" msgid "January" msgstr "" msgid "Job" -msgstr "" +msgstr "Job" msgid "Job has been erased" msgstr "" msgid "Jobs" -msgstr "" - -msgid "Job|Are you sure you want to erase this job?" -msgstr "" +msgstr "Jobs" msgid "Job|Browse" -msgstr "" +msgstr "탐색" msgid "Job|Complete Raw" msgstr "" msgid "Job|Download" -msgstr "" +msgstr "다운로드" msgid "Job|Erase job log" -msgstr "" +msgstr "작업 로그 지우기" msgid "Job|Job artifacts" msgstr "" msgid "Job|Job has been erased" -msgstr "" +msgstr "작업이 삭제되었습니다" msgid "Job|Job has been erased by" msgstr "" @@ -4133,26 +4212,26 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." msgstr "" msgid "Jul" -msgstr "" +msgstr "7월" msgid "July" -msgstr "" +msgstr "7월" msgid "Jun" -msgstr "" +msgstr "6월" msgid "June" -msgstr "" +msgstr "6월" msgid "Koding" -msgstr "" +msgstr "Koding" msgid "Koding Dashboard" msgstr "" @@ -4182,7 +4261,7 @@ msgid "Kubernetes service integration has been deprecated. %{deprecated_message_ msgstr "Kubernetes 서비스 통합은 더 이상 사용되지 않습니다. %{deprecated_message_content} 새로운 Kubernetes 클러스터 페이지" msgid "LFS" -msgstr "" +msgstr "LFS" msgid "LFSStatus|Disabled" msgstr "Disabled" @@ -4239,6 +4318,9 @@ msgstr "최근 파이프라인" msgid "Last commit" msgstr "최근 커밋" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4291,7 +4373,7 @@ msgid "Leave the \"File type\" and \"Delivery method\" options on their default msgstr "" msgid "License" -msgstr "" +msgstr "라이센스" msgid "LicenseManagement|Approve license" msgstr "" @@ -4312,13 +4394,13 @@ msgid "LicenseManagement|Blacklisted" msgstr "" msgid "LicenseManagement|License" -msgstr "" +msgstr "라이센스" msgid "LicenseManagement|License Management" -msgstr "" +msgstr "라이센스 관리" msgid "LicenseManagement|License details" -msgstr "" +msgstr "라이선스 정보" msgid "LicenseManagement|Manage approved and blacklisted licenses for this project." msgstr "" @@ -4327,7 +4409,7 @@ msgid "LicenseManagement|Packages" msgstr "" msgid "LicenseManagement|Remove license" -msgstr "" +msgstr "라이센스 제거" msgid "LicenseManagement|Remove license?" msgstr "" @@ -4342,17 +4424,17 @@ msgid "LicenseManagement|You are about to remove the license, %{name}, from this msgstr "" msgid "Licenses" -msgstr "" +msgstr "라이센스" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" msgstr[0] "" msgid "LinkedIn" -msgstr "" +msgstr "LinkedIn" msgid "List" -msgstr "" +msgstr "목록" msgid "List Your Gitea Repositories" msgstr "" @@ -4367,19 +4449,19 @@ msgid "List your GitHub repositories" msgstr "" msgid "Live preview" -msgstr "" +msgstr "실시간 미리보기" msgid "Loading contribution stats for group members" msgstr "" msgid "Loading the GitLab IDE..." -msgstr "" +msgstr "GitLab IDE 로드 중..." msgid "Loading..." msgstr "" msgid "Lock" -msgstr "" +msgstr "잠금" msgid "Lock %{issuableDisplayName}" msgstr "%{issuableDisplayName} 잠금" @@ -4394,7 +4476,7 @@ msgid "Lock to current projects" msgstr "" msgid "Locked" -msgstr "" +msgstr "잠김" msgid "Locked Files" msgstr "" @@ -4463,7 +4545,7 @@ msgid "Map a Google Code user to a full name" msgstr "" msgid "Mar" -msgstr "" +msgstr "3월" msgid "March" msgstr "" @@ -4480,6 +4562,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4487,7 +4572,7 @@ msgid "Maximum job timeout" msgstr "" msgid "May" -msgstr "" +msgstr "5월" msgid "Median" msgstr "중앙값" @@ -4534,9 +4619,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4547,7 +4629,7 @@ msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChang msgstr "" msgid "Merged" -msgstr "" +msgstr "머지됨" msgid "Messages" msgstr "메시지" @@ -4561,6 +4643,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4727,10 +4812,10 @@ msgid "MissingSSHKeyWarningLink|add an SSH key" msgstr "SSH 키 추가" msgid "Modal|Cancel" -msgstr "" +msgstr "취소" msgid "Modal|Close" -msgstr "" +msgstr "닫기" msgid "Monitoring" msgstr "모니터링" @@ -4741,9 +4826,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4757,7 +4839,7 @@ msgid "Most stars" msgstr "" msgid "Move" -msgstr "" +msgstr "이동" msgid "Move issue" msgstr "" @@ -4766,7 +4848,7 @@ msgid "Multiple issue boards" msgstr "" msgid "Name" -msgstr "" +msgstr "이름" msgid "Name new label" msgstr "새 라벨 이름 지정" @@ -4778,10 +4860,10 @@ msgid "Name:" msgstr "" msgid "Nav|Help" -msgstr "" +msgstr "도움말" msgid "Nav|Home" -msgstr "" +msgstr "홈" msgid "Nav|Sign In / Register" msgstr "" @@ -4796,7 +4878,7 @@ msgid "Never" msgstr "" msgid "New" -msgstr "" +msgstr "신규" msgid "New Application" msgstr "" @@ -4848,7 +4930,7 @@ msgid "New issue" msgstr "새 이슈" msgid "New label" -msgstr "" +msgstr "새 라벨" msgid "New merge request" msgstr "새 머지 리퀘스트(MR)" @@ -4857,7 +4939,7 @@ msgid "New pipelines will cancel older, pending pipelines on the same branch" msgstr "" msgid "New project" -msgstr "" +msgstr "새 프로젝트" msgid "New schedule" msgstr "새 일정" @@ -4866,19 +4948,19 @@ msgid "New snippet" msgstr "새 스니펫" msgid "New subgroup" -msgstr "" +msgstr "새 서브그룹" msgid "New tag" msgstr "새 태그 " msgid "New..." -msgstr "" +msgstr "새로운..." msgid "No" -msgstr "" +msgstr "아니오" msgid "No Label" -msgstr "" +msgstr "라벨 없음" msgid "No assignee" msgstr "담당자 없음" @@ -4895,6 +4977,9 @@ msgstr "Gitaly Server에 연결할 수 없습니다. 로그를 확인하십시 msgid "No container images stored for this project. Add one by following the instructions above." msgstr "" +msgid "No contributions were found" +msgstr "" + msgid "No due date" msgstr "기한 없음" @@ -4916,6 +5001,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4943,6 +5031,9 @@ msgstr "" msgid "No repository" msgstr "저장소 없음" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "일정 없음" @@ -4953,7 +5044,7 @@ msgid "Nodes" msgstr "" msgid "None" -msgstr "" +msgstr "없음" msgid "Not all comments are displayed because you're comparing two versions of the diff." msgstr "" @@ -4979,6 +5070,9 @@ msgstr "비밀 아님" msgid "Not enough data" msgstr "데이터가 충분하지 않습니다." +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5064,7 +5158,7 @@ msgid "Notifications on" msgstr "" msgid "Nov" -msgstr "" +msgstr "11월" msgid "November" msgstr "" @@ -5073,10 +5167,10 @@ msgid "Number of access attempts" msgstr "접근 시도 횟수" msgid "OK" -msgstr "" +msgstr "확인" msgid "Oct" -msgstr "" +msgstr "10월" msgid "October" msgstr "" @@ -5098,7 +5192,7 @@ msgid "One or more of your Google Code projects cannot be imported into GitLab d msgstr "" msgid "Online IDE integration settings." -msgstr "" +msgstr "온라인 IDE 통합 설정." msgid "Only admins" msgstr "" @@ -5110,16 +5204,16 @@ msgid "Only mirror protected branches" msgstr "" msgid "Only project members can comment." -msgstr "" +msgstr "프로젝트 구성원만 댓글을 달 수 있습니다." msgid "Oops, are you sure?" msgstr "" msgid "Open" -msgstr "" +msgstr "열기" msgid "Open in Xcode" -msgstr "" +msgstr "Xcode에서 열기" msgid "Open sidebar" msgstr "" @@ -5191,7 +5285,7 @@ msgid "Pages" msgstr "" msgid "Pagination|Last »" -msgstr "" +msgstr "마지막 »" msgid "Pagination|Next" msgstr "" @@ -5409,12 +5503,6 @@ msgstr "스테이징" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5454,9 +5542,15 @@ msgstr "환경 설정" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5493,6 +5587,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "계정이 삭제될 예정입니다." @@ -5502,15 +5599,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" +msgstr "사용자명 변경" + +msgid "Profiles|Choose file..." msgstr "" -msgid "Profiles|Clear status" +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." msgstr "" +msgid "Profiles|Clear status" +msgstr "상태 지우기" + msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5523,37 +5635,106 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "계정을 삭제하면 다음과 같은 영향이 있습니다:" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "잘못된 패스워드" msgid "Profiles|Invalid username" msgstr "잘못된 사용자이름" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "확인을 위해 %{confirmationValue} 를 입력하세요." msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" +msgstr "상태는 어떤가요?" + +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" msgstr "" msgid "Profiles|You don't have access to delete this user." @@ -5565,9 +5746,18 @@ msgstr "당신의 계정을 삭제하기 전에 이 그룹들의 소유권을 msgid "Profiles|Your account is currently an owner in these groups:" msgstr "당신의 계정은 현재 다음 그룹들의 소유자입니다:" -msgid "Profiles|Your status" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." msgstr "" +msgid "Profiles|Your status" +msgstr "나의 상태" + msgid "Profiles|e.g. My MacBook key" msgstr "" @@ -5601,6 +5791,9 @@ msgstr "'%{project_name}'프로젝트가 성공적으로 업데이트되었습 msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "프로젝트 URL" + msgid "Project access must be granted explicitly to each user." msgstr "프로젝트 액세스는 각 사용자에게 명시적으로 부여되어야합니다." @@ -5626,6 +5819,9 @@ msgid "Project export started. A download link will be sent by email." msgstr "프로젝트 내보내기가 시작되었습니다. 다운로드 링크는 이메일로 전송됩니다." msgid "Project name" +msgstr "프로젝트 이름" + +msgid "Project slug" msgstr "" msgid "ProjectActivityRSS|Subscribe" @@ -5640,20 +5836,41 @@ msgstr "" msgid "ProjectCreationLevel|Developers + Maintainers" msgstr "" -msgid "ProjectCreationLevel|Maintainers" +msgid "ProjectCreationLevel|Maintainers" +msgstr "" + +msgid "ProjectCreationLevel|No one" +msgstr "" + +msgid "ProjectFileTree|Name" +msgstr "이름" + +msgid "ProjectLastActivity|Never" +msgstr "Never" + +msgid "ProjectLifecycle|Stage" +msgstr "스테이징" + +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" msgstr "" -msgid "ProjectCreationLevel|No one" +msgid "ProjectOverview|Star" msgstr "" -msgid "ProjectFileTree|Name" -msgstr "이름" +msgid "ProjectOverview|Unstar" +msgstr "" -msgid "ProjectLastActivity|Never" -msgstr "Never" +msgid "ProjectOverview|You have reached your project limit" +msgstr "" -msgid "ProjectLifecycle|Stage" -msgstr "스테이징" +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -5662,7 +5879,7 @@ msgid "ProjectSettings|Badges" msgstr "" msgid "ProjectSettings|Contact an admin to change this setting." -msgstr "" +msgstr "이 설정을 변경하려면 관리자에게 문의하세요." msgid "ProjectSettings|Customize your project badges." msgstr "" @@ -5956,11 +6173,14 @@ msgid "Read more about project permissions %{link_to_help}" msgstr "" msgid "Readme" -msgstr "" +msgstr "Readme" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6014,7 +6234,7 @@ msgid "Remind later" msgstr "나중에 다시 알림" msgid "Remove" -msgstr "" +msgstr "삭제" msgid "Remove Runner" msgstr "" @@ -6037,6 +6257,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6046,18 +6269,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6070,6 +6311,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6124,12 +6368,24 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" -msgid "Resume" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" msgstr "" +msgid "Resume" +msgstr "재개" + msgid "Retry" msgstr "" @@ -6153,7 +6409,7 @@ msgid "Revert this merge request" msgstr "이 머지 리퀘스트(MR) 되돌리기" msgid "Review" -msgstr "" +msgstr "리뷰" msgid "Review the process for configuring service providers in your identity provider — in this case, GitLab is the \"service provider\" or \"relying party\"." msgstr "" @@ -6176,9 +6432,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "Runners" @@ -6188,6 +6459,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6212,6 +6489,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6228,7 +6508,7 @@ msgid "SSL Verification" msgstr "" msgid "Save" -msgstr "" +msgstr "저장" msgid "Save application" msgstr "" @@ -6270,7 +6550,7 @@ msgid "Scroll to top" msgstr "" msgid "Search" -msgstr "" +msgstr "검색" msgid "Search branches" msgstr "" @@ -6290,6 +6570,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6338,13 +6621,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6355,11 +6631,14 @@ msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered" msgstr "" msgid "Select" -msgstr "" +msgstr "선택" msgid "Select Archive Format" msgstr "아카이브 포맷 선택" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6393,6 +6672,9 @@ msgstr "" msgid "Select target branch" msgstr "대상 브랜치 선택" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6405,9 +6687,12 @@ msgstr "" msgid "Send email" msgstr "" -msgid "Sep" +msgid "Send usage data" msgstr "" +msgid "Sep" +msgstr "9월" + msgid "September" msgstr "" @@ -6450,6 +6735,12 @@ msgstr "" msgid "Set up Koding" msgstr "Koding 설정" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6462,12 +6753,6 @@ msgstr "패스워드 설정" msgid "Settings" msgstr "설정" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "특정 Runner 자동 설정" - msgid "Share" msgstr "" @@ -6477,6 +6762,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6559,7 +6847,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6643,6 +6931,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6673,6 +6964,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6703,6 +6997,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "이전 시작" @@ -6755,7 +7052,7 @@ msgid "Stage changes" msgstr "" msgid "Staged" -msgstr "" +msgstr "스테이지" msgid "Staged %{type}" msgstr "" @@ -6778,6 +7075,9 @@ msgstr "별표된 프로젝트" msgid "Start a %{new_merge_request} with these changes" msgstr "이 변경 사항으로 %{new_merge_request} 을 시작하십시오." +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "Runner 시작!" @@ -6791,7 +7091,7 @@ msgid "State your message to activate" msgstr "" msgid "Status" -msgstr "" +msgstr "상태" msgid "Stop impersonation" msgstr "" @@ -6811,6 +7111,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6844,6 +7147,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -6909,7 +7215,7 @@ msgid "TagsPage|Sort by" msgstr "" msgid "TagsPage|Tags" -msgstr "" +msgstr "태그" msgid "TagsPage|Tags give the ability to mark specific points in history as being important" msgstr "태그는 특정 지점을 중요하다고 표시하는 기능입니다." @@ -6933,7 +7239,7 @@ msgid "Target branch" msgstr "" msgid "Team" -msgstr "" +msgstr "팀" msgid "Template" msgstr "" @@ -7076,6 +7382,9 @@ msgstr "해당 단계에서 수집 한 각 데이터 입력에 소요 된 시간 msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7085,6 +7394,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "값은 일련의 관측 값 중점에 있습니다. 예를 들어, 3, 5, 9 사이의 중간 값은 5입니다. 3, 5, 7, 8 사이의 중간 값은 (5 + 7) / 2 = 6입니다." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7094,6 +7406,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "git storage에 접근하는데 문제가 발생했습니다. " @@ -7142,10 +7463,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7454,7 +7778,7 @@ msgid "Time|s" msgstr "초" msgid "Tip:" -msgstr "" +msgstr "팁:" msgid "Title" msgstr "" @@ -7477,12 +7801,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7510,14 +7843,14 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." msgstr "" msgid "Todo" -msgstr "" +msgstr "Todo" msgid "Todos" msgstr "" @@ -7525,6 +7858,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7603,11 +7939,17 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" msgid "Unlock" -msgstr "" +msgstr "잠금 해제" msgid "Unlock this %{issuableDisplayName}? Everyone will be able to comment." msgstr "" @@ -7618,6 +7960,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7687,15 +8032,15 @@ msgstr "새 파일 업로드" msgid "Upload file" msgstr "파일 업로드" -msgid "Upload new avatar" -msgstr "새 아바타 업로드" - msgid "UploadLink|click to upload" msgstr "업로드하려면 클릭하십시오." msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7723,6 +8068,9 @@ msgstr "전체 알림 설정 사용" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7735,9 +8083,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -7997,7 +8342,7 @@ msgid "Withdraw Access Request" msgstr "액세스 요청 철회" msgid "Yes" -msgstr "" +msgstr "예" msgid "Yes, add it" msgstr "" @@ -8053,6 +8398,9 @@ msgstr "브랜치에 있을 때에만 파일을 추가 할 수 있습니다." msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8086,9 +8434,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "프로젝트에 별표를 표시하려면 로그인 해야 합니다." - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8098,6 +8443,12 @@ msgstr "" msgid "You need permission." msgstr "권한이 필요합니다." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "이메일로 알림을 받지 않습니다." @@ -8180,19 +8531,11 @@ msgid "a deleted user" msgstr "" msgid "ago" -msgstr "" +msgstr "전" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - msgid "assign yourself" msgstr "자신을 담당자로 지정" @@ -8200,7 +8543,7 @@ msgid "branch name" msgstr "" msgid "by" -msgstr "" +msgstr "by" msgid "ciReport|%{linkStartTag}Learn more about Container Scanning %{linkEndTag}" msgstr "" @@ -8220,61 +8563,83 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" +msgstr "" + +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8307,9 +8672,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8348,13 +8710,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8363,9 +8722,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8396,9 +8752,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8440,17 +8793,6 @@ msgstr[0] "일" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8508,16 +8850,16 @@ msgid_plural "merge requests" msgstr[0] "" msgid "mrWidget| Please restore it or use a different %{missingBranchName} branch" -msgstr "" +msgstr "브랜치를 복원하거나 다른 %{missingBranchName} 브랜치를 사용해주세요." msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage %{emphasisStart} decreased %{emphasisEnd} from %{memoryFrom}MB to %{memoryTo}MB" -msgstr "" +msgstr "%{metricsLinkStart} 메모리 사용률 %{metricsLinkEnd} 이 %{memoryFrom}MB 에서 %{memoryTo}MB 로 %{emphasisStart} 감소하였습니다. %{emphasisEnd}" msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage %{emphasisStart} increased %{emphasisEnd} from %{memoryFrom}MB to %{memoryTo}MB" -msgstr "" +msgstr "%{metricsLinkStart} 메모리 사용률 %{metricsLinkEnd} 이 %{memoryFrom}MB 에서 %{memoryTo}MB 로 %{emphasisStart} 증가하였습니다. %{emphasisEnd}" msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage is %{emphasisStart} unchanged %{emphasisEnd} at %{memoryFrom}MB" -msgstr "" +msgstr "%{metricsLinkStart} 메모리 사용률 %{metricsLinkEnd} 이 %{memoryFrom}MB 에서 %{emphasisStart} 변하지 않았습니다. %{emphasisEnd}" msgid "mrWidget|Add approval" msgstr "" @@ -8541,67 +8883,67 @@ msgid "mrWidget|Approved by" msgstr "" msgid "mrWidget|Cancel automatic merge" -msgstr "" +msgstr "자동 머지 취소" msgid "mrWidget|Check out branch" -msgstr "" +msgstr "브랜치 체크아웃" msgid "mrWidget|Checking ability to merge automatically" -msgstr "" +msgstr "자동 머지 기능 체크" msgid "mrWidget|Cherry-pick" -msgstr "" +msgstr "체리픽" msgid "mrWidget|Cherry-pick this merge request in a new merge request" -msgstr "" +msgstr "새로운 머지 리퀘스트(MR)에서 이 머지 리퀘스트(MR)으로 체리픽" msgid "mrWidget|Closed" -msgstr "" +msgstr "닫힘" msgid "mrWidget|Closed by" -msgstr "" +msgstr "닫음:" msgid "mrWidget|Closes" -msgstr "" +msgstr "닫음" msgid "mrWidget|Create an issue to resolve them later" -msgstr "" +msgstr "나중에 해결할 수 있도록 이슈를 만듭니다" msgid "mrWidget|Deployment statistics are not available currently" -msgstr "" +msgstr "배포 통계는 아직 사용할 수 없습니다." msgid "mrWidget|Did not close" -msgstr "" +msgstr "닫히지 않음" msgid "mrWidget|Email patches" -msgstr "" +msgstr "이메일 패치" msgid "mrWidget|Failed to load deployment statistics" -msgstr "" +msgstr "배포 통계를 로드하는데 실패하였습니다." msgid "mrWidget|Fast-forward merge is not possible. To merge this request, first rebase locally." msgstr "" msgid "mrWidget|If the %{branch} branch exists in your local repository, you can merge this merge request manually using the" -msgstr "mrWidget %{branch} 브랜치가 로컬 저장소에 있으면 이 머지 리퀘스트(MR)를 다음과 같이 수동으로 머지할 수 있습니다." +msgstr "" msgid "mrWidget|If the %{missingBranchName} branch exists in your local repository, you can merge this merge request manually using the command line" -msgstr "" +msgstr "만약 %{missingBranchName} 브랜치가 당신의 로컬 저장소에 존재한다면, 명령줄을 사용하여 수동으로 머지할 수 있습니다." msgid "mrWidget|Loading deployment statistics" -msgstr "" +msgstr "배포 통계 로딩중" msgid "mrWidget|Mentions" -msgstr "" +msgstr "멘션" msgid "mrWidget|Merge" -msgstr "" +msgstr "머지" msgid "mrWidget|Merge failed." -msgstr "" +msgstr "머지 실패." msgid "mrWidget|Merge locally" -msgstr "" +msgstr "로컬에서 머지" msgid "mrWidget|Merge request approved" msgstr "" @@ -8610,7 +8952,7 @@ msgid "mrWidget|Merge request approved; you can approve additionally" msgstr "" msgid "mrWidget|Merged by" -msgstr "" +msgstr "머지:" msgid "mrWidget|No Approval required" msgstr "" @@ -8625,31 +8967,31 @@ msgid "mrWidget|Pipeline blocked. The pipeline for this merge request requires a msgstr "" msgid "mrWidget|Plain diff" -msgstr "" +msgstr "Plain diff" msgid "mrWidget|Ready to be merged automatically. Ask someone with write access to this repository to merge this request" msgstr "" msgid "mrWidget|Refresh" -msgstr "" +msgstr "새로고침" msgid "mrWidget|Refresh now" -msgstr "" +msgstr "지금 새로고침" msgid "mrWidget|Refreshing now" -msgstr "" +msgstr "지금 새로고침 중" msgid "mrWidget|Remove Source Branch" -msgstr "" +msgstr "소스 브랜치 삭제" msgid "mrWidget|Remove source branch" -msgstr "" +msgstr "소스 브랜치 삭제" msgid "mrWidget|Remove your approval" msgstr "" msgid "mrWidget|Request to merge" -msgstr "" +msgstr "머지 리퀘스트(MR)" msgid "mrWidget|Requires 1 more approval" msgid_plural "mrWidget|Requires %d more approvals" @@ -8660,28 +9002,28 @@ msgid_plural "mrWidget|Requires %d more approvals by" msgstr[0] "" msgid "mrWidget|Resolve conflicts" -msgstr "" +msgstr "충돌 해결" msgid "mrWidget|Resolve these conflicts or ask someone with write access to this repository to merge it locally" msgstr "" msgid "mrWidget|Revert" -msgstr "" +msgstr "되돌리기" msgid "mrWidget|Revert this merge request in a new merge request" -msgstr "" +msgstr "새로운 머지 리퀘스트(MR)에서 이 머지 리퀘스트(MR)로 되돌리기" msgid "mrWidget|Set by" -msgstr "" +msgstr "설정:" msgid "mrWidget|The changes were merged into" -msgstr "" +msgstr "변경 사항이 머지되었습니다." msgid "mrWidget|The changes were not merged into" -msgstr "" +msgstr "변경 사항이 머지되지 않았습니다." msgid "mrWidget|The changes will be merged into" -msgstr "" +msgstr "변경 사항이 머지될 것 입니다." msgid "mrWidget|The pipeline for this merge request failed. Please retry the job or push a new commit to fix the failure" msgstr "" @@ -8690,51 +9032,57 @@ msgid "mrWidget|The source branch HEAD has recently changed. Please reload the p msgstr "" msgid "mrWidget|The source branch has been removed" -msgstr "" +msgstr "소스 브랜치가 제거되었습니다." msgid "mrWidget|The source branch is %{commitsBehindLinkStart}%{commitsBehind}%{commitsBehindLinkEnd} the target branch" msgstr "" msgid "mrWidget|The source branch is being removed" -msgstr "" +msgstr "소스 브랜치가 제거되는 중입니다" msgid "mrWidget|The source branch will be removed" -msgstr "" +msgstr "소스 브랜치가 제거될 것 입니다." msgid "mrWidget|The source branch will not be removed" -msgstr "" +msgstr "소스 브랜치가 제거되지 않을 것 입니다." msgid "mrWidget|There are merge conflicts" -msgstr "" +msgstr "머지 충돌이 있습니다." msgid "mrWidget|There are unresolved discussions. Please resolve these discussions" -msgstr "" +msgstr "해결되지 않은 토론이 있습니다. 이 토론을 해결하십시오" msgid "mrWidget|This merge request failed to be merged automatically" -msgstr "" +msgstr "이 머지 리퀘스트(MR)를 자동으로 머지하는데 실패하였습니다." msgid "mrWidget|This merge request is in the process of being merged" -msgstr "" +msgstr "이 머지 리퀘스트(MR)를 머지중입니다." msgid "mrWidget|This project is archived, write access has been disabled" +msgstr "이 프로젝트는 보관되었고, 쓰기 접근이 비활성화되었습니다." + +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." msgstr "" msgid "mrWidget|You can merge this merge request manually using the" -msgstr "" +msgstr "이 머지 리퀘스트(MR)를 수동으로 머지할 수 있습니다." msgid "mrWidget|You can remove source branch now" -msgstr "" +msgstr "지금 소스 브랜치를 삭제할 수 있습니다." msgid "mrWidget|branch does not exist." -msgstr "" +msgstr "브랜치가 존재하지 않습니다." msgid "mrWidget|command line" -msgstr "" +msgstr "명령줄" msgid "mrWidget|into" -msgstr "" +msgstr "로" msgid "mrWidget|to be merged automatically when the pipeline succeeds" +msgstr "파이프라인이 성공하면 자동으로 머지됩니다." + +msgid "n/a" msgstr "" msgid "new merge request" @@ -8790,6 +9138,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "사용자명" diff --git a/locale/mn_MN/gitlab.po b/locale/mn_MN/gitlab.po new file mode 100644 index 00000000000..0ed5a747cfd --- /dev/null +++ b/locale/mn_MN/gitlab.po @@ -0,0 +1,9220 @@ +msgid "" +msgstr "" +"Project-Id-Version: gitlab-ee\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: gitlab \n" +"Language-Team: Mongolian\n" +"Language: mn_MN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: gitlab-ee\n" +"X-Crowdin-Language: mn\n" +"X-Crowdin-File: /master/locale/gitlab.pot\n" +"PO-Revision-Date: 2018-10-02 09:28\n" + +msgid " Status" +msgstr "" + +msgid " and" +msgstr "" + +msgid " degraded on %d point" +msgid_plural " degraded on %d points" +msgstr[0] "" +msgstr[1] "" + +msgid " improved on %d point" +msgid_plural " improved on %d points" +msgstr[0] "" +msgstr[1] "" + +msgid "%d changed file" +msgid_plural "%d changed files" +msgstr[0] "" +msgstr[1] "" + +msgid "%d commit" +msgid_plural "%d commits" +msgstr[0] "" +msgstr[1] "" + +msgid "%d commit behind" +msgid_plural "%d commits behind" +msgstr[0] "" +msgstr[1] "" + +msgid "%d exporter" +msgid_plural "%d exporters" +msgstr[0] "" +msgstr[1] "" + +msgid "%d failed test result" +msgid_plural "%d failed test results" +msgstr[0] "" +msgstr[1] "" + +msgid "%d fixed test result" +msgid_plural "%d fixed test results" +msgstr[0] "" +msgstr[1] "" + +msgid "%d issue" +msgid_plural "%d issues" +msgstr[0] "" +msgstr[1] "" + +msgid "%d layer" +msgid_plural "%d layers" +msgstr[0] "" +msgstr[1] "" + +msgid "%d merge request" +msgid_plural "%d merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "%d metric" +msgid_plural "%d metrics" +msgstr[0] "" +msgstr[1] "" + +msgid "%d staged change" +msgid_plural "%d staged changes" +msgstr[0] "" +msgstr[1] "" + +msgid "%d unstaged change" +msgid_plural "%d unstaged changes" +msgstr[0] "" +msgstr[1] "" + +msgid "%d vulnerability" +msgid_plural "%d vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "%s additional commit has been omitted to prevent performance issues." +msgid_plural "%s additional commits have been omitted to prevent performance issues." +msgstr[0] "" +msgstr[1] "" + +msgid "%{actionText} & %{openOrClose} %{noteable}" +msgstr "" + +msgid "%{commit_author_link} authored %{commit_timeago}" +msgstr "" + +msgid "%{counter_storage} (%{counter_repositories} repositories, %{counter_build_artifacts} build artifacts, %{counter_lfs_objects} LFS)" +msgstr "" + +msgid "%{count} participant" +msgid_plural "%{count} participants" +msgstr[0] "" +msgstr[1] "" + +msgid "%{filePath} deleted" +msgstr "" + +msgid "%{firstLabel} +%{labelCount} more" +msgstr "" + +msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." +msgstr "" + +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + +msgid "%{loadingIcon} Started" +msgstr "" + +msgid "%{lock_path} is locked by GitLab User %{lock_user_id}" +msgstr "" + +msgid "%{name}'s avatar" +msgstr "" + +msgid "%{nip_domain} can be used as an alternative to a custom domain." +msgstr "" + +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" + +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgstr "" + +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." +msgstr "" + +msgid "%{openOrClose} %{noteable}" +msgstr "" + +msgid "%{percent}%% complete" +msgstr "" + +msgid "%{storage_name}: failed storage access attempt on host:" +msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" +msgstr[0] "" +msgstr[1] "" + +msgid "%{text} %{files}" +msgid_plural "%{text} %{files} files" +msgstr[0] "" +msgstr[1] "" + +msgid "%{text} is available" +msgstr "" + +msgid "%{title} changes" +msgstr "" + +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" + +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + +msgid "+ %{moreCount} more" +msgstr "" + +msgid "- Runner is active and can process any new jobs" +msgstr "" + +msgid "- Runner is paused and will not receive any new jobs" +msgstr "" + +msgid "- show less" +msgstr "" + +msgid "1 %{type} addition" +msgid_plural "%{count} %{type} additions" +msgstr[0] "" +msgstr[1] "" + +msgid "1 %{type} modification" +msgid_plural "%{count} %{type} modifications" +msgstr[0] "" +msgstr[1] "" + +msgid "1 closed issue" +msgid_plural "%d closed issues" +msgstr[0] "" +msgstr[1] "" + +msgid "1 closed merge request" +msgid_plural "%d closed merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "1 group" +msgid_plural "%d groups" +msgstr[0] "" +msgstr[1] "" + +msgid "1 merged merge request" +msgid_plural "%d merged merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "1 open issue" +msgid_plural "%d open issues" +msgstr[0] "" +msgstr[1] "" + +msgid "1 open merge request" +msgid_plural "%d open merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "1 pipeline" +msgid_plural "%d pipelines" +msgstr[0] "" +msgstr[1] "" + +msgid "1 role" +msgid_plural "%d roles" +msgstr[0] "" +msgstr[1] "" + +msgid "1 user" +msgid_plural "%d users" +msgstr[0] "" +msgstr[1] "" + +msgid "1st contribution!" +msgstr "" + +msgid "2FA enabled" +msgstr "" + +msgid "403|Please contact your GitLab administrator to get the permission." +msgstr "" + +msgid "403|You don't have the permission to access this page." +msgstr "" + +msgid "404|Make sure the address is correct and the page hasn't moved." +msgstr "" + +msgid "404|Page Not Found" +msgstr "" + +msgid "404|Please contact your GitLab administrator if you think this is a mistake." +msgstr "" + +msgid "\"johnsmith@example.com\": \"@johnsmith\" will add \"By @johnsmith\" to all issues and comments originally created by johnsmith@example.com, and will set @johnsmith as the assignee on all issues originally assigned to johnsmith@example.com." +msgstr "" + +msgid "\"johnsmith@example.com\": \"John Smith\" will add \"By John Smith\" to all issues and comments originally created by johnsmith@example.com." +msgstr "" + +msgid "\"johnsmith@example.com\": \"johnsm...@example.com\" will add \"By johnsm...@example.com\" to all issues and comments originally created by johnsmith@example.com. The email address or username is masked to ensure the user's privacy." +msgstr "" + +msgid "\"johnsmith@example.com\": \"johnsmith@example.com\" will add \"By johnsmith@example.com\" to all issues and comments originally created by johnsmith@example.com. By default, the email address or username is masked to ensure the user's privacy. Use this option if you want to show the full email address." +msgstr "" + +msgid "%{changedFilesLength} unstaged and %{stagedFilesLength} staged changes" +msgstr "" + +msgid "%{created_count} created, %{accepted_count} accepted." +msgstr "" + +msgid "%{created_count} created, %{closed_count} closed." +msgstr "" + +msgid "%{group_name} group members" +msgstr "" + +msgid "%{pushes} pushes, more than %{commits} commits by %{people} contributors." +msgstr "" + +msgid "Removes source branch" +msgstr "" + +msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." +msgstr "" + +msgid "A collection of graphs regarding Continuous Integration" +msgstr "" + +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + +msgid "A new branch will be created in your fork and a new merge request will be started." +msgstr "" + +msgid "A project is where you house your files (repository), plan your work (issues), and publish your documentation (wiki), %{among_other_things_link}." +msgstr "" + +msgid "A regular expression that will be used to find the test coverage output in the job trace. Leave blank to disable" +msgstr "" + +msgid "A user with write access to the source branch selected this option" +msgstr "" + +msgid "About GitLab" +msgstr "" + +msgid "About GitLab CE" +msgstr "" + +msgid "About auto deploy" +msgstr "" + +msgid "About this feature" +msgstr "" + +msgid "Abuse Reports" +msgstr "" + +msgid "Abuse reports" +msgstr "" + +msgid "Accept terms" +msgstr "" + +msgid "Accepted MR" +msgstr "" + +msgid "Access Tokens" +msgstr "" + +msgid "Access denied! Please verify you can add deploy keys to this repository." +msgstr "" + +msgid "Access expiration date" +msgstr "" + +msgid "Access to '%{classification_label}' not allowed" +msgstr "" + +msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." +msgstr "" + +msgid "Access your runner token, customize your pipeline configuration, and view your pipeline status and coverage report." +msgstr "" + +msgid "Account" +msgstr "" + +msgid "Account and limit" +msgstr "" + +msgid "Active" +msgstr "" + +msgid "Active Sessions" +msgstr "" + +msgid "Activity" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Add Changelog" +msgstr "" + +msgid "Add Contribution guide" +msgstr "" + +msgid "Add Group Webhooks and GitLab Enterprise Edition." +msgstr "" + +msgid "Add Kubernetes cluster" +msgstr "" + +msgid "Add Readme" +msgstr "" + +msgid "Add additional text to appear in all email communications. %{character_limit} character limit" +msgstr "" + +msgid "Add license" +msgstr "" + +msgid "Add new application" +msgstr "" + +msgid "Add new directory" +msgstr "" + +msgid "Add reaction" +msgstr "" + +msgid "Add todo" +msgstr "" + +msgid "Add user(s) to the group:" +msgstr "" + +msgid "Add users to group" +msgstr "" + +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + +msgid "Additional text" +msgstr "" + +msgid "Admin Area" +msgstr "" + +msgid "Admin Overview" +msgstr "" + +msgid "Admin area" +msgstr "" + +msgid "AdminArea| You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." +msgstr "" + +msgid "AdminArea| You are about to permanently delete the user %{username}. This will delete all of the issues, merge requests, and groups linked to them. To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." +msgstr "" + +msgid "AdminArea|Stop all jobs" +msgstr "" + +msgid "AdminArea|Stop all jobs?" +msgstr "" + +msgid "AdminArea|Stop jobs" +msgstr "" + +msgid "AdminArea|Stopping jobs failed" +msgstr "" + +msgid "AdminArea|You’re about to stop all jobs.This will halt all current jobs that are running." +msgstr "" + +msgid "AdminHealthPageLink|health page" +msgstr "" + +msgid "AdminProjects| You’re about to permanently delete the project %{projectName}, its repository, and all related resources including issues, merge requests, etc.. Once you confirm and press %{strong_start}Delete project%{strong_end}, it cannot be undone or recovered." +msgstr "" + +msgid "AdminProjects|Delete" +msgstr "" + +msgid "AdminProjects|Delete Project %{projectName}?" +msgstr "" + +msgid "AdminProjects|Delete project" +msgstr "" + +msgid "AdminSettings|Specify a domain to use by default for every project's Auto Review Apps and Auto Deploy stages." +msgstr "" + +msgid "AdminUsers|Block user" +msgstr "" + +msgid "AdminUsers|Delete User %{username} and contributions?" +msgstr "" + +msgid "AdminUsers|Delete User %{username}?" +msgstr "" + +msgid "AdminUsers|Delete user" +msgstr "" + +msgid "AdminUsers|Delete user and contributions" +msgstr "" + +msgid "AdminUsers|To confirm, type %{projectName}" +msgstr "" + +msgid "AdminUsers|To confirm, type %{username}" +msgstr "" + +msgid "Advanced" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "All" +msgstr "" + +msgid "All changes are committed" +msgstr "" + +msgid "All features are enabled for blank projects, from templates, or when importing, but you can disable them afterward in the project settings." +msgstr "" + +msgid "All users" +msgstr "" + +msgid "Allow commits from members who can merge to the target branch." +msgstr "" + +msgid "Allow public access to pipelines and job details, including output logs and artifacts" +msgstr "" + +msgid "Allow rendering of PlantUML diagrams in Asciidoc documents." +msgstr "" + +msgid "Allow requests to the local network from hooks and services." +msgstr "" + +msgid "Allows you to add and manage Kubernetes clusters." +msgstr "" + +msgid "Also called \"Issuer\" or \"Relying party trust identifier\"" +msgstr "" + +msgid "Also called \"Relying party service URL\" or \"Reply URL\"" +msgstr "" + +msgid "Alternatively, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to connect." +msgstr "" + +msgid "Alternatively, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." +msgstr "" + +msgid "An SSH key will be automatically generated when the form is submitted. For more information, please refer to the documentation." +msgstr "" + +msgid "An application called %{link_to_client} is requesting access to your GitLab account." +msgstr "" + +msgid "An empty GitLab User field will add the FogBugz user's full name (e.g. \"By John Smith\") in the description of all issues and comments. It will also associate and/or assign these issues and comments with the project creator." +msgstr "" + +msgid "An error accured whilst committing your changes." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "An error occured creating the new branch." +msgstr "" + +msgid "An error occured whilst fetching the job trace." +msgstr "" + +msgid "An error occured whilst fetching the latest pipline." +msgstr "" + +msgid "An error occured whilst loading all the files." +msgstr "" + +msgid "An error occured whilst loading the file content." +msgstr "" + +msgid "An error occured whilst loading the file." +msgstr "" + +msgid "An error occured whilst loading the merge request changes." +msgstr "" + +msgid "An error occured whilst loading the merge request version data." +msgstr "" + +msgid "An error occured whilst loading the merge request." +msgstr "" + +msgid "An error occured whilst loading the pipelines jobs." +msgstr "" + +msgid "An error occurred previewing the blob" +msgstr "" + +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while adding approver" +msgstr "" + +msgid "An error occurred while detecting host keys" +msgstr "" + +msgid "An error occurred while dismissing the alert. Refresh the page and try again." +msgstr "" + +msgid "An error occurred while dismissing the feature highlight. Refresh the page and try dismissing again." +msgstr "" + +msgid "An error occurred while fetching markdown preview" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + +msgid "An error occurred while fetching stages." +msgstr "" + +msgid "An error occurred while fetching the job log." +msgstr "" + +msgid "An error occurred while fetching the job." +msgstr "" + +msgid "An error occurred while fetching the jobs." +msgstr "" + +msgid "An error occurred while fetching the pipeline." +msgstr "" + +msgid "An error occurred while getting projects" +msgstr "" + +msgid "An error occurred while importing project: %{details}" +msgstr "" + +msgid "An error occurred while initializing path locks" +msgstr "" + +msgid "An error occurred while loading commit signatures" +msgstr "" + +msgid "An error occurred while loading diff" +msgstr "" + +msgid "An error occurred while loading filenames" +msgstr "" + +msgid "An error occurred while loading the file" +msgstr "" + +msgid "An error occurred while making the request." +msgstr "" + +msgid "An error occurred while removing approver" +msgstr "" + +msgid "An error occurred while rendering KaTeX" +msgstr "" + +msgid "An error occurred while rendering preview broadcast message" +msgstr "" + +msgid "An error occurred while retrieving calendar activity" +msgstr "" + +msgid "An error occurred while retrieving diff" +msgstr "" + +msgid "An error occurred while saving LDAP override status. Please try again." +msgstr "" + +msgid "An error occurred while saving assignees" +msgstr "" + +msgid "An error occurred while subscribing to notifications." +msgstr "" + +msgid "An error occurred while unsubscribing to notifications." +msgstr "" + +msgid "An error occurred while validating username" +msgstr "" + +msgid "An error occurred. Please try again." +msgstr "" + +msgid "Anonymous" +msgstr "" + +msgid "Anti-spam verification" +msgstr "" + +msgid "Any" +msgstr "" + +msgid "Any Label" +msgstr "" + +msgid "Appearance" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Application Id" +msgstr "" + +msgid "Application: %{name}" +msgstr "" + +msgid "Applications" +msgstr "" + +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + +msgid "Archived project! Repository and other project resources are read-only" +msgstr "" + +msgid "Archived projects" +msgstr "" + +msgid "Are you sure you want to delete this pipeline schedule?" +msgstr "" + +msgid "Are you sure you want to lose unsaved changes?" +msgstr "" + +msgid "Are you sure you want to regenerate the public key? You will have to update the public key on the remote server before mirroring will work again." +msgstr "" + +msgid "Are you sure you want to remove %{group_name}?" +msgstr "" + +msgid "Are you sure you want to remove this identity?" +msgstr "" + +msgid "Are you sure you want to reset registration token?" +msgstr "" + +msgid "Are you sure you want to reset the health check token?" +msgstr "" + +msgid "Are you sure you want to unlock %{path_lock_path}?" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "Artifact ID" +msgstr "" + +msgid "Artifacts" +msgstr "" + +msgid "Ascending" +msgstr "" + +msgid "Ask your group maintainer to set up a group Runner." +msgstr "" + +msgid "Assertion consumer service URL" +msgstr "" + +msgid "Assign custom color like #FF0000" +msgstr "" + +msgid "Assign labels" +msgstr "" + +msgid "Assign milestone" +msgstr "" + +msgid "Assign to" +msgstr "" + +msgid "Assigned Issues" +msgstr "" + +msgid "Assigned Merge Requests" +msgstr "" + +msgid "Assigned to :name" +msgstr "" + +msgid "Assigned to me" +msgstr "" + +msgid "Assignee" +msgstr "" + +msgid "Assignee lists not available with your current license" +msgstr "" + +msgid "Assignee lists show all issues assigned to the selected user." +msgstr "" + +msgid "Assignee(s)" +msgstr "" + +msgid "Attach a file by drag & drop or %{upload_link}" +msgstr "" + +msgid "Audit Events" +msgstr "" + +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + +msgid "Authentication Log" +msgstr "" + +msgid "Authentication log" +msgstr "" + +msgid "Authentication method" +msgstr "" + +msgid "Author" +msgstr "" + +msgid "Authorization code:" +msgstr "" + +msgid "Authorization was granted by entering your username and password in the application." +msgstr "" + +msgid "Authorize" +msgstr "" + +msgid "Authorize %{link_to_client} to use your account?" +msgstr "" + +msgid "Authorized At" +msgstr "" + +msgid "Authorized applications (%{size})" +msgstr "" + +msgid "Authors: %{authors}" +msgstr "" + +msgid "Auto DevOps" +msgstr "" + +msgid "Auto DevOps enabled" +msgstr "" + +msgid "Auto DevOps, runners and job artifacts" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and a %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto-cancel redundant, pending pipelines" +msgstr "" + +msgid "AutoDevOps|Auto DevOps" +msgstr "" + +msgid "AutoDevOps|Auto DevOps documentation" +msgstr "" + +msgid "AutoDevOps|Enable in settings" +msgstr "" + +msgid "AutoDevOps|It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "AutoDevOps|Learn more in the %{link_to_documentation}" +msgstr "" + +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + +msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." +msgstr "" + +msgid "AutoDevOps|add a Kubernetes cluster" +msgstr "" + +msgid "AutoDevOps|enable Auto DevOps" +msgstr "" + +msgid "Automatically marked as default internal user" +msgstr "" + +msgid "Available" +msgstr "" + +msgid "Available group Runners : %{runners}" +msgstr "" + +msgid "Available group Runners : %{runners}." +msgstr "" + +msgid "Avatar will be removed. Are you sure?" +msgstr "" + +msgid "Average per day: %{average}" +msgstr "" + +msgid "Background Color" +msgstr "" + +msgid "Background Jobs" +msgstr "" + +msgid "Background color" +msgstr "" + +msgid "Badges" +msgstr "" + +msgid "Badges|A new badge was added." +msgstr "" + +msgid "Badges|Add badge" +msgstr "" + +msgid "Badges|Adding the badge failed, please check the entered URLs and try again." +msgstr "" + +msgid "Badges|Badge image URL" +msgstr "" + +msgid "Badges|Badge image preview" +msgstr "" + +msgid "Badges|Delete badge" +msgstr "" + +msgid "Badges|Delete badge?" +msgstr "" + +msgid "Badges|Deleting the badge failed, please try again." +msgstr "" + +msgid "Badges|Group Badge" +msgstr "" + +msgid "Badges|Link" +msgstr "" + +msgid "Badges|No badge image" +msgstr "" + +msgid "Badges|No image to preview" +msgstr "" + +msgid "Badges|Please fill in a valid URL" +msgstr "" + +msgid "Badges|Project Badge" +msgstr "" + +msgid "Badges|Reload badge image" +msgstr "" + +msgid "Badges|Save changes" +msgstr "" + +msgid "Badges|Saving the badge failed, please check the entered URLs and try again." +msgstr "" + +msgid "Badges|The %{docsLinkStart}variables%{docsLinkEnd} GitLab supports: %{placeholders}" +msgstr "" + +msgid "Badges|The badge was deleted." +msgstr "" + +msgid "Badges|The badge was saved." +msgstr "" + +msgid "Badges|This group has no badges" +msgstr "" + +msgid "Badges|This project has no badges" +msgstr "" + +msgid "Badges|You are going to delete this badge. Deleted badges cannot be restored." +msgstr "" + +msgid "Badges|Your badges" +msgstr "" + +msgid "Badges|e.g. %{exampleUrl}" +msgstr "" + +msgid "Begin with the selected commit" +msgstr "" + +msgid "Below are examples of regex for existing tools:" +msgstr "" + +msgid "Below you will find all the groups that are public." +msgstr "" + +msgid "Billing" +msgstr "" + +msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." +msgstr "" + +msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available." +msgstr "" + +msgid "BillingPlans|Current plan" +msgstr "" + +msgid "BillingPlans|Customer Support" +msgstr "" + +msgid "BillingPlans|Downgrade" +msgstr "" + +msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}, or start a free 30-day trial of GitLab.com Gold." +msgstr "" + +msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." +msgstr "" + +msgid "BillingPlans|Manage plan" +msgstr "" + +msgid "BillingPlans|Please contact %{customer_support_link} in that case." +msgstr "" + +msgid "BillingPlans|See all %{plan_name} features" +msgstr "" + +msgid "BillingPlans|This group uses the plan associated with its parent group." +msgstr "" + +msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." +msgstr "" + +msgid "BillingPlans|Upgrade" +msgstr "" + +msgid "BillingPlans|You are currently on the %{plan_link} plan." +msgstr "" + +msgid "BillingPlans|Your GitLab.com trial expired on %{expiration_date}. %{learn_more_text}" +msgstr "" + +msgid "BillingPlans|Your Gold trial will expire after %{expiration_date}. You can learn more about GitLab.com Gold by reading about our %{features_link}." +msgstr "" + +msgid "BillingPlans|features" +msgstr "" + +msgid "BillingPlans|frequently asked questions" +msgstr "" + +msgid "BillingPlans|monthly" +msgstr "" + +msgid "BillingPlans|paid annually at %{price_per_year}" +msgstr "" + +msgid "BillingPlans|per user" +msgstr "" + +msgid "Bitbucket Server Import" +msgstr "" + +msgid "Bitbucket import" +msgstr "" + +msgid "Blog" +msgstr "" + +msgid "Boards" +msgstr "" + +msgid "Branch %{branchName} was not found in this project's repository." +msgstr "" + +msgid "Branch (%{branch_count})" +msgid_plural "Branches (%{branch_count})" +msgstr[0] "" +msgstr[1] "" + +msgid "Branch %{branch_name} was created. To set up auto deploy, choose a GitLab CI Yaml template and commit your changes. %{link_to_autodeploy_doc}" +msgstr "" + +msgid "Branch has changed" +msgstr "" + +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + +msgid "BranchSwitcherPlaceholder|Search branches" +msgstr "" + +msgid "BranchSwitcherTitle|Switch branch" +msgstr "" + +msgid "Branches" +msgstr "" + +msgid "Branches|Active" +msgstr "" + +msgid "Branches|Active branches" +msgstr "" + +msgid "Branches|All" +msgstr "" + +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project maintainer or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Overview" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}." +msgstr "" + +msgid "Branches|Show active branches" +msgstr "" + +msgid "Branches|Show all branches" +msgstr "" + +msgid "Branches|Show more active branches" +msgstr "" + +msgid "Branches|Show more stale branches" +msgstr "" + +msgid "Branches|Show overview of the branches" +msgstr "" + +msgid "Branches|Show stale branches" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|Stale" +msgstr "" + +msgid "Branches|Stale branches" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" + +msgid "Browse Directory" +msgstr "" + +msgid "Browse File" +msgstr "" + +msgid "Browse Files" +msgstr "" + +msgid "Browse files" +msgstr "" + +msgid "Built-In" +msgstr "" + +msgid "Business metrics (Custom)" +msgstr "" + +msgid "ByAuthor|by" +msgstr "" + +msgid "CI / CD" +msgstr "" + +msgid "CI / CD Settings" +msgstr "" + +msgid "CI will run using the credentials assigned above." +msgstr "" + +msgid "CI/CD" +msgstr "" + +msgid "CI/CD configuration" +msgstr "" + +msgid "CI/CD for external repo" +msgstr "" + +msgid "CI/CD settings" +msgstr "" + +msgid "CICD|Auto DevOps" +msgstr "" + +msgid "CICD|Auto DevOps will automatically build, test, and deploy your application based on a predefined Continuous Integration and Delivery configuration." +msgstr "" + +msgid "CICD|Automatic deployment to staging, manual deployment to production" +msgstr "" + +msgid "CICD|Continuous deployment to production" +msgstr "" + +msgid "CICD|Default to Auto DevOps pipeline" +msgstr "" + +msgid "CICD|Deployment strategy" +msgstr "" + +msgid "CICD|Deployment strategy needs a domain name to work correctly." +msgstr "" + +msgid "CICD|Do not set up a domain here if you are setting up multiple Kubernetes clusters with Auto DevOps." +msgstr "" + +msgid "CICD|Jobs" +msgstr "" + +msgid "CICD|Learn more about Auto DevOps" +msgstr "" + +msgid "CICD|The Auto DevOps pipeline will run if no alternative CI configuration file is found." +msgstr "" + +msgid "CICD|You need to specify a domain if you want to use Auto Review Apps and Auto Deploy stages." +msgstr "" + +msgid "CICD|instance enabled" +msgstr "" + +msgid "Callback URL" +msgstr "" + +msgid "Callback url" +msgstr "" + +msgid "Can't find HEAD commit for this branch" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "Cancel this job" +msgstr "" + +msgid "Cannot be merged automatically" +msgstr "" + +msgid "Cannot modify managed Kubernetes cluster" +msgstr "" + +msgid "Certificate fingerprint" +msgstr "" + +msgid "Change Weight" +msgstr "" + +msgid "Change template" +msgstr "" + +msgid "Change this value to influence how frequently the GitLab UI polls for updates." +msgstr "" + +msgid "ChangeTypeActionLabel|Pick into branch" +msgstr "" + +msgid "ChangeTypeActionLabel|Revert in branch" +msgstr "" + +msgid "ChangeTypeAction|Cherry-pick" +msgstr "" + +msgid "ChangeTypeAction|Revert" +msgstr "" + +msgid "ChangeTypeAction|This will create a new commit in order to revert the existing changes." +msgstr "" + +msgid "Changelog" +msgstr "" + +msgid "Changes are shown as if the source revision was being merged into the target revision." +msgstr "" + +msgid "Charts" +msgstr "" + +msgid "Chat" +msgstr "" + +msgid "Check interval" +msgstr "" + +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + +msgid "Cherry-pick this commit" +msgstr "" + +msgid "Cherry-pick this merge request" +msgstr "" + +msgid "Choose Create archive and wait for archiving to complete." +msgstr "" + +msgid "Choose Next at the bottom of the page." +msgstr "" + +msgid "Choose File ..." +msgstr "" + +msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." +msgstr "" + +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + +msgid "Choose any color." +msgstr "" + +msgid "Choose between clone or fetch to get the recent application code" +msgstr "" + +msgid "Choose file..." +msgstr "" + +msgid "Choose the top-level group for your repository imports." +msgstr "" + +msgid "Choose which groups you wish to synchronize to this secondary node." +msgstr "" + +msgid "Choose which repositories you want to connect and run CI/CD pipelines." +msgstr "" + +msgid "Choose which repositories you want to import." +msgstr "" + +msgid "Choose which shards you wish to synchronize to this secondary node." +msgstr "" + +msgid "CiStatusLabel|canceled" +msgstr "" + +msgid "CiStatusLabel|created" +msgstr "" + +msgid "CiStatusLabel|failed" +msgstr "" + +msgid "CiStatusLabel|manual action" +msgstr "" + +msgid "CiStatusLabel|passed" +msgstr "" + +msgid "CiStatusLabel|passed with warnings" +msgstr "" + +msgid "CiStatusLabel|pending" +msgstr "" + +msgid "CiStatusLabel|skipped" +msgstr "" + +msgid "CiStatusLabel|waiting for manual action" +msgstr "" + +msgid "CiStatusText|blocked" +msgstr "" + +msgid "CiStatusText|canceled" +msgstr "" + +msgid "CiStatusText|created" +msgstr "" + +msgid "CiStatusText|failed" +msgstr "" + +msgid "CiStatusText|manual" +msgstr "" + +msgid "CiStatusText|passed" +msgstr "" + +msgid "CiStatusText|pending" +msgstr "" + +msgid "CiStatusText|skipped" +msgstr "" + +msgid "CiStatus|running" +msgstr "" + +msgid "CiVariables|Input variable key" +msgstr "" + +msgid "CiVariables|Input variable value" +msgstr "" + +msgid "CiVariables|Remove variable row" +msgstr "" + +msgid "CiVariable|* (All environments)" +msgstr "" + +msgid "CiVariable|All environments" +msgstr "" + +msgid "CiVariable|Create wildcard" +msgstr "" + +msgid "CiVariable|Error occured while saving variables" +msgstr "" + +msgid "CiVariable|New environment" +msgstr "" + +msgid "CiVariable|Protected" +msgstr "" + +msgid "CiVariable|Search environments" +msgstr "" + +msgid "CiVariable|Toggle protected" +msgstr "" + +msgid "CiVariable|Validation failed" +msgstr "" + +msgid "CircuitBreakerApiLink|circuitbreaker api" +msgstr "" + +msgid "ClassificationLabelUnavailable|is unavailable: %{reason}" +msgstr "" + +msgid "Clear search input" +msgstr "" + +msgid "Click any project name in the project list below to navigate to the project milestone." +msgstr "" + +msgid "Click the Download button and wait for downloading to complete." +msgstr "" + +msgid "Click the Promote button in the top right corner to promote it to a group milestone." +msgstr "" + +msgid "Click the Select none button on the right, since we only need \"Google Code Project Hosting\"." +msgstr "" + +msgid "Click the button below to begin the install process by navigating to the Kubernetes page" +msgstr "" + +msgid "Click to expand it." +msgstr "" + +msgid "Click to expand text" +msgstr "" + +msgid "Client authentication certificate" +msgstr "" + +msgid "Client authentication key" +msgstr "" + +msgid "Client authentication key password" +msgstr "" + +msgid "Clients" +msgstr "" + +msgid "Clone repository" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Close epic" +msgstr "" + +msgid "Closed" +msgstr "" + +msgid "Closed issues" +msgstr "" + +msgid "ClusterIntegration|%{appList} was successfully installed on your Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which may incur additional costs depending on the hosting provider your Kubernetes cluster is installed on. If you are using Google Kubernetes Engine, you can %{pricingLink}." +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Add Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Advanced options on this Kubernetes cluster's integration" +msgstr "" + +msgid "ClusterIntegration|After installing Ingress, you will need to point your wildcard DNS at the generated external IP address in order to view your app after it is deployed. %{ingressHelpLink}" +msgstr "" + +msgid "ClusterIntegration|An error occured while trying to fetch project zones: %{error}" +msgstr "" + +msgid "ClusterIntegration|An error occured while trying to fetch your projects: %{error}" +msgstr "" + +msgid "ClusterIntegration|An error occured while trying to fetch zone machine types: %{error}" +msgstr "" + +msgid "ClusterIntegration|An error occurred when trying to contact the Google Cloud API. Please try again later." +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|Are you sure you want to remove this Kubernetes cluster's integration? This will not delete your actual Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" + +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Ingress IP Address to clipboard" +msgstr "" + +msgid "ClusterIntegration|Copy Jupyter Hostname to clipboard" +msgstr "" + +msgid "ClusterIntegration|Copy Kubernetes cluster name" +msgstr "" + +msgid "ClusterIntegration|Copy Token" +msgstr "" + +msgid "ClusterIntegration|Create Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Did you know?" +msgstr "" + +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + +msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Environment scope" +msgstr "" + +msgid "ClusterIntegration|Every new Google Cloud Platform (GCP) account receives $300 in credit upon %{sign_up_link}. In partnership with Google, GitLab is able to offer an additional $200 for both new and existing GCP accounts to get started with GitLab's Google Kubernetes Engine Integration." +msgstr "" + +msgid "ClusterIntegration|Fetching machine types" +msgstr "" + +msgid "ClusterIntegration|Fetching projects" +msgstr "" + +msgid "ClusterIntegration|Fetching zones" +msgstr "" + +msgid "ClusterIntegration|GitLab Integration" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." +msgstr "" + +msgid "ClusterIntegration|Google Cloud Platform project" +msgstr "" + +msgid "ClusterIntegration|Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Google Kubernetes Engine project" +msgstr "" + +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Helm streamlines installing and managing Kubernetes applications. Tiller runs inside of your Kubernetes Cluster, and manages releases of your charts." +msgstr "" + +msgid "ClusterIntegration|Hide" +msgstr "" + +msgid "ClusterIntegration|If you are setting up multiple clusters and are using Auto DevOps, %{help_link_start}read this first%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|In order to show the health of the cluster, we'll need to provision your cluster with Prometheus to collect the required data." +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Ingress IP Address" +msgstr "" + +msgid "ClusterIntegration|Ingress gives you a way to route requests to services based on the request host or path, centralizing a number of services into a single entrypoint." +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install Prometheus" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate Kubernetes cluster automation" +msgstr "" + +msgid "ClusterIntegration|Integration status" +msgstr "" + +msgid "ClusterIntegration|Jupyter Hostname" +msgstr "" + +msgid "ClusterIntegration|JupyterHub" +msgstr "" + +msgid "ClusterIntegration|JupyterHub, a multi-user Hub, spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server. JupyterHub can be used to serve notebooks to a class of students, a corporate data science group, or a scientific research group." +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster details" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster health" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster integration" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster name" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster was successfully created on Google Kubernetes Engine. Refresh the page to see Kubernetes cluster's details" +msgstr "" + +msgid "ClusterIntegration|Kubernetes clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Kubernetes clusters can be used to deploy applications and to provide Review Apps for this project" +msgstr "" + +msgid "ClusterIntegration|Learn more about %{help_link_start_machine_type}machine types%{help_link_end} and %{help_link_start_pricing}pricing%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|Learn more about %{help_link_start}Kubernetes%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|Machine type" +msgstr "" + +msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create Kubernetes clusters" +msgstr "" + +msgid "ClusterIntegration|Manage" +msgstr "" + +msgid "ClusterIntegration|Manage your Kubernetes cluster by visiting %{link_gke}" +msgstr "" + +msgid "ClusterIntegration|More information" +msgstr "" + +msgid "ClusterIntegration|Multiple Kubernetes clusters are available in GitLab Enterprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|No machine types matched your search" +msgstr "" + +msgid "ClusterIntegration|No projects found" +msgstr "" + +msgid "ClusterIntegration|No projects matched your search" +msgstr "" + +msgid "ClusterIntegration|No zones matched your search" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + +msgid "ClusterIntegration|Number of nodes" +msgstr "" + +msgid "ClusterIntegration|Please enter access information for your Kubernetes cluster. If you need help, you can read our %{link_to_help_page} on Kubernetes" +msgstr "" + +msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" +msgstr "" + +msgid "ClusterIntegration|Point a wildcard DNS to this generated IP address in order to access your application after it has been deployed." +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + +msgid "ClusterIntegration|Project namespace (optional, unique)" +msgstr "" + +msgid "ClusterIntegration|Prometheus" +msgstr "" + +msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." +msgstr "" + +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + +msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." +msgstr "" + +msgid "ClusterIntegration|Remove Kubernetes cluster integration" +msgstr "" + +msgid "ClusterIntegration|Remove integration" +msgstr "" + +msgid "ClusterIntegration|Remove this Kubernetes cluster's configuration from this project. This will not delete your actual Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Replace this with your own hostname if you want. If you do so, point hostname to Ingress IP Address from above." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" +msgstr "" + +msgid "ClusterIntegration|Search machine types" +msgstr "" + +msgid "ClusterIntegration|Search projects" +msgstr "" + +msgid "ClusterIntegration|Search zones" +msgstr "" + +msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Select machine type" +msgstr "" + +msgid "ClusterIntegration|Select project" +msgstr "" + +msgid "ClusterIntegration|Select project and zone to choose machine type" +msgstr "" + +msgid "ClusterIntegration|Select project to choose zone" +msgstr "" + +msgid "ClusterIntegration|Select zone" +msgstr "" + +msgid "ClusterIntegration|Select zone to choose machine type" +msgstr "" + +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + +msgid "ClusterIntegration|Something went wrong on our end." +msgstr "" + +msgid "ClusterIntegration|Something went wrong while creating your Kubernetes cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." +msgstr "" + +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" +msgstr "" + +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + +msgid "ClusterIntegration|Toggle Kubernetes Cluster" +msgstr "" + +msgid "ClusterIntegration|Toggle Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Token" +msgstr "" + +msgid "ClusterIntegration|Validating project billing status" +msgstr "" + +msgid "ClusterIntegration|We could not verify that one of your projects on GCP has billing enabled. Please try again." +msgstr "" + +msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." +msgstr "" + +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + +msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" +msgstr "" + +msgid "ClusterIntegration|Zone" +msgstr "" + +msgid "ClusterIntegration|access to Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|check the pricing here" +msgstr "" + +msgid "ClusterIntegration|documentation" +msgstr "" + +msgid "ClusterIntegration|help page" +msgstr "" + +msgid "ClusterIntegration|meets the requirements" +msgstr "" + +msgid "ClusterIntegration|properly configured" +msgstr "" + +msgid "ClusterIntegration|sign up" +msgstr "" + +msgid "Code owners" +msgstr "" + +msgid "Cohorts" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Collapse sidebar" +msgstr "" + +msgid "Comment & resolve discussion" +msgstr "" + +msgid "Comment & unresolve discussion" +msgstr "" + +msgid "Comments" +msgstr "" + +msgid "Commit" +msgid_plural "Commits" +msgstr[0] "" +msgstr[1] "" + +msgid "Commit (%{commit_count})" +msgid_plural "Commits (%{commit_count})" +msgstr[0] "" +msgstr[1] "" + +msgid "Commit Message" +msgstr "" + +msgid "Commit duration in minutes for last 30 commits" +msgstr "" + +msgid "Commit message" +msgstr "" + +msgid "Commit statistics for %{ref} %{start_time} - %{end_time}" +msgstr "" + +msgid "Commit to %{branchName} branch" +msgstr "" + +msgid "CommitBoxTitle|Commit" +msgstr "" + +msgid "CommitMessage|Add %{file_name}" +msgstr "" + +msgid "CommitWidget|authored" +msgstr "" + +msgid "Commits" +msgstr "" + +msgid "Commits feed" +msgstr "" + +msgid "Commits per day hour (UTC)" +msgstr "" + +msgid "Commits per day of month" +msgstr "" + +msgid "Commits per weekday" +msgstr "" + +msgid "Commits|An error occurred while fetching merge requests data." +msgstr "" + +msgid "Commits|Commit: %{commitText}" +msgstr "" + +msgid "Commits|History" +msgstr "" + +msgid "Commits|No related merge requests found" +msgstr "" + +msgid "Committed by" +msgstr "" + +msgid "Commit…" +msgstr "" + +msgid "Compare" +msgstr "" + +msgid "Compare Git revisions" +msgstr "" + +msgid "Compare Revisions" +msgstr "" + +msgid "Compare changes with the last commit" +msgstr "" + +msgid "Compare changes with the merge request target branch" +msgstr "" + +msgid "CompareBranches|%{source_branch} and %{target_branch} are the same." +msgstr "" + +msgid "CompareBranches|Compare" +msgstr "" + +msgid "CompareBranches|Source" +msgstr "" + +msgid "CompareBranches|Target" +msgstr "" + +msgid "CompareBranches|There isn't anything to compare." +msgstr "" + +msgid "Confidential" +msgstr "" + +msgid "Confidentiality" +msgstr "" + +msgid "Configure Gitaly timeouts." +msgstr "" + +msgid "Configure automatic git checks and housekeeping on repositories." +msgstr "" + +msgid "Configure limits for web and API requests." +msgstr "" + +msgid "Configure push mirrors." +msgstr "" + +msgid "Configure storage path and circuit breaker settings." +msgstr "" + +msgid "Configure the way a user creates a new account." +msgstr "" + +msgid "Connect" +msgstr "" + +msgid "Connect all repositories" +msgstr "" + +msgid "Connect repositories from GitHub" +msgstr "" + +msgid "Connect your external repositories, and CI/CD pipelines will run for new commits. A GitLab project will be created with only CI/CD features enabled." +msgstr "" + +msgid "Connecting..." +msgstr "" + +msgid "Container Registry" +msgstr "" + +msgid "ContainerRegistry|Created" +msgstr "" + +msgid "ContainerRegistry|First log in to GitLab’s Container Registry using your GitLab username and password. If you have %{link_2fa} you need to use a %{link_token}:" +msgstr "" + +msgid "ContainerRegistry|GitLab supports up to 3 levels of image names. The following examples of images are valid for your project:" +msgstr "" + +msgid "ContainerRegistry|How to use the Container Registry" +msgstr "" + +msgid "ContainerRegistry|Learn more about" +msgstr "" + +msgid "ContainerRegistry|No tags in Container Registry for this container image." +msgstr "" + +msgid "ContainerRegistry|Once you log in, you’re free to create and upload a container image using the common %{build} and %{push} commands" +msgstr "" + +msgid "ContainerRegistry|Remove repository" +msgstr "" + +msgid "ContainerRegistry|Remove tag" +msgstr "" + +msgid "ContainerRegistry|Size" +msgstr "" + +msgid "ContainerRegistry|Tag" +msgstr "" + +msgid "ContainerRegistry|Tag ID" +msgstr "" + +msgid "ContainerRegistry|Use different image names" +msgstr "" + +msgid "ContainerRegistry|With the Docker Container Registry integrated into GitLab, every project can have its own space to store its Docker images." +msgstr "" + +msgid "ContainerRegistry|You can also use a %{deploy_token} for read-only access to the registry images." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Continue to the next step" +msgstr "" + +msgid "Continuous Integration and Deployment" +msgstr "" + +msgid "Contribute to GitLab" +msgstr "" + +msgid "Contribution" +msgstr "" + +msgid "Contribution guide" +msgstr "" + +msgid "Contributions for %{calendar_date}" +msgstr "" + +msgid "Contributions per group member" +msgstr "" + +msgid "Contributors" +msgstr "" + +msgid "ContributorsPage|%{startDate} – %{endDate}" +msgstr "" + +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + +msgid "Control the display of third party offers." +msgstr "" + +msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" +msgstr "" + +msgid "Control the maximum concurrency of repository backfill for this secondary node" +msgstr "" + +msgid "Control the maximum concurrency of verification operations for this Geo node" +msgstr "" + +msgid "ConvDev Index" +msgstr "" + +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + +msgid "Copy SSH public key to clipboard" +msgstr "" + +msgid "Copy URL to clipboard" +msgstr "" + +msgid "Copy branch name to clipboard" +msgstr "" + +msgid "Copy command to clipboard" +msgstr "" + +msgid "Copy commit SHA to clipboard" +msgstr "" + +msgid "Copy file path to clipboard" +msgstr "" + +msgid "Copy incoming email address to clipboard" +msgstr "" + +msgid "Copy reference to clipboard" +msgstr "" + +msgid "Copy to clipboard" +msgstr "" + +msgid "Copy token to clipboard" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Create New Directory" +msgstr "" + +msgid "Create a new branch" +msgstr "" + +msgid "Create a new branch and merge request" +msgstr "" + +msgid "Create a new issue" +msgstr "" + +msgid "Create a personal access token on your account to pull or push via %{protocol}." +msgstr "" + +msgid "Create branch" +msgstr "" + +msgid "Create commit" +msgstr "" + +msgid "Create directory" +msgstr "" + +msgid "Create empty repository" +msgstr "" + +msgid "Create epic" +msgstr "" + +msgid "Create file" +msgstr "" + +msgid "Create group" +msgstr "" + +msgid "Create group label" +msgstr "" + +msgid "Create issue" +msgstr "" + +msgid "Create lists from labels. Issues with that label appear in that list." +msgstr "" + +msgid "Create merge request" +msgstr "" + +msgid "Create merge request and branch" +msgstr "" + +msgid "Create new branch" +msgstr "" + +msgid "Create new directory" +msgstr "" + +msgid "Create new file" +msgstr "" + +msgid "Create new file or directory" +msgstr "" + +msgid "Create new label" +msgstr "" + +msgid "Create new..." +msgstr "" + +msgid "Create project label" +msgstr "" + +msgid "CreateTag|Tag" +msgstr "" + +msgid "CreateTokenToCloneLink|create a personal access token" +msgstr "" + +msgid "Created" +msgstr "" + +msgid "Created At" +msgstr "" + +msgid "Created by me" +msgstr "" + +msgid "Created on" +msgstr "" + +msgid "Created on:" +msgstr "" + +msgid "Creating epic" +msgstr "" + +msgid "Cron Timezone" +msgstr "" + +msgid "Cron syntax" +msgstr "" + +msgid "Current Branch" +msgstr "" + +msgid "Current node" +msgstr "" + +msgid "CurrentUser|Profile" +msgstr "" + +msgid "CurrentUser|Settings" +msgstr "" + +msgid "Custom" +msgstr "" + +msgid "Custom CI config path" +msgstr "" + +msgid "Custom notification events" +msgstr "" + +msgid "Custom notification levels are the same as participating levels. With custom notification levels you will also receive notifications for select events. To find out more, check out %{notification_link}." +msgstr "" + +msgid "Custom project templates" +msgstr "" + +msgid "Customize colors" +msgstr "" + +msgid "Customize how FogBugz email addresses and usernames are imported into GitLab. In the next step, you'll be able to select the projects you want to import." +msgstr "" + +msgid "Customize how Google Code email addresses and usernames are imported into GitLab. In the next step, you'll be able to select the projects you want to import." +msgstr "" + +msgid "Cycle Analytics" +msgstr "" + +msgid "Cycle Analytics gives an overview of how much time it takes to go from idea to production in your project." +msgstr "" + +msgid "CycleAnalyticsStage|Code" +msgstr "" + +msgid "CycleAnalyticsStage|Issue" +msgstr "" + +msgid "CycleAnalyticsStage|Plan" +msgstr "" + +msgid "CycleAnalyticsStage|Production" +msgstr "" + +msgid "CycleAnalyticsStage|Review" +msgstr "" + +msgid "CycleAnalyticsStage|Staging" +msgstr "" + +msgid "CycleAnalyticsStage|Test" +msgstr "" + +msgid "Dashboard" +msgstr "" + +msgid "DashboardProjects|All" +msgstr "" + +msgid "DashboardProjects|Personal" +msgstr "" + +msgid "Date picker" +msgstr "" + +msgid "Debug" +msgstr "" + +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + +msgid "Decline and sign out" +msgstr "" + +msgid "Default Branch" +msgstr "" + +msgid "Default classification label" +msgstr "" + +msgid "Default: Directly import the Google Code email address or username" +msgstr "" + +msgid "Default: Map a FogBugz account ID to a full name" +msgstr "" + +msgid "Define a custom pattern with cron syntax" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Delete Package" +msgstr "" + +msgid "Delete Snippet" +msgstr "" + +msgid "Delete list" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Deploy" +msgid_plural "Deploys" +msgstr[0] "" +msgstr[1] "" + +msgid "Deploy Keys" +msgstr "" + +msgid "DeployKeys|+%{count} others" +msgstr "" + +msgid "DeployKeys|Current project" +msgstr "" + +msgid "DeployKeys|Deploy key" +msgstr "" + +msgid "DeployKeys|Enabled deploy keys" +msgstr "" + +msgid "DeployKeys|Error enabling deploy key" +msgstr "" + +msgid "DeployKeys|Error getting deploy keys" +msgstr "" + +msgid "DeployKeys|Error removing deploy key" +msgstr "" + +msgid "DeployKeys|Expand %{count} other projects" +msgstr "" + +msgid "DeployKeys|Loading deploy keys" +msgstr "" + +msgid "DeployKeys|No deploy keys found. Create one with the form above." +msgstr "" + +msgid "DeployKeys|Privately accessible deploy keys" +msgstr "" + +msgid "DeployKeys|Project usage" +msgstr "" + +msgid "DeployKeys|Publicly accessible deploy keys" +msgstr "" + +msgid "DeployKeys|Read access only" +msgstr "" + +msgid "DeployKeys|Write access allowed" +msgstr "" + +msgid "DeployKeys|You are going to remove this deploy key. Are you sure?" +msgstr "" + +msgid "DeployTokens|Active Deploy Tokens (%{active_tokens})" +msgstr "" + +msgid "DeployTokens|Add a deploy token" +msgstr "" + +msgid "DeployTokens|Allows read-only access to the registry images" +msgstr "" + +msgid "DeployTokens|Allows read-only access to the repository" +msgstr "" + +msgid "DeployTokens|Copy deploy token to clipboard" +msgstr "" + +msgid "DeployTokens|Copy username to clipboard" +msgstr "" + +msgid "DeployTokens|Create deploy token" +msgstr "" + +msgid "DeployTokens|Created" +msgstr "" + +msgid "DeployTokens|Deploy Tokens" +msgstr "" + +msgid "DeployTokens|Deploy tokens allow read-only access to your repository and registry images." +msgstr "" + +msgid "DeployTokens|Expires" +msgstr "" + +msgid "DeployTokens|Name" +msgstr "" + +msgid "DeployTokens|Pick a name for the application, and we'll give you a unique deploy token." +msgstr "" + +msgid "DeployTokens|Revoke" +msgstr "" + +msgid "DeployTokens|Revoke %{name}" +msgstr "" + +msgid "DeployTokens|Scopes" +msgstr "" + +msgid "DeployTokens|This action cannot be undone." +msgstr "" + +msgid "DeployTokens|This project has no active Deploy Tokens." +msgstr "" + +msgid "DeployTokens|Use this token as a password. Make sure you save it - you won't be able to access it again." +msgstr "" + +msgid "DeployTokens|Use this username as a login." +msgstr "" + +msgid "DeployTokens|Username" +msgstr "" + +msgid "DeployTokens|You are about to revoke" +msgstr "" + +msgid "DeployTokens|Your New Deploy Token" +msgstr "" + +msgid "DeployTokens|Your new project deploy token has been created." +msgstr "" + +msgid "Deprioritize label" +msgstr "" + +msgid "Descending" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." +msgstr "" + +msgid "Description:" +msgstr "" + +msgid "Destroy" +msgstr "" + +msgid "Details" +msgstr "" + +msgid "Detect host keys" +msgstr "" + +msgid "Diffs|No file name available" +msgstr "" + +msgid "Diffs|Something went wrong while fetching diff lines." +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Directory name" +msgstr "" + +msgid "Disable" +msgstr "" + +msgid "Disable for this project" +msgstr "" + +msgid "Disable group Runners" +msgstr "" + +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + +msgid "Discard changes" +msgstr "" + +msgid "Discard changes to %{path}?" +msgstr "" + +msgid "Discard draft" +msgstr "" + +msgid "Discover GitLab Geo." +msgstr "" + +msgid "Discover projects, groups and snippets. Share your projects with others" +msgstr "" + +msgid "Dismiss" +msgstr "" + +msgid "Dismiss Cycle Analytics introduction box" +msgstr "" + +msgid "Dismiss Merge Request promotion" +msgstr "" + +msgid "Do you want to customize how Google Code email addresses and usernames are imported into GitLab?" +msgstr "" + +msgid "Documentation for popular identity providers" +msgstr "" + +msgid "Domain" +msgstr "" + +msgid "Don't show again" +msgstr "" + +msgid "Done" +msgstr "" + +msgid "Download" +msgstr "" + +msgid "Download tar" +msgstr "" + +msgid "Download tar.bz2" +msgstr "" + +msgid "Download tar.gz" +msgstr "" + +msgid "Download zip" +msgstr "" + +msgid "DownloadArtifacts|Download" +msgstr "" + +msgid "DownloadCommit|Email Patches" +msgstr "" + +msgid "DownloadCommit|Plain Diff" +msgstr "" + +msgid "DownloadSource|Download" +msgstr "" + +msgid "Downvotes" +msgstr "" + +msgid "Due date" +msgstr "" + +msgid "During this process, you’ll be asked for URLs from GitLab’s side. Use the URLs shown below." +msgstr "" + +msgid "Each Runner can be in one of the following states:" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Edit Label" +msgstr "" + +msgid "Edit Pipeline Schedule %{id}" +msgstr "" + +msgid "Edit Snippet" +msgstr "" + +msgid "Edit application" +msgstr "" + +msgid "Edit files in the editor and commit changes here" +msgstr "" + +msgid "Edit group: %{group_name}" +msgstr "" + +msgid "Edit identity for %{user_name}" +msgstr "" + +msgid "Elasticsearch" +msgstr "" + +msgid "Elasticsearch intergration. Elasticsearch AWS IAM." +msgstr "" + +msgid "Email" +msgstr "" + +msgid "Email patch" +msgstr "" + +msgid "Emails" +msgstr "" + +msgid "Embed" +msgstr "" + +msgid "Enable" +msgstr "" + +msgid "Enable Auto DevOps" +msgstr "" + +msgid "Enable Pseudonymizer data collection" +msgstr "" + +msgid "Enable SAML authentication for this group" +msgstr "" + +msgid "Enable Sentry for error reporting and logging." +msgstr "" + +msgid "Enable and configure InfluxDB metrics." +msgstr "" + +msgid "Enable and configure Prometheus metrics." +msgstr "" + +msgid "Enable classification control using an external service" +msgstr "" + +msgid "Enable for this project" +msgstr "" + +msgid "Enable group Runners" +msgstr "" + +msgid "Enable or disable certain group features and choose access levels." +msgstr "" + +msgid "Enable or disable the Pseudonymizer data collection." +msgstr "" + +msgid "Enable or disable version check and usage ping." +msgstr "" + +msgid "Enable reCAPTCHA or Akismet and set IP limits." +msgstr "" + +msgid "Enable the Performance Bar for a given group." +msgstr "" + +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + +msgid "Enabled" +msgstr "" + +msgid "Ends at (UTC)" +msgstr "" + +msgid "Enter in your Bitbucket Server URL and personal access token below" +msgstr "" + +msgid "Enter the issue description" +msgstr "" + +msgid "Enter the issue title" +msgstr "" + +msgid "Enter the merge request description" +msgstr "" + +msgid "Enter the merge request title" +msgstr "" + +msgid "Environments" +msgstr "" + +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|An error occurred while stopping the environment, please try again" +msgstr "" + +msgid "Environments|Are you sure you want to stop this environment?" +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deploy to..." +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|Learn more about stopping environments" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|No pod name has been specified" +msgstr "" + +msgid "Environments|Note that this action will stop the environment, but it will %{emphasisStart}not%{emphasisEnd} have an effect on any existing deployment due to no “stop environment action” being defined in the %{ciConfigLinkStart}.gitlab-ci.yml%{ciConfigLinkEnd} file." +msgstr "" + +msgid "Environments|Note that this action will stop the environment, but it will %{emphasis_start}not%{emphasis_end} have an effect on any existing deployment due to no “stop environment action” being defined in the %{ci_config_link_start}.gitlab-ci.yml%{ci_config_link_end} file." +msgstr "" + +msgid "Environments|Open live environment" +msgstr "" + +msgid "Environments|Pod logs from" +msgstr "" + +msgid "Environments|Re-deploy to environment" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback environment" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Stop" +msgstr "" + +msgid "Environments|Stop environment" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Environments|protected" +msgstr "" + +msgid "Epic" +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics Roadmap" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Epics|An error occurred while saving %{epicDateType} date" +msgstr "" + +msgid "Epics|How can I solve this?" +msgstr "" + +msgid "Epics|More information" +msgstr "" + +msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." +msgstr "" + +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." +msgstr "" + +msgid "Epics|due" +msgstr "" + +msgid "Epics|start" +msgstr "" + +msgid "Error" +msgstr "" + +msgid "Error Reporting and Logging" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error fetching contributors data." +msgstr "" + +msgid "Error fetching labels." +msgstr "" + +msgid "Error fetching network graph." +msgstr "" + +msgid "Error fetching refs" +msgstr "" + +msgid "Error fetching usage ping data." +msgstr "" + +msgid "Error loading branch data. Please try again." +msgstr "" + +msgid "Error loading branches." +msgstr "" + +msgid "Error loading last commit." +msgstr "" + +msgid "Error loading markdown preview" +msgstr "" + +msgid "Error loading merge requests." +msgstr "" + +msgid "Error loading project data. Please try again." +msgstr "" + +msgid "Error loading template types." +msgstr "" + +msgid "Error loading template." +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + +msgid "Error saving label update." +msgstr "" + +msgid "Error updating status for all todos." +msgstr "" + +msgid "Error updating todo status." +msgstr "" + +msgid "Error while loading the merge request. Please try again." +msgstr "" + +msgid "Estimated" +msgstr "" + +msgid "EventFilterBy|Filter by all" +msgstr "" + +msgid "EventFilterBy|Filter by comments" +msgstr "" + +msgid "EventFilterBy|Filter by issue events" +msgstr "" + +msgid "EventFilterBy|Filter by merge events" +msgstr "" + +msgid "EventFilterBy|Filter by push events" +msgstr "" + +msgid "EventFilterBy|Filter by team" +msgstr "" + +msgid "Every day (at 4:00am)" +msgstr "" + +msgid "Every month (on the 1st at 4:00am)" +msgstr "" + +msgid "Every week (Sundays at 4:00am)" +msgstr "" + +msgid "Everyone can contribute" +msgstr "" + +msgid "Expand" +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Expand sidebar" +msgstr "" + +msgid "Expiration date" +msgstr "" + +msgid "Explore" +msgstr "" + +msgid "Explore GitLab" +msgstr "" + +msgid "Explore Groups" +msgstr "" + +msgid "Explore groups" +msgstr "" + +msgid "Explore projects" +msgstr "" + +msgid "Explore public groups" +msgstr "" + +msgid "External Classification Policy Authorization" +msgstr "" + +msgid "External authentication" +msgstr "" + +msgid "External authorization denied access to this project" +msgstr "" + +msgid "External authorization request timeout" +msgstr "" + +msgid "ExternalAuthorizationService|Classification Label" +msgstr "" + +msgid "ExternalAuthorizationService|Classification label" +msgstr "" + +msgid "ExternalAuthorizationService|When no classification label is set the default label `%{default_label}` will be used." +msgstr "" + +msgid "Facebook" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Failed Jobs" +msgstr "" + +msgid "Failed to change the owner" +msgstr "" + +msgid "Failed to check related branches." +msgstr "" + +msgid "Failed to remove issue from board, please try again." +msgstr "" + +msgid "Failed to remove mirror." +msgstr "" + +msgid "Failed to remove the pipeline schedule" +msgstr "" + +msgid "Failed to update issues, please try again." +msgstr "" + +msgid "Failure" +msgstr "" + +msgid "Faster as it re-uses the project workspace (falling back to clone if it doesn't exist)" +msgstr "" + +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + +msgid "Fields on this page are now uneditable, you can configure" +msgstr "" + +msgid "File templates" +msgstr "" + +msgid "Files" +msgstr "" + +msgid "Files (%{human_size})" +msgstr "" + +msgid "Fill in the fields below, turn on %{enable_label}, and press %{save_changes}" +msgstr "" + +msgid "Filter" +msgstr "" + +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + +msgid "Filter by commit message" +msgstr "" + +msgid "Filter..." +msgstr "" + +msgid "Find by path" +msgstr "" + +msgid "Find file" +msgstr "" + +msgid "Find the downloaded ZIP file and decompress it." +msgstr "" + +msgid "Find the newly extracted Takeout/Google Code Project Hosting/GoogleCodeProjectHosting.json file." +msgstr "" + +msgid "Fingerprints" +msgstr "" + +msgid "Finished" +msgstr "" + +msgid "FirstPushedBy|First" +msgstr "" + +msgid "FirstPushedBy|pushed by" +msgstr "" + +msgid "Fixed date" +msgstr "" + +msgid "Fixed due date" +msgstr "" + +msgid "Fixed start date" +msgstr "" + +msgid "Fixed:" +msgstr "" + +msgid "FogBugz Email" +msgstr "" + +msgid "FogBugz Import" +msgstr "" + +msgid "FogBugz Password" +msgstr "" + +msgid "FogBugz URL" +msgstr "" + +msgid "FogBugz import" +msgstr "" + +msgid "Follow the steps below to export your Google Code project data." +msgstr "" + +msgid "Font Color" +msgstr "" + +msgid "Footer message" +msgstr "" + +msgid "For internal projects, any logged in user can view pipelines and access job details (output logs and artifacts)" +msgstr "" + +msgid "For more information, go to the " +msgstr "" + +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + +msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" +msgstr "" + +msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" +msgstr "" + +msgid "ForkedFromProjectPath|Forked from" +msgstr "" + +msgid "ForkedFromProjectPath|Forked from %{project_name} (deleted)" +msgstr "" + +msgid "Forking in progress" +msgstr "" + +msgid "Format" +msgstr "" + +msgid "Found errors in your .gitlab-ci.yml:" +msgstr "" + +msgid "From %{provider_title}" +msgstr "" + +msgid "From Bitbucket" +msgstr "" + +msgid "From Bitbucket Server" +msgstr "" + +msgid "From FogBugz" +msgstr "" + +msgid "From GitLab.com" +msgstr "" + +msgid "From Google Code" +msgstr "" + +msgid "From issue creation until deploy to production" +msgstr "" + +msgid "From merge request merge until deploy to production" +msgstr "" + +msgid "From milestones:" +msgstr "" + +msgid "From the Kubernetes cluster details view, install Runner from the applications list" +msgstr "" + +msgid "GPG Keys" +msgstr "" + +msgid "General" +msgstr "" + +msgid "General pipelines" +msgstr "" + +msgid "Generate a default set of labels" +msgstr "" + +msgid "Geo" +msgstr "" + +msgid "Geo Nodes" +msgstr "" + +msgid "Geo allows you to replicate your GitLab instance to other geographical locations." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodes|Checksummed" +msgstr "" + +msgid "GeoNodes|Data is out of date from %{timeago}" +msgstr "" + +msgid "GeoNodes|Data replication lag" +msgstr "" + +msgid "GeoNodes|Disabling a node stops the sync process. Are you sure?" +msgstr "" + +msgid "GeoNodes|Does not match the primary storage configuration" +msgstr "" + +msgid "GeoNodes|Failed" +msgstr "" + +msgid "GeoNodes|Full" +msgstr "" + +msgid "GeoNodes|GitLab version" +msgstr "" + +msgid "GeoNodes|GitLab version does not match the primary node version" +msgstr "" + +msgid "GeoNodes|Health status" +msgstr "" + +msgid "GeoNodes|Last event ID processed by cursor" +msgstr "" + +msgid "GeoNodes|Last event ID seen from primary" +msgstr "" + +msgid "GeoNodes|Learn more about Repository checksum progress" +msgstr "" + +msgid "GeoNodes|Learn more about Repository verification" +msgstr "" + +msgid "GeoNodes|Learn more about Wiki checksum progress" +msgstr "" + +msgid "GeoNodes|Learn more about Wiki verification" +msgstr "" + +msgid "GeoNodes|Loading nodes" +msgstr "" + +msgid "GeoNodes|Local LFS objects" +msgstr "" + +msgid "GeoNodes|Local attachments" +msgstr "" + +msgid "GeoNodes|Local job artifacts" +msgstr "" + +msgid "GeoNodes|New node" +msgstr "" + +msgid "GeoNodes|Node Authentication was successfully repaired." +msgstr "" + +msgid "GeoNodes|Node was successfully removed." +msgstr "" + +msgid "GeoNodes|Not checksummed" +msgstr "" + +msgid "GeoNodes|Out of sync" +msgstr "" + +msgid "GeoNodes|Removing a node stops the sync process. Are you sure?" +msgstr "" + +msgid "GeoNodes|Replication slot WAL" +msgstr "" + +msgid "GeoNodes|Replication slots" +msgstr "" + +msgid "GeoNodes|Repositories" +msgstr "" + +msgid "GeoNodes|Repositories checksummed for verification with their counterparts on Secondary nodes" +msgstr "" + +msgid "GeoNodes|Repositories verified with their counterparts on the Primary node" +msgstr "" + +msgid "GeoNodes|Repository checksum progress" +msgstr "" + +msgid "GeoNodes|Repository verification progress" +msgstr "" + +msgid "GeoNodes|Selective" +msgstr "" + +msgid "GeoNodes|Something went wrong while changing node status" +msgstr "" + +msgid "GeoNodes|Something went wrong while fetching nodes" +msgstr "" + +msgid "GeoNodes|Something went wrong while removing node" +msgstr "" + +msgid "GeoNodes|Something went wrong while repairing node" +msgstr "" + +msgid "GeoNodes|Storage config" +msgstr "" + +msgid "GeoNodes|Sync settings" +msgstr "" + +msgid "GeoNodes|Synced" +msgstr "" + +msgid "GeoNodes|Unused slots" +msgstr "" + +msgid "GeoNodes|Unverified" +msgstr "" + +msgid "GeoNodes|Used slots" +msgstr "" + +msgid "GeoNodes|Verified" +msgstr "" + +msgid "GeoNodes|Wiki checksum progress" +msgstr "" + +msgid "GeoNodes|Wiki verification progress" +msgstr "" + +msgid "GeoNodes|Wikis" +msgstr "" + +msgid "GeoNodes|Wikis checksummed for verification with their counterparts on Secondary nodes" +msgstr "" + +msgid "GeoNodes|Wikis verified with their counterparts on the Primary node" +msgstr "" + +msgid "GeoNodes|You have configured Geo nodes using an insecure HTTP connection. We recommend the use of HTTPS." +msgstr "" + +msgid "Geo|%{name} is scheduled for forced re-download" +msgstr "" + +msgid "Geo|%{name} is scheduled for re-check" +msgstr "" + +msgid "Geo|%{name} is scheduled for re-sync" +msgstr "" + +msgid "Geo|All projects" +msgstr "" + +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + +msgid "Geo|Error message" +msgstr "" + +msgid "Geo|Failed" +msgstr "" + +msgid "Geo|File sync capacity" +msgstr "" + +msgid "Geo|Groups to synchronize" +msgstr "" + +msgid "Geo|In sync" +msgstr "" + +msgid "Geo|Last successful sync" +msgstr "" + +msgid "Geo|Last sync attempt" +msgstr "" + +msgid "Geo|Last time verified" +msgstr "" + +msgid "Geo|Never" +msgstr "" + +msgid "Geo|Next sync scheduled at" +msgstr "" + +msgid "Geo|No errors" +msgstr "" + +msgid "Geo|Pending" +msgstr "" + +msgid "Geo|Pending synchronization" +msgstr "" + +msgid "Geo|Pending verification" +msgstr "" + +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + +msgid "Geo|Projects in certain groups" +msgstr "" + +msgid "Geo|Projects in certain storage shards" +msgstr "" + +msgid "Geo|Recheck" +msgstr "" + +msgid "Geo|Redownload" +msgstr "" + +msgid "Geo|Remove" +msgstr "" + +msgid "Geo|Repository sync capacity" +msgstr "" + +msgid "Geo|Resync" +msgstr "" + +msgid "Geo|Retry count" +msgstr "" + +msgid "Geo|Retry counts" +msgstr "" + +msgid "Geo|Select groups to replicate." +msgstr "" + +msgid "Geo|Shards to synchronize" +msgstr "" + +msgid "Geo|Status" +msgstr "" + +msgid "Geo|Synced" +msgstr "" + +msgid "Geo|Synchronization failed - %{error}" +msgstr "" + +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + +msgid "Geo|Unknown state" +msgstr "" + +msgid "Geo|Verification capacity" +msgstr "" + +msgid "Geo|Verification failed - %{error}" +msgstr "" + +msgid "Geo|Waiting for scheduler" +msgstr "" + +msgid "Geo|You need a different license to use Geo replication" +msgstr "" + +msgid "Get a free instance review" +msgstr "" + +msgid "Git" +msgstr "" + +msgid "Git repository URL" +msgstr "" + +msgid "Git revision" +msgstr "" + +msgid "Git storage health information has been reset" +msgstr "" + +msgid "Git strategy for pipelines" +msgstr "" + +msgid "Git version" +msgstr "" + +msgid "GitHub import" +msgstr "" + +msgid "GitLab CI Linter has been moved" +msgstr "" + +msgid "GitLab Geo" +msgstr "" + +msgid "GitLab Group Runners can execute code for all the projects in this group." +msgstr "" + +msgid "GitLab Import" +msgstr "" + +msgid "GitLab User" +msgstr "" + +msgid "GitLab project export" +msgstr "" + +msgid "GitLab single sign on URL" +msgstr "" + +msgid "GitLab will run a background job that will produce pseudonymized CSVs of the GitLab database that will be uploaded to your configured object storage directory." +msgstr "" + +msgid "GitLab.com import" +msgstr "" + +msgid "GitLab’s issue tracker" +msgstr "" + +msgid "Gitaly" +msgstr "" + +msgid "Gitaly Servers" +msgstr "" + +msgid "Gitaly|Address" +msgstr "" + +msgid "Gitea Host URL" +msgstr "" + +msgid "Gitea Import" +msgstr "" + +msgid "Go Back" +msgstr "" + +msgid "Go back" +msgstr "" + +msgid "Go to" +msgstr "" + +msgid "Go to %{link_to_google_takeout}." +msgstr "" + +msgid "Google Code import" +msgstr "" + +msgid "Google Takeout" +msgstr "" + +msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service." +msgstr "" + +msgid "Got it!" +msgstr "" + +msgid "Graph" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Group CI/CD settings" +msgstr "" + +msgid "Group Git LFS status:" +msgstr "" + +msgid "Group ID" +msgstr "" + +msgid "Group Runners" +msgstr "" + +msgid "Group avatar" +msgstr "" + +msgid "Group details" +msgstr "" + +msgid "Group info:" +msgstr "" + +msgid "Group maintainers can register group runners in the %{link}" +msgstr "" + +msgid "Group: %{group_name}" +msgstr "" + +msgid "GroupRoadmap|From %{dateWord}" +msgstr "" + +msgid "GroupRoadmap|Loading roadmap" +msgstr "" + +msgid "GroupRoadmap|Something went wrong while fetching epics" +msgstr "" + +msgid "GroupRoadmap|Sorry, no epics matched your search" +msgstr "" + +msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" +msgstr "" + +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To widen your search, change or remove filters. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To widen your search, change or remove filters. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|Until %{dateWord}" +msgstr "" + +msgid "GroupSettings|Badges" +msgstr "" + +msgid "GroupSettings|Customize your group badges." +msgstr "" + +msgid "GroupSettings|Learn more about badges." +msgstr "" + +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}" +msgstr "" + +msgid "Groups" +msgstr "" + +msgid "Groups can also be nested by creating %{subgroup_docs_link_start}subgroups%{subgroup_docs_link_end}." +msgstr "" + +msgid "GroupsDropdown|Frequently visited" +msgstr "" + +msgid "GroupsDropdown|Groups you visit often will appear here" +msgstr "" + +msgid "GroupsDropdown|Loading groups" +msgstr "" + +msgid "GroupsDropdown|Search your groups" +msgstr "" + +msgid "GroupsDropdown|Something went wrong on our end." +msgstr "" + +msgid "GroupsDropdown|Sorry, no groups matched your search" +msgstr "" + +msgid "GroupsDropdown|This feature requires browser localStorage support" +msgstr "" + +msgid "GroupsEmptyState|A group is a collection of several projects." +msgstr "" + +msgid "GroupsEmptyState|If you organize your projects under a group, it works like a folder." +msgstr "" + +msgid "GroupsEmptyState|No groups found" +msgstr "" + +msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." +msgstr "" + +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + +msgid "GroupsTree|Create a project in this group." +msgstr "" + +msgid "GroupsTree|Create a subgroup in this group." +msgstr "" + +msgid "GroupsTree|Edit group" +msgstr "" + +msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." +msgstr "" + +msgid "GroupsTree|Leave this group" +msgstr "" + +msgid "GroupsTree|Loading groups" +msgstr "" + +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" +msgstr "" + +msgid "Have your users email" +msgstr "" + +msgid "Header message" +msgstr "" + +msgid "Health Check" +msgstr "" + +msgid "Health information can be retrieved from the following endpoints. More information is available" +msgstr "" + +msgid "HealthCheck|Access token is" +msgstr "" + +msgid "HealthCheck|Healthy" +msgstr "" + +msgid "HealthCheck|No Health Problems Detected" +msgstr "" + +msgid "HealthCheck|Unhealthy" +msgstr "" + +msgid "Help" +msgstr "" + +msgid "Help page" +msgstr "" + +msgid "Help page text and support page url." +msgstr "" + +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 host keys manual input" +msgstr "" + +msgid "Hide payload" +msgstr "" + +msgid "Hide value" +msgid_plural "Hide values" +msgstr[0] "" +msgstr[1] "" + +msgid "Hide whitespace changes" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Housekeeping successfully started" +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 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, 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 you already have files you can push them using the %{link_to_cli} below." +msgstr "" + +msgid "If your HTTP repository is not publicly accessible, add authentication information to the URL: https://username:password@gitlab.company.com/group/project.git." +msgstr "" + +msgid "ImageDiffViewer|2-up" +msgstr "" + +msgid "ImageDiffViewer|Onion skin" +msgstr "" + +msgid "ImageDiffViewer|Swipe" +msgstr "" + +msgid "Import" +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 multiple repositories by uploading a manifest file." +msgstr "" + +msgid "Import project" +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 "ImportButtons|Connect repositories from" +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 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 the username in the URL if required: https://username@gitlab.company.com/group/project.git." +msgstr "" + +msgid "Incompatible Project" +msgstr "" + +msgid "Indicates whether this runner can pick jobs without tags" +msgstr "" + +msgid "Inline" +msgstr "" + +msgid "Input host keys manually" +msgstr "" + +msgid "Input your repository URL" +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 - 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 "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + +msgid "Issue Boards" +msgstr "" + +msgid "Issue board focus mode" +msgstr "" + +msgid "Issue events" +msgstr "" + +msgid "IssueBoards|Board" +msgstr "" + +msgid "IssueBoards|Boards" +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 "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Job" +msgstr "" + +msgid "Job has been erased" +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|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 in" +msgstr "" + +msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + +msgid "Koding" +msgstr "" + +msgid "Koding Dashboard" +msgstr "" + +msgid "Kubernetes" +msgstr "" + +msgid "Kubernetes Cluster" +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 Kubernetes Clusters page" +msgstr "" + +msgid "LFS" +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 "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|Promote label %{labelTitle} to Group Label?" +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 "Last %d day" +msgid_plural "Last %d days" +msgstr[0] "" +msgstr[1] "" + +msgid "Last Pipeline" +msgstr "" + +msgid "Last commit" +msgstr "" + +msgid "Last contact" +msgstr "" + +msgid "Last edited %{date}" +msgstr "" + +msgid "Last edited by %{name}" +msgstr "" + +msgid "Last update" +msgstr "" + +msgid "Last updated" +msgstr "" + +msgid "LastPushEvent|You pushed to" +msgstr "" + +msgid "LastPushEvent|at" +msgstr "" + +msgid "Latest changes" +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 Kubernetes" +msgstr "" + +msgid "Learn more about protected branches" +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|Approve license" +msgstr "" + +msgid "LicenseManagement|Approve license?" +msgstr "" + +msgid "LicenseManagement|Approved" +msgstr "" + +msgid "LicenseManagement|Blacklist license" +msgstr "" + +msgid "LicenseManagement|Blacklist license?" +msgstr "" + +msgid "LicenseManagement|Blacklisted" +msgstr "" + +msgid "LicenseManagement|License" +msgstr "" + +msgid "LicenseManagement|License Management" +msgstr "" + +msgid "LicenseManagement|License details" +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|There are currently no approved or blacklisted licenses 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 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 "Lock" +msgstr "" + +msgid "Lock %{issuableDisplayName}" +msgstr "" + +msgid "Lock not found" +msgstr "" + +msgid "Lock this %{issuableDisplayName}? Only project members 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 "Logs" +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 your group’s membership while adding another level of security with SAML." +msgstr "" + +msgid "Manifest" +msgstr "" + +msgid "Manifest file import" +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 enabled" +msgstr "" + +msgid "Maven Metadata" +msgstr "" + +msgid "Maven package" +msgstr "" + +msgid "Max access level" +msgstr "" + +msgid "Maximum git storage failures" +msgstr "" + +msgid "Maximum job timeout" +msgstr "" + +msgid "May" +msgstr "" + +msgid "Median" +msgstr "" + +msgid "Members" +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 Request:" +msgstr "" + +msgid "Merge Requests" +msgstr "" + +msgid "Merge Requests created" +msgstr "" + +msgid "Merge events" +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 "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 "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}" +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|Business" +msgstr "" + +msgid "Metrics|Check out the CI/CD documentation on deploying to an environment" +msgstr "" + +msgid "Metrics|Create metric" +msgstr "" + +msgid "Metrics|Edit metric" +msgstr "" + +msgid "Metrics|Environment" +msgstr "" + +msgid "Metrics|For grouping similar metrics" +msgstr "" + +msgid "Metrics|Label of the chart's vertical axis. Usually the type of the unit being charted. The horizontal axis (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|Name" +msgstr "" + +msgid "Metrics|New metric" +msgstr "" + +msgid "Metrics|No deployed environments" +msgstr "" + +msgid "Metrics|Prometheus Query Documentation" +msgstr "" + +msgid "Metrics|Query" +msgstr "" + +msgid "Metrics|Response" +msgstr "" + +msgid "Metrics|System" +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 while retrieving metrics" +msgstr "" + +msgid "Metrics|Type" +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|e.g. HTTP requests" +msgstr "" + +msgid "Metrics|e.g. Requests/second" +msgstr "" + +msgid "Metrics|e.g. Throughput" +msgstr "" + +msgid "Metrics|e.g. rate(http_requests_total[5m])" +msgstr "" + +msgid "Metrics|e.g. req/sec" +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|

%{milestonePromotion}

%{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 "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 "Monitoring" +msgstr "" + +msgid "Months" +msgstr "" + +msgid "More" +msgstr "" + +msgid "More info" +msgstr "" + +msgid "More information" +msgstr "" + +msgid "More information is available|here" +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 "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 "Network" +msgstr "" + +msgid "Never" +msgstr "" + +msgid "New" +msgstr "" + +msgid "New Application" +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 Pipeline Schedule" +msgstr "" + +msgid "New Snippet" +msgstr "" + +msgid "New Snippets" +msgstr "" + +msgid "New branch" +msgstr "" + +msgid "New branch unavailable" +msgstr "" + +msgid "New directory" +msgstr "" + +msgid "New epic" +msgstr "" + +msgid "New file" +msgstr "" + +msgid "New group" +msgstr "" + +msgid "New identity" +msgstr "" + +msgid "New issue" +msgstr "" + +msgid "New label" +msgstr "" + +msgid "New merge request" +msgstr "" + +msgid "New pipelines will cancel older, pending pipelines on the same branch" +msgstr "" + +msgid "New project" +msgstr "" + +msgid "New schedule" +msgstr "" + +msgid "New snippet" +msgstr "" + +msgid "New subgroup" +msgstr "" + +msgid "New tag" +msgstr "" + +msgid "New..." +msgstr "" + +msgid "No" +msgstr "" + +msgid "No Label" +msgstr "" + +msgid "No assignee" +msgstr "" + +msgid "No branches found" +msgstr "" + +msgid "No changes" +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 due date" +msgstr "" + +msgid "No estimate or time spent" +msgstr "" + +msgid "No file chosen" +msgstr "" + +msgid "No files found" +msgstr "" + +msgid "No files found." +msgstr "" + +msgid "No issues for the selected time period." +msgstr "" + +msgid "No labels with such name or description" +msgstr "" + +msgid "No license. All rights reserved" +msgstr "" + +msgid "No merge requests for the selected time period." +msgstr "" + +msgid "No merge requests found" +msgstr "" + +msgid "No messages were logged" +msgstr "" + +msgid "No other labels with such name or description" +msgstr "" + +msgid "No packages stored for this project." +msgstr "" + +msgid "No prioritised labels with such name or description" +msgstr "" + +msgid "No public groups" +msgstr "" + +msgid "No pushes for the selected time period." +msgstr "" + +msgid "No repository" +msgstr "" + +msgid "No runners found" +msgstr "" + +msgid "No schedules" +msgstr "" + +msgid "No, directly import the existing email addresses and usernames." +msgstr "" + +msgid "Nodes" +msgstr "" + +msgid "None" +msgstr "" + +msgid "Not all comments are displayed because you're comparing two versions of the diff." +msgstr "" + +msgid "Not all comments are displayed because you're viewing an old version of the diff." +msgstr "" + +msgid "Not allowed to merge" +msgstr "" + +msgid "Not available" +msgstr "" + +msgid "Not available for private projects" +msgstr "" + +msgid "Not available for protected branches" +msgstr "" + +msgid "Not confidential" +msgstr "" + +msgid "Not enough data" +msgstr "" + +msgid "Not now" +msgstr "" + +msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" +msgstr "" + +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 "" + +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 "" + +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 "" + +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 "" + +msgid "Notes|Are you sure you want to cancel creating this comment?" +msgstr "" + +msgid "Notification events" +msgstr "" + +msgid "NotificationEvent|Close issue" +msgstr "" + +msgid "NotificationEvent|Close merge request" +msgstr "" + +msgid "NotificationEvent|Failed pipeline" +msgstr "" + +msgid "NotificationEvent|Merge merge request" +msgstr "" + +msgid "NotificationEvent|New epic" +msgstr "" + +msgid "NotificationEvent|New issue" +msgstr "" + +msgid "NotificationEvent|New merge request" +msgstr "" + +msgid "NotificationEvent|New note" +msgstr "" + +msgid "NotificationEvent|Reassign issue" +msgstr "" + +msgid "NotificationEvent|Reassign merge request" +msgstr "" + +msgid "NotificationEvent|Reopen issue" +msgstr "" + +msgid "NotificationEvent|Successful pipeline" +msgstr "" + +msgid "NotificationLevel|Custom" +msgstr "" + +msgid "NotificationLevel|Disabled" +msgstr "" + +msgid "NotificationLevel|Global" +msgstr "" + +msgid "NotificationLevel|On mention" +msgstr "" + +msgid "NotificationLevel|Participate" +msgstr "" + +msgid "NotificationLevel|Watch" +msgstr "" + +msgid "Notifications" +msgstr "" + +msgid "Notifications off" +msgstr "" + +msgid "Notifications on" +msgstr "" + +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + +msgid "Number of access attempts" +msgstr "" + +msgid "OK" +msgstr "" + +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + +msgid "OfSearchInADropdown|Filter" +msgstr "" + +msgid "Once imported, repositories can be mirrored over SSH. Read more %{ssh_link}" +msgstr "" + +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 "" + +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 "" + +msgid "Online IDE integration settings." +msgstr "" + +msgid "Only admins" +msgstr "" + +msgid "Only comments from the following commit are shown below" +msgstr "" + +msgid "Only mirror protected branches" +msgstr "" + +msgid "Only project members can comment." +msgstr "" + +msgid "Oops, are you sure?" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Open in Xcode" +msgstr "" + +msgid "Open sidebar" +msgstr "" + +msgid "Open source software to collaborate on code" +msgstr "" + +msgid "Opened" +msgstr "" + +msgid "Opened MR" +msgstr "" + +msgid "Opened issues" +msgstr "" + +msgid "OpenedNDaysAgo|Opened" +msgstr "" + +msgid "Opens in a new window" +msgstr "" + +msgid "Operations" +msgstr "" + +msgid "Optionally, you can %{link_to_customize} how FogBugz email addresses and usernames are imported into GitLab." +msgstr "" + +msgid "Optionally, you can %{link_to_customize} how Google Code email addresses and usernames are imported into GitLab." +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Or you can choose one of the suggested colors below" +msgstr "" + +msgid "Other Labels" +msgstr "" + +msgid "Other information" +msgstr "" + +msgid "Otherwise it is recommended you start with one of the options below." +msgstr "" + +msgid "Outbound requests" +msgstr "" + +msgid "Overview" +msgstr "" + +msgid "Overwrite diverged branches" +msgstr "" + +msgid "Owner" +msgstr "" + +msgid "Package information" +msgstr "" + +msgid "Package was removed" +msgstr "" + +msgid "Packages" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" + +msgid "Part of merge request changes" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Paste your public SSH key, which is usually contained in the file '~/.ssh/id_rsa.pub' and begins with 'ssh-rsa'. Don't use your private SSH key." +msgstr "" + +msgid "Path:" +msgstr "" + +msgid "Pause" +msgstr "" + +msgid "Paused Runners don't accept new jobs" +msgstr "" + +msgid "Pending" +msgstr "" + +msgid "People without permission will never get a notification and won't be able to comment." +msgstr "" + +msgid "Per job. If a job passes this threshold, it will be marked as failed" +msgstr "" + +msgid "Perform advanced options such as changing path, transferring, or removing the group." +msgstr "" + +msgid "Performance optimization" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "Personal Access Token" +msgstr "" + +msgid "Pipeline" +msgstr "" + +msgid "Pipeline %{pipelineLinkStart} #%{pipelineId} %{pipelineLinkEnd} from %{pipelineLinkRefStart} %{pipelineRef} %{pipelineLinkRefEnd}" +msgstr "" + +msgid "Pipeline Health" +msgstr "" + +msgid "Pipeline Schedule" +msgstr "" + +msgid "Pipeline Schedules" +msgstr "" + +msgid "Pipeline quota" +msgstr "" + +msgid "Pipeline triggers" +msgstr "" + +msgid "PipelineCharts|Failed:" +msgstr "" + +msgid "PipelineCharts|Overall statistics" +msgstr "" + +msgid "PipelineCharts|Success ratio:" +msgstr "" + +msgid "PipelineCharts|Successful:" +msgstr "" + +msgid "PipelineCharts|Total:" +msgstr "" + +msgid "PipelineSchedules|Activated" +msgstr "" + +msgid "PipelineSchedules|Active" +msgstr "" + +msgid "PipelineSchedules|All" +msgstr "" + +msgid "PipelineSchedules|Inactive" +msgstr "" + +msgid "PipelineSchedules|Next Run" +msgstr "" + +msgid "PipelineSchedules|None" +msgstr "" + +msgid "PipelineSchedules|Provide a short description for this pipeline" +msgstr "" + +msgid "PipelineSchedules|Take ownership" +msgstr "" + +msgid "PipelineSchedules|Target" +msgstr "" + +msgid "PipelineSchedules|Variables" +msgstr "" + +msgid "PipelineSheduleIntervalPattern|Custom" +msgstr "" + +msgid "Pipelines" +msgstr "" + +msgid "Pipelines charts" +msgstr "" + +msgid "Pipelines for last month" +msgstr "" + +msgid "Pipelines for last week" +msgstr "" + +msgid "Pipelines for last year" +msgstr "" + +msgid "Pipelines|Build with confidence" +msgstr "" + +msgid "Pipelines|CI Lint" +msgstr "" + +msgid "Pipelines|Clear Runner Caches" +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." +msgstr "" + +msgid "Pipelines|Get started with Pipelines" +msgstr "" + +msgid "Pipelines|Loading Pipelines" +msgstr "" + +msgid "Pipelines|Project cache successfully reset." +msgstr "" + +msgid "Pipelines|Run Pipeline" +msgstr "" + +msgid "Pipelines|Something went wrong while cleaning runners cache." +msgstr "" + +msgid "Pipelines|There are currently no %{scope} pipelines." +msgstr "" + +msgid "Pipelines|There are currently no pipelines." +msgstr "" + +msgid "Pipelines|There was an error fetching the pipelines. Try again in a few moments or contact your support team." +msgstr "" + +msgid "Pipelines|This project is not currently set up to run pipelines." +msgstr "" + +msgid "Pipeline|Create for" +msgstr "" + +msgid "Pipeline|Create pipeline" +msgstr "" + +msgid "Pipeline|Existing branch name or tag" +msgstr "" + +msgid "Pipeline|Run Pipeline" +msgstr "" + +msgid "Pipeline|Search branches" +msgstr "" + +msgid "Pipeline|Specify variable values to be used in this run. The values specified in %{settings_link} will be used by default." +msgstr "" + +msgid "Pipeline|Stop pipeline" +msgstr "" + +msgid "Pipeline|Stop pipeline #%{pipelineId}?" +msgstr "" + +msgid "Pipeline|Variables" +msgstr "" + +msgid "Pipeline|You’re about to stop pipeline %{pipelineId}." +msgstr "" + +msgid "Pipeline|all" +msgstr "" + +msgid "Pipeline|success" +msgstr "" + +msgid "Pipeline|with stage" +msgstr "" + +msgid "Pipeline|with stages" +msgstr "" + +msgid "Plain diff" +msgstr "" + +msgid "PlantUML" +msgstr "" + +msgid "Play" +msgstr "" + +msgid "Please accept the Terms of Service before continuing." +msgstr "" + +msgid "Please convert them to %{link_to_git}, and go through the %{link_to_import_flow} again." +msgstr "" + +msgid "Please convert them to Git on Google Code, and go through the %{link_to_import_flow} again." +msgstr "" + +msgid "Please note that this application is not provided by GitLab and you should verify its authenticity before allowing access." +msgstr "" + +msgid "Please select at least one filter to see results" +msgstr "" + +msgid "Please solve the reCAPTCHA" +msgstr "" + +msgid "Please try again" +msgstr "" + +msgid "Please wait while we connect to your repository. Refresh at will." +msgstr "" + +msgid "Please wait while we import the repository for you. Refresh at will." +msgstr "" + +msgid "Preferences" +msgstr "" + +msgid "Preferences|Navigation theme" +msgstr "" + +msgid "Press Enter or click to search" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Preview payload" +msgstr "" + +msgid "Primary" +msgstr "" + +msgid "Prioritize" +msgstr "" + +msgid "Prioritize label" +msgstr "" + +msgid "Prioritized Labels" +msgstr "" + +msgid "Prioritized label" +msgstr "" + +msgid "Private - Project access must be granted explicitly to each user." +msgstr "" + +msgid "Private - The group and its projects can only be viewed by members." +msgstr "" + +msgid "Private projects can be created in your personal namespace with:" +msgstr "" + +msgid "Profile" +msgstr "" + +msgid "Profile Settings" +msgstr "" + +msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered." +msgstr "" + +msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." +msgstr "" + +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + +msgid "Profiles|Account scheduled for removal." +msgstr "" + +msgid "Profiles|Add key" +msgstr "" + +msgid "Profiles|Add status emoji" +msgstr "" + +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + +msgid "Profiles|Change username" +msgstr "" + +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + +msgid "Profiles|Clear status" +msgstr "" + +msgid "Profiles|Current path: %{path}" +msgstr "" + +msgid "Profiles|Current status" +msgstr "" + +msgid "Profiles|Delete Account" +msgstr "" + +msgid "Profiles|Delete account" +msgstr "" + +msgid "Profiles|Delete your account?" +msgstr "" + +msgid "Profiles|Deleting an account has the following effects:" +msgstr "" + +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + +msgid "Profiles|Invalid password" +msgstr "" + +msgid "Profiles|Invalid username" +msgstr "" + +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + +msgid "Profiles|Path" +msgstr "" + +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + +msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" +msgstr "" + +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + +msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." +msgstr "" + +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + +msgid "Profiles|Type your %{confirmationValue} to confirm:" +msgstr "" + +msgid "Profiles|Typically starts with \"ssh-rsa …\"" +msgstr "" + +msgid "Profiles|Update profile settings" +msgstr "" + +msgid "Profiles|Update username" +msgstr "" + +msgid "Profiles|Upload new avatar" +msgstr "" + +msgid "Profiles|Username change failed - %{message}" +msgstr "" + +msgid "Profiles|Username successfully changed" +msgstr "" + +msgid "Profiles|Website" +msgstr "" + +msgid "Profiles|What's your status?" +msgstr "" + +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + +msgid "Profiles|You don't have access to delete this user." +msgstr "" + +msgid "Profiles|You must transfer ownership or delete these groups before you can delete your account." +msgstr "" + +msgid "Profiles|Your account is currently an owner in these groups:" +msgstr "" + +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + +msgid "Profiles|Your status" +msgstr "" + +msgid "Profiles|e.g. My MacBook key" +msgstr "" + +msgid "Profiles|your account" +msgstr "" + +msgid "Profiling - Performance bar" +msgstr "" + +msgid "Programming languages used in this repository" +msgstr "" + +msgid "Progress" +msgstr "" + +msgid "Project" +msgstr "" + +msgid "Project '%{project_name}' is in the process of being deleted." +msgstr "" + +msgid "Project '%{project_name}' queued for deletion." +msgstr "" + +msgid "Project '%{project_name}' was successfully created." +msgstr "" + +msgid "Project '%{project_name}' was successfully updated." +msgstr "" + +msgid "Project Badges" +msgstr "" + +msgid "Project URL" +msgstr "" + +msgid "Project access must be granted explicitly to each user." +msgstr "" + +msgid "Project avatar" +msgstr "" + +msgid "Project avatar in repository: %{link}" +msgstr "" + +msgid "Project details" +msgstr "" + +msgid "Project export could not be deleted." +msgstr "" + +msgid "Project export has been deleted." +msgstr "" + +msgid "Project export link has expired. Please generate a new export from your project settings." +msgstr "" + +msgid "Project export started. A download link will be sent by email." +msgstr "" + +msgid "Project name" +msgstr "" + +msgid "Project slug" +msgstr "" + +msgid "ProjectActivityRSS|Subscribe" +msgstr "" + +msgid "ProjectCreationLevel|Allowed to create projects" +msgstr "" + +msgid "ProjectCreationLevel|Default project creation protection" +msgstr "" + +msgid "ProjectCreationLevel|Developers + Maintainers" +msgstr "" + +msgid "ProjectCreationLevel|Maintainers" +msgstr "" + +msgid "ProjectCreationLevel|No one" +msgstr "" + +msgid "ProjectFileTree|Name" +msgstr "" + +msgid "ProjectLastActivity|Never" +msgstr "" + +msgid "ProjectLifecycle|Stage" +msgstr "" + +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + +msgid "ProjectPage|Project ID: %{project_id}" +msgstr "" + +msgid "ProjectSettings|Badges" +msgstr "" + +msgid "ProjectSettings|Contact an admin to change this setting." +msgstr "" + +msgid "ProjectSettings|Customize your project badges." +msgstr "" + +msgid "ProjectSettings|Failed to protect the tag" +msgstr "" + +msgid "ProjectSettings|Failed to update tag!" +msgstr "" + +msgid "ProjectSettings|Learn more about badges." +msgstr "" + +msgid "ProjectSettings|Only signed commits can be pushed to this repository." +msgstr "" + +msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." +msgstr "" + +msgid "ProjectSettings|This setting is applied on the server level but has been overridden for this project." +msgstr "" + +msgid "ProjectSettings|This setting will be applied to all projects unless overridden by an admin." +msgstr "" + +msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." +msgstr "" + +msgid "Projects" +msgstr "" + +msgid "Projects shared with %{group_name}" +msgstr "" + +msgid "ProjectsDropdown|Frequently visited" +msgstr "" + +msgid "ProjectsDropdown|Loading projects" +msgstr "" + +msgid "ProjectsDropdown|Projects you visit often will appear here" +msgstr "" + +msgid "ProjectsDropdown|Search your projects" +msgstr "" + +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "" + +msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "" + +msgid "PrometheusAlerts|Add alert" +msgstr "" + +msgid "PrometheusAlerts|Alert set" +msgstr "" + +msgid "PrometheusAlerts|Edit alert" +msgstr "" + +msgid "PrometheusAlerts|Error creating alert" +msgstr "" + +msgid "PrometheusAlerts|Error deleting alert" +msgstr "" + +msgid "PrometheusAlerts|Error fetching alert" +msgstr "" + +msgid "PrometheusAlerts|Error saving alert" +msgstr "" + +msgid "PrometheusAlerts|No alert set" +msgstr "" + +msgid "PrometheusAlerts|Operator" +msgstr "" + +msgid "PrometheusAlerts|Threshold" +msgstr "" + +msgid "PrometheusDashboard|Time" +msgstr "" + +msgid "PrometheusService|%{exporters} with %{metrics} were found" +msgstr "" + +msgid "PrometheusService|

No common metrics were found

" +msgstr "" + +msgid "PrometheusService|Active" +msgstr "" + +msgid "PrometheusService|Auto configuration" +msgstr "" + +msgid "PrometheusService|Automatically deploy and configure Prometheus on your clusters to monitor your project’s environments" +msgstr "" + +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Common metrics" +msgstr "" + +msgid "PrometheusService|Common metrics are automatically monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Custom metrics" +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Finding custom metrics..." +msgstr "" + +msgid "PrometheusService|Install Prometheus on clusters" +msgstr "" + +msgid "PrometheusService|Manage clusters" +msgstr "" + +msgid "PrometheusService|Manual configuration" +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|New metric" +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus is being automatically managed on your clusters" +msgstr "" + +msgid "PrometheusService|These metrics will only be monitored after your first deployment to an environment" +msgstr "" + +msgid "PrometheusService|Time-series monitoring service" +msgstr "" + +msgid "PrometheusService|To enable manual configuration, uninstall Prometheus from your clusters" +msgstr "" + +msgid "PrometheusService|To enable the installation of Prometheus on your clusters, deactivate the manual configuration below" +msgstr "" + +msgid "PrometheusService|Waiting for your first deployment to an environment to find common metrics" +msgstr "" + +msgid "Promote" +msgstr "" + +msgid "Promote these project milestones into a group milestone." +msgstr "" + +msgid "Promote to Group Milestone" +msgstr "" + +msgid "Promote to group label" +msgstr "" + +msgid "Promotions|Don't show me this again" +msgstr "" + +msgid "Promotions|Epics let you manage your portfolio of projects more efficiently and with less effort by tracking groups of issues that share a theme, across projects and milestones." +msgstr "" + +msgid "Promotions|This feature is locked." +msgstr "" + +msgid "Promotions|Upgrade plan" +msgstr "" + +msgid "Protected" +msgstr "" + +msgid "Protected Environments" +msgstr "" + +msgid "ProtectedEnvironment|%{environment_name} will be writable for developers. Are you sure?" +msgstr "" + +msgid "ProtectedEnvironment|Allowed to deploy" +msgstr "" + +msgid "ProtectedEnvironment|Choose who is allowed to deploy" +msgstr "" + +msgid "ProtectedEnvironment|Environment" +msgstr "" + +msgid "ProtectedEnvironment|Protect" +msgstr "" + +msgid "ProtectedEnvironment|Protect Environments in order to restrict who can execute deployments." +msgstr "" + +msgid "ProtectedEnvironment|Protect an environment" +msgstr "" + +msgid "ProtectedEnvironment|Protected Environment (%{protected_environments_count})" +msgstr "" + +msgid "ProtectedEnvironment|Select an environment" +msgstr "" + +msgid "ProtectedEnvironment|There are currently no protected environments, protect an environment with the form above." +msgstr "" + +msgid "ProtectedEnvironment|Unprotect" +msgstr "" + +msgid "ProtectedEnvironment|Your environment can't be unprotected" +msgstr "" + +msgid "ProtectedEnvironment|Your environment has been protected." +msgstr "" + +msgid "ProtectedEnvironment|Your environment has been unprotected" +msgstr "" + +msgid "Protip:" +msgstr "" + +msgid "Provider" +msgstr "" + +msgid "Pseudonymizer data collection" +msgstr "" + +msgid "Public - The group and any public projects can be viewed without any authentication." +msgstr "" + +msgid "Public - The project can be accessed without any authentication." +msgstr "" + +msgid "Public pipelines" +msgstr "" + +msgid "Pull" +msgstr "" + +msgid "Push" +msgstr "" + +msgid "Push Rules" +msgstr "" + +msgid "Push events" +msgstr "" + +msgid "Push project from command line" +msgstr "" + +msgid "Push to create a project" +msgstr "" + +msgid "PushRule|Committer restriction" +msgstr "" + +msgid "Pushed" +msgstr "" + +msgid "Pushes" +msgstr "" + +msgid "Quarters" +msgstr "" + +msgid "Quick actions can be used in the issues description and comment boxes." +msgstr "" + +msgid "Read more" +msgstr "" + +msgid "Read more about project permissions %{link_to_help}" +msgstr "" + +msgid "Readme" +msgstr "" + +msgid "Real-time features" +msgstr "" + +msgid "Recent searches" +msgstr "" + +msgid "Reference:" +msgstr "" + +msgid "Refresh" +msgstr "" + +msgid "Refreshing in a second to show the updated status..." +msgid_plural "Refreshing in %d seconds to show the updated status..." +msgstr[0] "" +msgstr[1] "" + +msgid "Regenerate key" +msgstr "" + +msgid "Regex pattern" +msgstr "" + +msgid "Register / Sign In" +msgstr "" + +msgid "Register and see your runners for this group." +msgstr "" + +msgid "Register and see your runners for this project." +msgstr "" + +msgid "Registry" +msgstr "" + +msgid "Related Commits" +msgstr "" + +msgid "Related Deployed Jobs" +msgstr "" + +msgid "Related Issues" +msgstr "" + +msgid "Related Jobs" +msgstr "" + +msgid "Related Merge Requests" +msgstr "" + +msgid "Related Merged Requests" +msgstr "" + +msgid "Related merge requests" +msgstr "" + +msgid "Remind later" +msgstr "" + +msgid "Remove" +msgstr "" + +msgid "Remove Runner" +msgstr "" + +msgid "Remove avatar" +msgstr "" + +msgid "Remove priority" +msgstr "" + +msgid "Remove project" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "Rename file" +msgstr "" + +msgid "Rename folder" +msgstr "" + +msgid "Reopen epic" +msgstr "" + +msgid "Repair authentication" +msgstr "" + +msgid "Reply to this email directly or %{view_it_on_gitlab}." +msgstr "" + +msgid "Repo by URL" +msgstr "" + +msgid "Reporting" +msgstr "" + +msgid "Reports|%{failedString} and %{resolvedString}" +msgstr "" + +msgid "Reports|Class" +msgstr "" + +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + +msgid "Reports|Execution time" +msgstr "" + +msgid "Reports|Failure" +msgstr "" + +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + +msgid "Reports|System output" +msgstr "" + +msgid "Reports|Test summary" +msgstr "" + +msgid "Reports|Test summary failed loading results" +msgstr "" + +msgid "Reports|Test summary results are being parsed" +msgstr "" + +msgid "Reports|Vulnerability" +msgstr "" + +msgid "Reports|no changed test results" +msgstr "" + +msgid "Repository" +msgstr "" + +msgid "Repository Settings" +msgstr "" + +msgid "Repository URL" +msgstr "" + +msgid "Repository has no locks." +msgstr "" + +msgid "Repository maintenance" +msgstr "" + +msgid "Repository mirror" +msgstr "" + +msgid "Repository storage" +msgstr "" + +msgid "RepositorySettingsAccessLevel|Select" +msgstr "" + +msgid "Request Access" +msgstr "" + +msgid "Requests Profiles" +msgstr "" + +msgid "Require all users to accept Terms of Service and Privacy Policy when they access GitLab." +msgstr "" + +msgid "Reset git storage health information" +msgstr "" + +msgid "Reset health check access token" +msgstr "" + +msgid "Reset runners registration token" +msgstr "" + +msgid "Resolve all discussions in new issue" +msgstr "" + +msgid "Resolve conflicts on source branch" +msgstr "" + +msgid "Resolve discussion" +msgstr "" + +msgid "Response metrics (AWS ELB)" +msgstr "" + +msgid "Response metrics (Custom)" +msgstr "" + +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + +msgid "Resume" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Retry this job" +msgstr "" + +msgid "Retry verification" +msgstr "" + +msgid "Reveal Variables" +msgstr "" + +msgid "Reveal value" +msgid_plural "Reveal values" +msgstr[0] "" +msgstr[1] "" + +msgid "Revert this commit" +msgstr "" + +msgid "Revert this merge request" +msgstr "" + +msgid "Review" +msgstr "" + +msgid "Review the process for configuring service providers in your identity provider — in this case, GitLab is the \"service provider\" or \"relying party\"." +msgstr "" + +msgid "Reviewing" +msgstr "" + +msgid "Reviewing (merge request !%{mergeRequestId})" +msgstr "" + +msgid "Revoke" +msgstr "" + +msgid "Roadmap" +msgstr "" + +msgid "Run CI/CD pipelines for external repositories" +msgstr "" + +msgid "Run untagged jobs" +msgstr "" + +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + +msgid "Runner token" +msgstr "" + +msgid "Runner will not receive any new jobs" +msgstr "" + +msgid "Runners" +msgstr "" + +msgid "Runners API" +msgstr "" + +msgid "Runners can be placed on separate users, servers, and even on your local machine." +msgstr "" + +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + +msgid "Runners page" +msgstr "" + +msgid "Runners page." +msgstr "" + +msgid "Runners|You have used all your shared Runners pipeline minutes." +msgstr "" + +msgid "Running" +msgstr "" + +msgid "SAML SSO" +msgstr "" + +msgid "SAML SSO for %{group_name}" +msgstr "" + +msgid "SAML Single Sign On" +msgstr "" + +msgid "SAML Single Sign On Settings" +msgstr "" + +msgid "SAST" +msgstr "" + +msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." +msgstr "" + +msgid "SSH Keys" +msgstr "" + +msgid "SSH host keys" +msgstr "" + +msgid "SSH public key" +msgstr "" + +msgid "SSL Verification" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Save application" +msgstr "" + +msgid "Save changes" +msgstr "" + +msgid "Save pipeline schedule" +msgstr "" + +msgid "Save variables" +msgstr "" + +msgid "Schedule a new pipeline" +msgstr "" + +msgid "Scheduled" +msgstr "" + +msgid "Schedules" +msgstr "" + +msgid "Scheduling Pipelines" +msgstr "" + +msgid "Scope" +msgstr "" + +msgid "Scoped issue boards" +msgstr "" + +msgid "Scroll down to Google Code Project Hosting and enable the switch on the right." +msgstr "" + +msgid "Scroll to bottom" +msgstr "" + +msgid "Scroll to top" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Search branches" +msgstr "" + +msgid "Search branches and tags" +msgstr "" + +msgid "Search files" +msgstr "" + +msgid "Search for projects, issues, etc." +msgstr "" + +msgid "Search merge requests" +msgstr "" + +msgid "Search milestones" +msgstr "" + +msgid "Search or filter results..." +msgstr "" + +msgid "Search or jump to…" +msgstr "" + +msgid "Search project" +msgstr "" + +msgid "Search users" +msgstr "" + +msgid "SearchAutocomplete|All GitLab" +msgstr "" + +msgid "SearchAutocomplete|Issues I've created" +msgstr "" + +msgid "SearchAutocomplete|Issues assigned to me" +msgstr "" + +msgid "SearchAutocomplete|Merge requests I've created" +msgstr "" + +msgid "SearchAutocomplete|Merge requests assigned to me" +msgstr "" + +msgid "SearchAutocomplete|in all GitLab" +msgstr "" + +msgid "SearchAutocomplete|in this group" +msgstr "" + +msgid "SearchAutocomplete|in this project" +msgstr "" + +msgid "Seconds before reseting failure information" +msgstr "" + +msgid "Seconds to wait for a storage access attempt" +msgstr "" + +msgid "Secret:" +msgstr "" + +msgid "Security" +msgstr "" + +msgid "Security Dashboard" +msgstr "" + +msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." +msgstr "" + +msgid "SecurityDashboard|Monitor vulnerabilities in your code" +msgstr "" + +msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered" +msgstr "" + +msgid "Select" +msgstr "" + +msgid "Select Archive Format" +msgstr "" + +msgid "Select a group to invite" +msgstr "" + +msgid "Select a namespace to fork the project" +msgstr "" + +msgid "Select a timezone" +msgstr "" + +msgid "Select an existing Kubernetes cluster or create a new one" +msgstr "" + +msgid "Select assignee" +msgstr "" + +msgid "Select branch/tag" +msgstr "" + +msgid "Select project" +msgstr "" + +msgid "Select project and zone to choose machine type" +msgstr "" + +msgid "Select project to choose zone" +msgstr "" + +msgid "Select projects you want to import." +msgstr "" + +msgid "Select source branch" +msgstr "" + +msgid "Select target branch" +msgstr "" + +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + +msgid "Select the custom project template source group." +msgstr "" + +msgid "Selecting a GitLab user will add a link to the GitLab user in the descriptions of issues and comments (e.g. \"By @johnsmith\"). It will also associate and/or assign these issues and comments with the selected user." +msgstr "" + +msgid "Selective synchronization" +msgstr "" + +msgid "Send email" +msgstr "" + +msgid "Send usage data" +msgstr "" + +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + +msgid "Server version" +msgstr "" + +msgid "Service Desk" +msgstr "" + +msgid "Service Templates" +msgstr "" + +msgid "Service URL" +msgstr "" + +msgid "Session expiration, projects limit and attachment size." +msgstr "" + +msgid "Set a password on your account to pull or push via %{protocol}." +msgstr "" + +msgid "Set default and restrict visibility levels. Configure import sources and git access protocol." +msgstr "" + +msgid "Set instance-wide template repository" +msgstr "" + +msgid "Set max session time for web terminal." +msgstr "" + +msgid "Set notification email for abuse reports." +msgstr "" + +msgid "Set requirements for a user to sign-in. Enable mandatory two-factor authentication." +msgstr "" + +msgid "Set up CI/CD" +msgstr "" + +msgid "Set up Koding" +msgstr "" + +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgstr "" + +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgstr "" + +msgid "SetPasswordToCloneLink|set a password" +msgstr "" + +msgid "Settings" +msgstr "" + +msgid "Share" +msgstr "" + +msgid "Share the %{sso_label} with members so they can sign in to your group through your identity provider" +msgstr "" + +msgid "Shared Runners" +msgstr "" + +msgid "Shared projects" +msgstr "" + +msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." +msgstr "" + +msgid "SharedRunnersMinutesSettings|Reset pipeline minutes" +msgstr "" + +msgid "SharedRunnersMinutesSettings|Reset used pipeline minutes" +msgstr "" + +msgid "Sherlock Transactions" +msgstr "" + +msgid "Show command" +msgstr "" + +msgid "Show complete raw log" +msgstr "" + +msgid "Show latest version" +msgstr "" + +msgid "Show latest version of the diff" +msgstr "" + +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" + +msgid "Show whitespace changes" +msgstr "" + +msgid "Showing %d event" +msgid_plural "Showing %d events" +msgstr[0] "" +msgstr[1] "" + +msgid "Side-by-side" +msgstr "" + +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Only numeral characters allowed" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + +msgid "Sign in" +msgstr "" + +msgid "Sign in / Register" +msgstr "" + +msgid "Sign in to %{group_name}" +msgstr "" + +msgid "Sign in with Single Sign-On" +msgstr "" + +msgid "Sign out" +msgstr "" + +msgid "Sign-in restrictions" +msgstr "" + +msgid "Sign-up restrictions" +msgstr "" + +msgid "Size" +msgstr "" + +msgid "Size and domain settings for static websites" +msgstr "" + +msgid "Slack application" +msgstr "" + +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." +msgstr "" + +msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" +msgstr "" + +msgid "Snippets" +msgstr "" + +msgid "Something went wrong on our end" +msgstr "" + +msgid "Something went wrong on our end." +msgstr "" + +msgid "Something went wrong on our end. Please try again!" +msgstr "" + +msgid "Something went wrong trying to change the confidentiality of this issue" +msgstr "" + +msgid "Something went wrong trying to change the locked state of this %{issuableDisplayName}" +msgstr "" + +msgid "Something went wrong when toggling the button" +msgstr "" + +msgid "Something went wrong while closing the %{issuable}. Please try again later" +msgstr "" + +msgid "Something went wrong while fetching %{listType} list" +msgstr "" + +msgid "Something went wrong while fetching group member contributions" +msgstr "" + +msgid "Something went wrong while fetching the projects." +msgstr "" + +msgid "Something went wrong while fetching the registry list." +msgstr "" + +msgid "Something went wrong while reopening the %{issuable}. Please try again later" +msgstr "" + +msgid "Something went wrong while resolving this discussion. Please try again." +msgstr "" + +msgid "Something went wrong. Please try again." +msgstr "" + +msgid "Sorry, no epics matched your search" +msgstr "" + +msgid "Sort by" +msgstr "" + +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last Contact" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Most stars" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start date" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" + +msgid "Source" +msgstr "" + +msgid "Source (branch or tag)" +msgstr "" + +msgid "Source code" +msgstr "" + +msgid "Source is not available" +msgstr "" + +msgid "Spam Logs" +msgstr "" + +msgid "Spam and Anti-bot Protection" +msgstr "" + +msgid "Specific Runners" +msgstr "" + +msgid "Specify an e-mail address regex pattern to identify default internal users." +msgstr "" + +msgid "Specify the following URL during the Runner setup:" +msgstr "" + +msgid "Squash commits" +msgstr "" + +msgid "Stage" +msgstr "" + +msgid "Stage & Commit" +msgstr "" + +msgid "Stage all changes" +msgstr "" + +msgid "Stage changes" +msgstr "" + +msgid "Staged" +msgstr "" + +msgid "Staged %{type}" +msgstr "" + +msgid "Star a label to make it a priority label. Order the prioritized labels to change their relative priority, by dragging." +msgstr "" + +msgid "StarProject|Star" +msgstr "" + +msgid "Starred Projects" +msgstr "" + +msgid "Starred Projects' Activity" +msgstr "" + +msgid "Starred projects" +msgstr "" + +msgid "Start a %{new_merge_request} with these changes" +msgstr "" + +msgid "Start date" +msgstr "" + +msgid "Start the Runner!" +msgstr "" + +msgid "Started" +msgstr "" + +msgid "Starts at (UTC)" +msgstr "" + +msgid "State your message to activate" +msgstr "" + +msgid "Status" +msgstr "" + +msgid "Stop impersonation" +msgstr "" + +msgid "Stop this environment" +msgstr "" + +msgid "Stopped" +msgstr "" + +msgid "Storage" +msgstr "" + +msgid "Storage:" +msgstr "" + +msgid "Subgroups" +msgstr "" + +msgid "Subgroups and projects" +msgstr "" + +msgid "Submit as spam" +msgstr "" + +msgid "Submit search" +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "Subscribe at group level" +msgstr "" + +msgid "Subscribe at project level" +msgstr "" + +msgid "Switch branch/tag" +msgstr "" + +msgid "Sync information" +msgstr "" + +msgid "System Hooks" +msgstr "" + +msgid "System Info" +msgstr "" + +msgid "System header and footer:" +msgstr "" + +msgid "System metrics (Custom)" +msgstr "" + +msgid "System metrics (Kubernetes)" +msgstr "" + +msgid "Tag (%{tag_count})" +msgid_plural "Tags (%{tag_count})" +msgstr[0] "" +msgstr[1] "" + +msgid "Tags" +msgstr "" + +msgid "Tags feed" +msgstr "" + +msgid "Tags:" +msgstr "" + +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here…" +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + +msgid "Target Branch" +msgstr "" + +msgid "Target branch" +msgstr "" + +msgid "Team" +msgstr "" + +msgid "Template" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Terms of Service Agreement and Privacy Policy" +msgstr "" + +msgid "Terms of Service and Privacy Policy" +msgstr "" + +msgid "Test coverage parsing" +msgstr "" + +msgid "Thanks! Don't show me this again" +msgstr "" + +msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." +msgstr "" + +msgid "The Git LFS objects will not be synced." +msgstr "" + +msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project" +msgstr "" + +msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project. You can register or sign in to create issues for this project." +msgstr "" + +msgid "The X509 Certificate to use when mutual TLS is required to communicate with the external authorization service. If left blank, the server certificate is still validated when accessing over HTTPS." +msgstr "" + +msgid "The character highlighter helps you keep the subject line to %{titleLength} characters and wrap the body at %{bodyLength} so they are readable in git." +msgstr "" + +msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request." +msgstr "" + +msgid "The collection of events added to the data gathered for that stage." +msgstr "" + +msgid "The connection will time out after %{timeout}. For repositories that take longer, use a clone/push combination." +msgstr "" + +msgid "The deployment of this job to %{environmentLink} did not succeed." +msgstr "" + +msgid "The fork relationship has been removed." +msgstr "" + +msgid "The import will time out after %{timeout}. For repositories that take longer, use a clone/push combination." +msgstr "" + +msgid "The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage." +msgstr "" + +msgid "The maximum file size allowed is 200KB." +msgstr "" + +msgid "The number of attempts GitLab will make to access a storage." +msgstr "" + +msgid "The number of failures after which GitLab will completely prevent access to the storage. The number of failures can be reset in the admin interface: %{link_to_health_page} or using the %{api_documentation_link}." +msgstr "" + +msgid "The passphrase required to decrypt the private key. This is optional and the value is encrypted at rest." +msgstr "" + +msgid "The path to CI config file. Defaults to .gitlab-ci.yml" +msgstr "" + +msgid "The phase of the development lifecycle." +msgstr "" + +msgid "The pipelines schedule runs pipelines in the future, repeatedly, for specific branches or tags. Those scheduled pipelines will inherit limited project access based on their associated user." +msgstr "" + +msgid "The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit." +msgstr "" + +msgid "The private key to use when a client certificate is provided. This value is encrypted at rest." +msgstr "" + +msgid "The production stage shows the total time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle." +msgstr "" + +msgid "The project can be accessed by any logged in user." +msgstr "" + +msgid "The project can be accessed without any authentication." +msgstr "" + +msgid "The pseudonymizer data collection is disabled. When enabled, GitLab will run a background job that will produce pseudonymized CSVs of the GitLab database that will be uploaded to your configured object storage directory." +msgstr "" + +msgid "The repository for this project does not exist." +msgstr "" + +msgid "The repository for this project is empty" +msgstr "" + +msgid "The repository must be accessible over http://, https:// or git://." +msgstr "" + +msgid "The repository must be accessible over http://, https://, ssh:// and git://." +msgstr "" + +msgid "The review stage shows the time from creating the merge request to merging it. The data will automatically be added after you merge your first merge request." +msgstr "" + +msgid "The roadmap shows the progress of your epics along a timeline" +msgstr "" + +msgid "The secure token used by the Runner to checkout the project" +msgstr "" + +msgid "The staging stage shows the time between merging the MR and deploying code to the production environment. The data will be automatically added once you deploy to production for the first time." +msgstr "" + +msgid "The tabs below will be removed in a future version" +msgstr "" + +msgid "The testing stage shows the time GitLab CI takes to run every pipeline for the related merge request. The data will automatically be added after your first pipeline finishes running." +msgstr "" + +msgid "The time in seconds GitLab will keep failure information. When no failures occur during this time, information about the mount is reset." +msgstr "" + +msgid "The time in seconds GitLab will try to access storage. After this time a timeout error will be raised." +msgstr "" + +msgid "The time in seconds between storage checks. If a check did not complete yet, GitLab will skip the next check." +msgstr "" + +msgid "The time taken by each data entry gathered by that stage." +msgstr "" + +msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." +msgstr "" + +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + +msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." +msgstr "" + +msgid "The user map is a mapping of the FogBugz users that participated on your projects to the way their email address and usernames will be imported into GitLab. You can change this by populating the table below." +msgstr "" + +msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." +msgstr "" + +msgid "There are no archived projects yet" +msgstr "" + +msgid "There are no issues to show" +msgstr "" + +msgid "There are no labels yet" +msgstr "" + +msgid "There are no merge requests to show" +msgstr "" + +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + +msgid "There are problems accessing Git storage: " +msgstr "" + +msgid "There was an error adding a todo." +msgstr "" + +msgid "There was an error deleting the todo." +msgstr "" + +msgid "There was an error loading users activity calendar." +msgstr "" + +msgid "There was an error saving your notification settings." +msgstr "" + +msgid "There was an error subscribing to this label." +msgstr "" + +msgid "There was an error when reseting email token." +msgstr "" + +msgid "There was an error when subscribing to this label." +msgstr "" + +msgid "There was an error when unsubscribing from this label." +msgstr "" + +msgid "They can be managed using the %{link}." +msgstr "" + +msgid "Third party offers" +msgstr "" + +msgid "This GitLab instance does not provide any shared Runners yet. Instance administrators can register shared Runners in the admin area." +msgstr "" + +msgid "This application was created by %{link_to_owner}." +msgstr "" + +msgid "This application will be able to:" +msgstr "" + +msgid "This board's scope is reduced" +msgstr "" + +msgid "This branch has changed since you started editing. Would you like to create a new branch?" +msgstr "" + +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This diff is collapsed." +msgstr "" + +msgid "This directory" +msgstr "" + +msgid "This group" +msgstr "" + +msgid "This group allows you to sign in with your %{group_name} Single Sign-On account. This will redirect you to an external sign in page." +msgstr "" + +msgid "This group does not provide any group Runners yet." +msgstr "" + +msgid "This is a confidential issue." +msgstr "" + +msgid "This is the author's first Merge Request to this project." +msgstr "" + +msgid "This issue is confidential" +msgstr "" + +msgid "This issue is confidential and locked." +msgstr "" + +msgid "This issue is locked." +msgstr "" + +msgid "This job depends on a user to trigger its process. Often they are used to deploy code to production environments" +msgstr "" + +msgid "This job depends on upstream jobs that need to succeed in order for this job to be triggered" +msgstr "" + +msgid "This job does not have a trace." +msgstr "" + +msgid "This job has been canceled" +msgstr "" + +msgid "This job has been skipped" +msgstr "" + +msgid "This job has not been triggered yet" +msgstr "" + +msgid "This job has not started yet" +msgstr "" + +msgid "This job is an out-of-date deployment to %{environmentLink}." +msgstr "" + +msgid "This job is an out-of-date deployment to %{environmentLink}. View the most recent deployment %{deploymentLink}." +msgstr "" + +msgid "This job is creating a deployment to %{environmentLink} and will overwrite the last %{deploymentLink}." +msgstr "" + +msgid "This job is creating a deployment to %{environmentLink}." +msgstr "" + +msgid "This job is in pending state and is waiting to be picked by a runner" +msgstr "" + +msgid "This job is stuck, because you don't have any active runners online with any of these tags assigned to them:" +msgstr "" + +msgid "This job is stuck, because you don't have any active runners that can run this job." +msgstr "" + +msgid "This job is the most recent deployment to %{link}." +msgstr "" + +msgid "This job requires a manual action" +msgstr "" + +msgid "This means you can not push code until you create an empty repository or import existing one." +msgstr "" + +msgid "This merge request is locked." +msgstr "" + +msgid "This option is disabled as you don't have write permissions for the current branch" +msgstr "" + +msgid "This option is disabled while you still have unstaged changes" +msgstr "" + +msgid "This page is unavailable because you are not allowed to read information across multiple projects." +msgstr "" + +msgid "This page will be removed in a future release." +msgstr "" + +msgid "This project" +msgstr "" + +msgid "This project does not belong to a group and can therefore not make use of group Runners." +msgstr "" + +msgid "This project does not have billing enabled. To create a cluster, enable billing and try again." +msgstr "" + +msgid "This repository" +msgstr "" + +msgid "This runner will only run on pipelines triggered on protected branches" +msgstr "" + +msgid "This source diff could not be displayed because it is too large." +msgstr "" + +msgid "This timeout will take precedence when lower than Project-defined timeout" +msgstr "" + +msgid "This user has no identities" +msgstr "" + +msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches." +msgstr "" + +msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches. Upon creation or when reassigning you can only assign yourself to be the mirror user." +msgstr "" + +msgid "This will delete the custom metric, Are you sure?" +msgstr "" + +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + +msgid "Time before an issue gets scheduled" +msgstr "" + +msgid "Time before an issue starts implementation" +msgstr "" + +msgid "Time between merge request creation and merge/close" +msgstr "" + +msgid "Time in seconds GitLab will wait for a response from the external service. When the service does not respond in time, access will be denied." +msgstr "" + +msgid "Time remaining" +msgstr "" + +msgid "Time spent" +msgstr "" + +msgid "Time tracking" +msgstr "" + +msgid "Time until first merge request" +msgstr "" + +msgid "TimeTrackingEstimated|Est" +msgstr "" + +msgid "TimeTracking|Estimated:" +msgstr "" + +msgid "TimeTracking|Spent" +msgstr "" + +msgid "Timeago|%s days ago" +msgstr "" + +msgid "Timeago|%s days remaining" +msgstr "" + +msgid "Timeago|%s hours ago" +msgstr "" + +msgid "Timeago|%s hours remaining" +msgstr "" + +msgid "Timeago|%s minutes ago" +msgstr "" + +msgid "Timeago|%s minutes remaining" +msgstr "" + +msgid "Timeago|%s months ago" +msgstr "" + +msgid "Timeago|%s months remaining" +msgstr "" + +msgid "Timeago|%s seconds ago" +msgstr "" + +msgid "Timeago|%s seconds remaining" +msgstr "" + +msgid "Timeago|%s weeks ago" +msgstr "" + +msgid "Timeago|%s weeks remaining" +msgstr "" + +msgid "Timeago|%s years ago" +msgstr "" + +msgid "Timeago|%s years remaining" +msgstr "" + +msgid "Timeago|1 day ago" +msgstr "" + +msgid "Timeago|1 day remaining" +msgstr "" + +msgid "Timeago|1 hour ago" +msgstr "" + +msgid "Timeago|1 hour remaining" +msgstr "" + +msgid "Timeago|1 minute ago" +msgstr "" + +msgid "Timeago|1 minute remaining" +msgstr "" + +msgid "Timeago|1 month ago" +msgstr "" + +msgid "Timeago|1 month remaining" +msgstr "" + +msgid "Timeago|1 week ago" +msgstr "" + +msgid "Timeago|1 week remaining" +msgstr "" + +msgid "Timeago|1 year ago" +msgstr "" + +msgid "Timeago|1 year remaining" +msgstr "" + +msgid "Timeago|Past due" +msgstr "" + +msgid "Timeago|in %s days" +msgstr "" + +msgid "Timeago|in %s hours" +msgstr "" + +msgid "Timeago|in %s minutes" +msgstr "" + +msgid "Timeago|in %s months" +msgstr "" + +msgid "Timeago|in %s seconds" +msgstr "" + +msgid "Timeago|in %s weeks" +msgstr "" + +msgid "Timeago|in %s years" +msgstr "" + +msgid "Timeago|in 1 day" +msgstr "" + +msgid "Timeago|in 1 hour" +msgstr "" + +msgid "Timeago|in 1 minute" +msgstr "" + +msgid "Timeago|in 1 month" +msgstr "" + +msgid "Timeago|in 1 week" +msgstr "" + +msgid "Timeago|in 1 year" +msgstr "" + +msgid "Timeago|just now" +msgstr "" + +msgid "Timeago|right now" +msgstr "" + +msgid "Timeout" +msgstr "" + +msgid "Time|hr" +msgid_plural "Time|hrs" +msgstr[0] "" +msgstr[1] "" + +msgid "Time|min" +msgid_plural "Time|mins" +msgstr[0] "" +msgstr[1] "" + +msgid "Time|s" +msgstr "" + +msgid "Tip:" +msgstr "" + +msgid "Title" +msgstr "" + +msgid "To GitLab" +msgstr "" + +msgid "To add an SSH key you need to %{generate_link_start}generate one%{link_end} or use an %{existing_link_start}existing key%{link_end}." +msgstr "" + +msgid "To connect GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to connect." +msgstr "" + +msgid "To connect GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" +msgstr "" + +msgid "To connect an SVN repository, check out %{svn_link}." +msgstr "" + +msgid "To define internal users, first enable new users set to external" +msgstr "" + +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + +msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." +msgstr "" + +msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." +msgstr "" + +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + +msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." +msgstr "" + +msgid "To import GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" +msgstr "" + +msgid "To import an SVN repository, check out %{svn_link}." +msgstr "" + +msgid "To move or copy an entire GitLab project from another GitLab installation to this one, navigate to the original project's settings page, generate an export file, and upload it here." +msgstr "" + +msgid "To only use CI/CD features for an external repository, choose CI/CD for external repo." +msgstr "" + +msgid "To set up SAML authentication for your group through an identity provider like Azure, Okta, Onelogin, Ping Identity, or your custom SAML 2.0 provider:" +msgstr "" + +msgid "To start serving your jobs you can add Runners to your group" +msgstr "" + +msgid "To this GitLab instance" +msgstr "" + +msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." +msgstr "" + +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "" + +msgid "To widen your search, change or remove filters." +msgstr "" + +msgid "Todo" +msgstr "" + +msgid "Todos" +msgstr "" + +msgid "Toggle Sidebar" +msgstr "" + +msgid "Toggle commit description" +msgstr "" + +msgid "Toggle discussion" +msgstr "" + +msgid "Toggle navigation" +msgstr "" + +msgid "Toggle sidebar" +msgstr "" + +msgid "ToggleButton|Toggle Status: OFF" +msgstr "" + +msgid "ToggleButton|Toggle Status: ON" +msgstr "" + +msgid "Token" +msgstr "" + +msgid "Too many changes to show." +msgstr "" + +msgid "Total Contributions" +msgstr "" + +msgid "Total Time" +msgstr "" + +msgid "Total test time for all commits/merges" +msgstr "" + +msgid "Total: %{total}" +msgstr "" + +msgid "Track activity with Contribution Analytics." +msgstr "" + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Track time with quick actions" +msgstr "" + +msgid "Trending" +msgstr "" + +msgid "Trigger" +msgstr "" + +msgid "Trigger pipelines for mirror updates" +msgstr "" + +msgid "Trigger pipelines when branches or tags are updated from the upstream repository. Depending on the activity of the upstream repository, this may greatly increase the load on your CI runners. Only enable this if you know they can handle the load." +msgstr "" + +msgid "Trigger this manual action" +msgstr "" + +msgid "Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions." +msgstr "" + +msgid "Try again" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + +msgid "Twitter" +msgstr "" + +msgid "Type" +msgstr "" + +msgid "Unable to load the diff. %{button_try_again}" +msgstr "" + +msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" +msgstr "" + +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + +msgid "Unknown" +msgstr "" + +msgid "Unlock" +msgstr "" + +msgid "Unlock this %{issuableDisplayName}? Everyone will be able to comment." +msgstr "" + +msgid "Unlocked" +msgstr "" + +msgid "Unresolve discussion" +msgstr "" + +msgid "Unstage" +msgstr "" + +msgid "Unstage all changes" +msgstr "" + +msgid "Unstage changes" +msgstr "" + +msgid "Unstaged" +msgstr "" + +msgid "Unstaged %{type}" +msgstr "" + +msgid "Unstaged and staged %{type}" +msgstr "" + +msgid "Unstar" +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Unsubscribe at group level" +msgstr "" + +msgid "Unsubscribe at project level" +msgstr "" + +msgid "Unverified" +msgstr "" + +msgid "Up to date" +msgstr "" + +msgid "Update" +msgstr "" + +msgid "Update now" +msgstr "" + +msgid "Update your group name, description, avatar, and other general settings." +msgstr "" + +msgid "Updating" +msgstr "" + +msgid "Upgrade your plan to activate Advanced Global Search." +msgstr "" + +msgid "Upgrade your plan to activate Contribution Analytics." +msgstr "" + +msgid "Upgrade your plan to activate Group Webhooks." +msgstr "" + +msgid "Upgrade your plan to activate Issue weight." +msgstr "" + +msgid "Upgrade your plan to improve Issue boards." +msgstr "" + +msgid "Upload GoogleCodeProjectHosting.json here:" +msgstr "" + +msgid "Upload New File" +msgstr "" + +msgid "Upload file" +msgstr "" + +msgid "UploadLink|click to upload" +msgstr "" + +msgid "Upvotes" +msgstr "" + +msgid "Usage ping is not enabled" +msgstr "" + +msgid "Usage statistics" +msgstr "" + +msgid "Use %{native_redirect_uri} for local tests" +msgstr "" + +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + +msgid "Use group milestones to manage issues from multiple projects in the same milestone." +msgstr "" + +msgid "Use one line per URI" +msgstr "" + +msgid "Use template" +msgstr "" + +msgid "Use the following registration token during setup:" +msgstr "" + +msgid "Use your global notification setting" +msgstr "" + +msgid "Used by members to sign in to your group in GitLab" +msgstr "" + +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + +msgid "User Settings" +msgstr "" + +msgid "User and IP Rate Limits" +msgstr "" + +msgid "User map" +msgstr "" + +msgid "Users" +msgstr "" + +msgid "Variables" +msgstr "" + +msgid "Variables are applied to environments via the runner. They can be protected by only exposing them to protected branches or tags. You can use variables for passwords, secret keys, or whatever you want." +msgstr "" + +msgid "Various container registry settings." +msgstr "" + +msgid "Various email settings." +msgstr "" + +msgid "Various settings that affect GitLab performance." +msgstr "" + +msgid "Verification information" +msgstr "" + +msgid "Verified" +msgstr "" + +msgid "Version" +msgstr "" + +msgid "View epics list" +msgstr "" + +msgid "View file @ " +msgstr "" + +msgid "View group labels" +msgstr "" + +msgid "View issue" +msgstr "" + +msgid "View it on GitLab" +msgstr "" + +msgid "View jobs" +msgstr "" + +msgid "View labels" +msgstr "" + +msgid "View log" +msgstr "" + +msgid "View open merge request" +msgstr "" + +msgid "View project labels" +msgstr "" + +msgid "View replaced file @ " +msgstr "" + +msgid "Visibility and access controls" +msgstr "" + +msgid "Visibility level:" +msgstr "" + +msgid "Visibility:" +msgstr "" + +msgid "VisibilityLevel|Internal" +msgstr "" + +msgid "VisibilityLevel|Private" +msgstr "" + +msgid "VisibilityLevel|Public" +msgstr "" + +msgid "VisibilityLevel|Unknown" +msgstr "" + +msgid "Want to see the data? Please ask an administrator for access." +msgstr "" + +msgid "We detected potential spam in the %{humanized_resource_name}. Please solve the reCAPTCHA to proceed." +msgstr "" + +msgid "We don't have enough data to show this stage." +msgstr "" + +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + +msgid "Web IDE" +msgstr "" + +msgid "Web terminal" +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." +msgstr "" + +msgid "Weeks" +msgstr "" + +msgid "Weight" +msgstr "" + +msgid "Weight %{weight}" +msgstr "" + +msgid "When a runner is locked, it cannot be assigned to other projects" +msgstr "" + +msgid "When enabled, users cannot use GitLab until the terms have been accepted." +msgstr "" + +msgid "When leaving the URL blank, classification labels can still be specified without disabling cross project features or performing external authorization checks." +msgstr "" + +msgid "Wiki" +msgstr "" + +msgid "WikiClone|Clone your wiki" +msgstr "" + +msgid "WikiClone|Git Access" +msgstr "" + +msgid "WikiClone|Install Gollum" +msgstr "" + +msgid "WikiClone|It is recommended to install %{markdown} so that GFM features render locally:" +msgstr "" + +msgid "WikiClone|Start Gollum and edit locally" +msgstr "" + +msgid "WikiEditPageTip|Tip: You can move this page by adding the path to the beginning of the title." +msgstr "" + +msgid "WikiEdit|There is already a page with the same title in that path." +msgstr "" + +msgid "WikiEmptyIssueMessage|Suggest wiki improvement" +msgstr "" + +msgid "WikiEmptyIssueMessage|You must be a project member in order to add wiki pages. If you have suggestions for how to improve the wiki for this project, consider opening an issue in the %{issues_link}." +msgstr "" + +msgid "WikiEmptyIssueMessage|issue tracker" +msgstr "" + +msgid "WikiEmpty|A wiki is where you can store all the details about your project. This can include why you've created it, its principles, how to use it, and so on." +msgstr "" + +msgid "WikiEmpty|Create your first page" +msgstr "" + +msgid "WikiEmpty|Suggest wiki improvement" +msgstr "" + +msgid "WikiEmpty|The wiki lets you write documentation for your project" +msgstr "" + +msgid "WikiEmpty|This project has no wiki pages" +msgstr "" + +msgid "WikiEmpty|You must be a project member in order to add wiki pages." +msgstr "" + +msgid "WikiHistoricalPage|This is an old version of this page." +msgstr "" + +msgid "WikiHistoricalPage|You can view the %{most_recent_link} or browse the %{history_link}." +msgstr "" + +msgid "WikiHistoricalPage|history" +msgstr "" + +msgid "WikiHistoricalPage|most recent version" +msgstr "" + +msgid "WikiMarkdownDocs|More examples are in the %{docs_link}" +msgstr "" + +msgid "WikiMarkdownDocs|documentation" +msgstr "" + +msgid "WikiMarkdownTip|To link to a (new) page, simply type %{link_example}" +msgstr "" + +msgid "WikiNewPagePlaceholder|how-to-setup" +msgstr "" + +msgid "WikiNewPageTip|Tip: You can specify the full path for the new file. We will automatically create any missing directories." +msgstr "" + +msgid "WikiNewPageTitle|New Wiki Page" +msgstr "" + +msgid "WikiPageConfirmDelete|Are you sure you want to delete this page?" +msgstr "" + +msgid "WikiPageConfirmDelete|Delete page" +msgstr "" + +msgid "WikiPageConfirmDelete|Delete page %{pageTitle}?" +msgstr "" + +msgid "WikiPageConflictMessage|Someone edited the page the same time you did. Please check out %{page_link} and make sure your changes will not unintentionally remove theirs." +msgstr "" + +msgid "WikiPageConflictMessage|the page" +msgstr "" + +msgid "WikiPageCreate|Create %{page_title}" +msgstr "" + +msgid "WikiPageEdit|Update %{page_title}" +msgstr "" + +msgid "WikiPage|Page slug" +msgstr "" + +msgid "WikiPage|Write your content or drag files here…" +msgstr "" + +msgid "Wiki|Create Page" +msgstr "" + +msgid "Wiki|Create page" +msgstr "" + +msgid "Wiki|Edit Page" +msgstr "" + +msgid "Wiki|More Pages" +msgstr "" + +msgid "Wiki|New page" +msgstr "" + +msgid "Wiki|Page history" +msgstr "" + +msgid "Wiki|Page version" +msgstr "" + +msgid "Wiki|Pages" +msgstr "" + +msgid "Wiki|Wiki Pages" +msgstr "" + +msgid "With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members." +msgstr "" + +msgid "Withdraw Access Request" +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "Yes, add it" +msgstr "" + +msgid "Yes, let me map Google Code users to full names or GitLab users." +msgstr "" + +msgid "You are an admin, which means granting access to %{client_name} will allow them to interact with GitLab as an admin as well. Proceed with caution." +msgstr "" + +msgid "You are going to remove %{group_name}. Removed groups CANNOT be restored! Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are going to remove %{project_full_name}. Removed project CANNOT be restored! Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are going to remove the fork relationship to source project %{forked_from_project}. Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are going to transfer %{project_full_name} to another owner. Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are on a read-only GitLab instance." +msgstr "" + +msgid "You are on a secondary, read-only Geo node. If you want to make changes, you must visit this page on the %{primary_node}." +msgstr "" + +msgid "You can %{linkStart}view the blob%{linkEnd} instead." +msgstr "" + +msgid "You can also create a project from the command line." +msgstr "" + +msgid "You can also star a label to make it a priority label." +msgstr "" + +msgid "You can also test your .gitlab-ci.yml in the %{linkStart}Lint%{linkEnd}" +msgstr "" + +msgid "You can easily contribute to them by requesting to join these groups." +msgstr "" + +msgid "You can easily install a Runner on a Kubernetes cluster. %{link_to_help_page}" +msgstr "" + +msgid "You can move around the graph by using the arrow keys." +msgstr "" + +msgid "You can only add files when you are on a branch" +msgstr "" + +msgid "You can only edit files when you are on a branch" +msgstr "" + +msgid "You can reset runners registration token by pressing a button below." +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}" +msgstr "" + +msgid "You can set up jobs to only use Runners with specific tags. Separate tags with commas." +msgstr "" + +msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." +msgstr "" + +msgid "You cannot write to this read-only GitLab instance." +msgstr "" + +msgid "You do not have the correct permissions to override the settings from the LDAP group sync." +msgstr "" + +msgid "You don't have any applications" +msgstr "" + +msgid "You don't have any authorized applications" +msgstr "" + +msgid "You have no permissions" +msgstr "" + +msgid "You have reached your project limit" +msgstr "" + +msgid "You must accept our Terms of Service and privacy policy in order to register an account" +msgstr "" + +msgid "You must have maintainer access to force delete a lock" +msgstr "" + +msgid "You need a different license to enable FileLocks feature" +msgstr "" + +msgid "You need git-lfs version %{min_git_lfs_version} (or greater) to continue. Please visit https://git-lfs.github.com" +msgstr "" + +msgid "You need permission." +msgstr "" + +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + +msgid "You will not get any notifications via email" +msgstr "" + +msgid "You will only receive notifications for the events you choose" +msgstr "" + +msgid "You will only receive notifications for threads you have participated in" +msgstr "" + +msgid "You will receive notifications for any activity" +msgstr "" + +msgid "You will receive notifications only for comments in which you were @mentioned" +msgstr "" + +msgid "You won't be able to pull or push project code via %{protocol} until you %{set_password_link} on your account" +msgstr "" + +msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" +msgstr "" + +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + +msgid "You'll need to use different branch names to get a valid comparison." +msgstr "" + +msgid "You're receiving this email because %{reason}." +msgstr "" + +msgid "You're receiving this email because of your account on %{host}." +msgstr "" + +msgid "You're receiving this email because of your account on %{host}. %{manage_notifications_link} · %{help_link}" +msgstr "" + +msgid "YouTube" +msgstr "" + +msgid "Your Groups" +msgstr "" + +msgid "Your Kubernetes cluster information on this page is still editable, but you are advised to disable and reconfigure" +msgstr "" + +msgid "Your Projects (default)" +msgstr "" + +msgid "Your Projects' Activity" +msgstr "" + +msgid "Your Todos" +msgstr "" + +msgid "Your applications (%{size})" +msgstr "" + +msgid "Your authorized applications" +msgstr "" + +msgid "Your changes can be committed to %{branch_name} because a merge request is open." +msgstr "" + +msgid "Your changes have been committed. Commit %{commitId} %{commitStats}" +msgstr "" + +msgid "Your comment will not be visible to the public." +msgstr "" + +msgid "Your groups" +msgstr "" + +msgid "Your name" +msgstr "" + +msgid "Your projects" +msgstr "" + +msgid "a deleted user" +msgstr "" + +msgid "ago" +msgstr "" + +msgid "among other things" +msgstr "" + +msgid "assign yourself" +msgstr "" + +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about Container Scanning %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about DAST %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about Dependency Scanning %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about SAST %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{namespace} is affected by %{vulnerability}." +msgstr "" + +msgid "ciReport|%{remainingPackagesCount} more" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" + +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} is loading" +msgstr "" + +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" + +msgid "ciReport|(errors when loading results)" +msgstr "" + +msgid "ciReport|(is loading)" +msgstr "" + +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" + +msgid "ciReport|Class" +msgstr "" + +msgid "ciReport|Code quality" +msgstr "" + +msgid "ciReport|Confidence" +msgstr "" + +msgid "ciReport|Container scanning" +msgstr "" + +msgid "ciReport|Container scanning detected" +msgstr "" + +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgstr "" + +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgstr "" + +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" +msgstr "" + +msgid "ciReport|Description" +msgstr "" + +msgid "ciReport|Dismiss vulnerability" +msgstr "" + +msgid "ciReport|Dismissed by" +msgstr "" + +msgid "ciReport|Dynamic Application Security Testing (DAST) detects known vulnerabilities in your web application." +msgstr "" + +msgid "ciReport|Failed to load %{reportName} report" +msgstr "" + +msgid "ciReport|File" +msgstr "" + +msgid "ciReport|Fixed:" +msgstr "" + +msgid "ciReport|Identifiers" +msgstr "" + +msgid "ciReport|Instances" +msgstr "" + +msgid "ciReport|Learn more about interacting with security reports (Alpha)." +msgstr "" + +msgid "ciReport|License management detected %d license for the source branch only" +msgid_plural "ciReport|License management detected %d licenses for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|License management detected %d new license" +msgid_plural "ciReport|License management detected %d new licenses" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|License management detected no licenses for the source branch only" +msgstr "" + +msgid "ciReport|License management detected no new licenses" +msgstr "" + +msgid "ciReport|Links" +msgstr "" + +msgid "ciReport|Loading %{reportName} report" +msgstr "" + +msgid "ciReport|Method" +msgstr "" + +msgid "ciReport|Namespace" +msgstr "" + +msgid "ciReport|No changes to code quality" +msgstr "" + +msgid "ciReport|No changes to performance metrics" +msgstr "" + +msgid "ciReport|Performance metrics" +msgstr "" + +msgid "ciReport|Revert dismissal" +msgstr "" + +msgid "ciReport|SAST" +msgstr "" + +msgid "ciReport|SAST detected" +msgstr "" + +msgid "ciReport|Security scanning" +msgstr "" + +msgid "ciReport|Security scanning failed loading any results" +msgstr "" + +msgid "ciReport|Severity" +msgstr "" + +msgid "ciReport|Solution" +msgstr "" + +msgid "ciReport|Static Application Security Testing (SAST) detects known vulnerabilities in your source code." +msgstr "" + +msgid "ciReport|There was an error creating the issue. Please try again." +msgstr "" + +msgid "ciReport|There was an error dismissing the vulnerability. Please try again." +msgstr "" + +msgid "ciReport|There was an error loading DAST report" +msgstr "" + +msgid "ciReport|There was an error loading SAST report" +msgstr "" + +msgid "ciReport|There was an error loading container scanning report" +msgstr "" + +msgid "ciReport|There was an error loading dependency scanning report" +msgstr "" + +msgid "ciReport|There was an error reverting the dismissal. Please try again." +msgstr "" + +msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." +msgstr "" + +msgid "ciReport|Used by %{packagesString}" +msgid_plural "ciReport|Used by %{packagesString}, and %{lastPackage}" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|View full report" +msgstr "" + +msgid "ciReport|no vulnerabilities" +msgstr "" + +msgid "ciReport|on pipeline" +msgstr "" + +msgid "command line instructions" +msgstr "" + +msgid "confidentiality|You are going to turn off the confidentiality. This means everyone will be able to see and leave a comment on this issue." +msgstr "" + +msgid "confidentiality|You are going to turn on the confidentiality. This means that only team members with at least Reporter access are able to see and leave comments on the issue." +msgstr "" + +msgid "connecting" +msgstr "" + +msgid "could not read private key, is the passphrase correct?" +msgstr "" + +msgid "customize" +msgstr "" + +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +msgid "deploy token" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "done" +msgstr "" + +msgid "enabled" +msgstr "" + +msgid "estimateCommand|%{slash_command} will update the estimated time with the latest command." +msgstr "" + +msgid "for this project" +msgstr "" + +msgid "here" +msgstr "" + +msgid "https://your-bitbucket-server" +msgstr "" + +msgid "import flow" +msgstr "" + +msgid "importing" +msgstr "" + +msgid "instance completed" +msgid_plural "instances completed" +msgstr[0] "" +msgstr[1] "" + +msgid "is invalid because there is downstream lock" +msgstr "" + +msgid "is invalid because there is upstream lock" +msgstr "" + +msgid "is not a valid X509 certificate." +msgstr "" + +msgid "issue boards" +msgstr "" + +msgid "latest version" +msgstr "" + +msgid "license management" +msgstr "" + +msgid "locked by %{path_lock_user_name} %{created_at}" +msgstr "" + +msgid "merge request" +msgid_plural "merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "mrWidget| Please restore it or use a different %{missingBranchName} branch" +msgstr "" + +msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage %{emphasisStart} decreased %{emphasisEnd} from %{memoryFrom}MB to %{memoryTo}MB" +msgstr "" + +msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage %{emphasisStart} increased %{emphasisEnd} from %{memoryFrom}MB to %{memoryTo}MB" +msgstr "" + +msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage is %{emphasisStart} unchanged %{emphasisEnd} at %{memoryFrom}MB" +msgstr "" + +msgid "mrWidget|Add approval" +msgstr "" + +msgid "mrWidget|Allows commits from members who can merge to the target branch" +msgstr "" + +msgid "mrWidget|An error occured while removing your approval." +msgstr "" + +msgid "mrWidget|An error occured while retrieving approval data for this merge request." +msgstr "" + +msgid "mrWidget|An error occurred while submitting your approval." +msgstr "" + +msgid "mrWidget|Approve" +msgstr "" + +msgid "mrWidget|Approved by" +msgstr "" + +msgid "mrWidget|Cancel automatic merge" +msgstr "" + +msgid "mrWidget|Check out branch" +msgstr "" + +msgid "mrWidget|Checking ability to merge automatically" +msgstr "" + +msgid "mrWidget|Cherry-pick" +msgstr "" + +msgid "mrWidget|Cherry-pick this merge request in a new merge request" +msgstr "" + +msgid "mrWidget|Closed" +msgstr "" + +msgid "mrWidget|Closed by" +msgstr "" + +msgid "mrWidget|Closes" +msgstr "" + +msgid "mrWidget|Create an issue to resolve them later" +msgstr "" + +msgid "mrWidget|Deployment statistics are not available currently" +msgstr "" + +msgid "mrWidget|Did not close" +msgstr "" + +msgid "mrWidget|Email patches" +msgstr "" + +msgid "mrWidget|Failed to load deployment statistics" +msgstr "" + +msgid "mrWidget|Fast-forward merge is not possible. To merge this request, first rebase locally." +msgstr "" + +msgid "mrWidget|If the %{branch} branch exists in your local repository, you can merge this merge request manually using the" +msgstr "" + +msgid "mrWidget|If the %{missingBranchName} branch exists in your local repository, you can merge this merge request manually using the command line" +msgstr "" + +msgid "mrWidget|Loading deployment statistics" +msgstr "" + +msgid "mrWidget|Mentions" +msgstr "" + +msgid "mrWidget|Merge" +msgstr "" + +msgid "mrWidget|Merge failed." +msgstr "" + +msgid "mrWidget|Merge locally" +msgstr "" + +msgid "mrWidget|Merge request approved" +msgstr "" + +msgid "mrWidget|Merge request approved; you can approve additionally" +msgstr "" + +msgid "mrWidget|Merged by" +msgstr "" + +msgid "mrWidget|No Approval required" +msgstr "" + +msgid "mrWidget|No Approval required; you can still approve" +msgstr "" + +msgid "mrWidget|Open in Web IDE" +msgstr "" + +msgid "mrWidget|Pipeline blocked. The pipeline for this merge request requires a manual action to proceed" +msgstr "" + +msgid "mrWidget|Plain diff" +msgstr "" + +msgid "mrWidget|Ready to be merged automatically. Ask someone with write access to this repository to merge this request" +msgstr "" + +msgid "mrWidget|Refresh" +msgstr "" + +msgid "mrWidget|Refresh now" +msgstr "" + +msgid "mrWidget|Refreshing now" +msgstr "" + +msgid "mrWidget|Remove Source Branch" +msgstr "" + +msgid "mrWidget|Remove source branch" +msgstr "" + +msgid "mrWidget|Remove your approval" +msgstr "" + +msgid "mrWidget|Request to merge" +msgstr "" + +msgid "mrWidget|Requires 1 more approval" +msgid_plural "mrWidget|Requires %d more approvals" +msgstr[0] "" +msgstr[1] "" + +msgid "mrWidget|Requires 1 more approval by" +msgid_plural "mrWidget|Requires %d more approvals by" +msgstr[0] "" +msgstr[1] "" + +msgid "mrWidget|Resolve conflicts" +msgstr "" + +msgid "mrWidget|Resolve these conflicts or ask someone with write access to this repository to merge it locally" +msgstr "" + +msgid "mrWidget|Revert" +msgstr "" + +msgid "mrWidget|Revert this merge request in a new merge request" +msgstr "" + +msgid "mrWidget|Set by" +msgstr "" + +msgid "mrWidget|The changes were merged into" +msgstr "" + +msgid "mrWidget|The changes were not merged into" +msgstr "" + +msgid "mrWidget|The changes will be merged into" +msgstr "" + +msgid "mrWidget|The pipeline for this merge request failed. Please retry the job or push a new commit to fix the failure" +msgstr "" + +msgid "mrWidget|The source branch HEAD has recently changed. Please reload the page and review the changes before merging" +msgstr "" + +msgid "mrWidget|The source branch has been removed" +msgstr "" + +msgid "mrWidget|The source branch is %{commitsBehindLinkStart}%{commitsBehind}%{commitsBehindLinkEnd} the target branch" +msgstr "" + +msgid "mrWidget|The source branch is being removed" +msgstr "" + +msgid "mrWidget|The source branch will be removed" +msgstr "" + +msgid "mrWidget|The source branch will not be removed" +msgstr "" + +msgid "mrWidget|There are merge conflicts" +msgstr "" + +msgid "mrWidget|There are unresolved discussions. Please resolve these discussions" +msgstr "" + +msgid "mrWidget|This merge request failed to be merged automatically" +msgstr "" + +msgid "mrWidget|This merge request is in the process of being merged" +msgstr "" + +msgid "mrWidget|This project is archived, write access has been disabled" +msgstr "" + +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + +msgid "mrWidget|You can merge this merge request manually using the" +msgstr "" + +msgid "mrWidget|You can remove source branch now" +msgstr "" + +msgid "mrWidget|branch does not exist." +msgstr "" + +msgid "mrWidget|command line" +msgstr "" + +msgid "mrWidget|into" +msgstr "" + +msgid "mrWidget|to be merged automatically when the pipeline succeeds" +msgstr "" + +msgid "n/a" +msgstr "" + +msgid "new merge request" +msgstr "" + +msgid "notification emails" +msgstr "" + +msgid "or" +msgstr "" + +msgid "out of %d total test" +msgid_plural "out of %d total tests" +msgstr[0] "" +msgstr[1] "" + +msgid "parent" +msgid_plural "parents" +msgstr[0] "" +msgstr[1] "" + +msgid "password" +msgstr "" + +msgid "personal access token" +msgstr "" + +msgid "private key does not match certificate." +msgstr "" + +msgid "remaining" +msgstr "" + +msgid "remove" +msgstr "" + +msgid "remove due date" +msgstr "" + +msgid "remove weight" +msgstr "" + +msgid "source" +msgstr "" + +msgid "spendCommand|%{slash_command} will update the sum of the time spent." +msgstr "" + +msgid "started" +msgstr "" + +msgid "this document" +msgstr "" + +msgid "to help your contributors communicate effectively!" +msgstr "" + +msgid "toggle collapse" +msgstr "" + +msgid "username" +msgstr "" + +msgid "uses Kubernetes clusters to deploy your code!" +msgstr "" + +msgid "view it on GitLab" +msgstr "" + +msgid "with %{additions} additions, %{deletions} deletions." +msgstr "" + +msgid "within %d minute " +msgid_plural "within %d minutes " +msgstr[0] "" +msgstr[1] "" + diff --git a/locale/nb_NO/gitlab.po b/locale/nb_NO/gitlab.po new file mode 100644 index 00000000000..b04b3bb68ef --- /dev/null +++ b/locale/nb_NO/gitlab.po @@ -0,0 +1,9220 @@ +msgid "" +msgstr "" +"Project-Id-Version: gitlab-ee\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: gitlab \n" +"Language-Team: Norwegian Bokmal\n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: gitlab-ee\n" +"X-Crowdin-Language: nb\n" +"X-Crowdin-File: /master/locale/gitlab.pot\n" +"PO-Revision-Date: 2018-10-02 09:27\n" + +msgid " Status" +msgstr "" + +msgid " and" +msgstr "" + +msgid " degraded on %d point" +msgid_plural " degraded on %d points" +msgstr[0] "" +msgstr[1] "" + +msgid " improved on %d point" +msgid_plural " improved on %d points" +msgstr[0] "" +msgstr[1] "" + +msgid "%d changed file" +msgid_plural "%d changed files" +msgstr[0] "" +msgstr[1] "" + +msgid "%d commit" +msgid_plural "%d commits" +msgstr[0] "" +msgstr[1] "" + +msgid "%d commit behind" +msgid_plural "%d commits behind" +msgstr[0] "" +msgstr[1] "" + +msgid "%d exporter" +msgid_plural "%d exporters" +msgstr[0] "" +msgstr[1] "" + +msgid "%d failed test result" +msgid_plural "%d failed test results" +msgstr[0] "" +msgstr[1] "" + +msgid "%d fixed test result" +msgid_plural "%d fixed test results" +msgstr[0] "" +msgstr[1] "" + +msgid "%d issue" +msgid_plural "%d issues" +msgstr[0] "" +msgstr[1] "" + +msgid "%d layer" +msgid_plural "%d layers" +msgstr[0] "" +msgstr[1] "" + +msgid "%d merge request" +msgid_plural "%d merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "%d metric" +msgid_plural "%d metrics" +msgstr[0] "" +msgstr[1] "" + +msgid "%d staged change" +msgid_plural "%d staged changes" +msgstr[0] "" +msgstr[1] "" + +msgid "%d unstaged change" +msgid_plural "%d unstaged changes" +msgstr[0] "" +msgstr[1] "" + +msgid "%d vulnerability" +msgid_plural "%d vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "%s additional commit has been omitted to prevent performance issues." +msgid_plural "%s additional commits have been omitted to prevent performance issues." +msgstr[0] "" +msgstr[1] "" + +msgid "%{actionText} & %{openOrClose} %{noteable}" +msgstr "" + +msgid "%{commit_author_link} authored %{commit_timeago}" +msgstr "" + +msgid "%{counter_storage} (%{counter_repositories} repositories, %{counter_build_artifacts} build artifacts, %{counter_lfs_objects} LFS)" +msgstr "" + +msgid "%{count} participant" +msgid_plural "%{count} participants" +msgstr[0] "" +msgstr[1] "" + +msgid "%{filePath} deleted" +msgstr "" + +msgid "%{firstLabel} +%{labelCount} more" +msgstr "" + +msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." +msgstr "" + +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + +msgid "%{loadingIcon} Started" +msgstr "" + +msgid "%{lock_path} is locked by GitLab User %{lock_user_id}" +msgstr "" + +msgid "%{name}'s avatar" +msgstr "" + +msgid "%{nip_domain} can be used as an alternative to a custom domain." +msgstr "" + +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" + +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgstr "" + +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." +msgstr "" + +msgid "%{openOrClose} %{noteable}" +msgstr "" + +msgid "%{percent}%% complete" +msgstr "" + +msgid "%{storage_name}: failed storage access attempt on host:" +msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" +msgstr[0] "" +msgstr[1] "" + +msgid "%{text} %{files}" +msgid_plural "%{text} %{files} files" +msgstr[0] "" +msgstr[1] "" + +msgid "%{text} is available" +msgstr "" + +msgid "%{title} changes" +msgstr "" + +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" + +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + +msgid "+ %{moreCount} more" +msgstr "" + +msgid "- Runner is active and can process any new jobs" +msgstr "" + +msgid "- Runner is paused and will not receive any new jobs" +msgstr "" + +msgid "- show less" +msgstr "" + +msgid "1 %{type} addition" +msgid_plural "%{count} %{type} additions" +msgstr[0] "" +msgstr[1] "" + +msgid "1 %{type} modification" +msgid_plural "%{count} %{type} modifications" +msgstr[0] "" +msgstr[1] "" + +msgid "1 closed issue" +msgid_plural "%d closed issues" +msgstr[0] "" +msgstr[1] "" + +msgid "1 closed merge request" +msgid_plural "%d closed merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "1 group" +msgid_plural "%d groups" +msgstr[0] "" +msgstr[1] "" + +msgid "1 merged merge request" +msgid_plural "%d merged merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "1 open issue" +msgid_plural "%d open issues" +msgstr[0] "" +msgstr[1] "" + +msgid "1 open merge request" +msgid_plural "%d open merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "1 pipeline" +msgid_plural "%d pipelines" +msgstr[0] "" +msgstr[1] "" + +msgid "1 role" +msgid_plural "%d roles" +msgstr[0] "" +msgstr[1] "" + +msgid "1 user" +msgid_plural "%d users" +msgstr[0] "" +msgstr[1] "" + +msgid "1st contribution!" +msgstr "" + +msgid "2FA enabled" +msgstr "" + +msgid "403|Please contact your GitLab administrator to get the permission." +msgstr "" + +msgid "403|You don't have the permission to access this page." +msgstr "" + +msgid "404|Make sure the address is correct and the page hasn't moved." +msgstr "" + +msgid "404|Page Not Found" +msgstr "" + +msgid "404|Please contact your GitLab administrator if you think this is a mistake." +msgstr "" + +msgid "\"johnsmith@example.com\": \"@johnsmith\" will add \"By @johnsmith\" to all issues and comments originally created by johnsmith@example.com, and will set @johnsmith as the assignee on all issues originally assigned to johnsmith@example.com." +msgstr "" + +msgid "\"johnsmith@example.com\": \"John Smith\" will add \"By John Smith\" to all issues and comments originally created by johnsmith@example.com." +msgstr "" + +msgid "\"johnsmith@example.com\": \"johnsm...@example.com\" will add \"By johnsm...@example.com\" to all issues and comments originally created by johnsmith@example.com. The email address or username is masked to ensure the user's privacy." +msgstr "" + +msgid "\"johnsmith@example.com\": \"johnsmith@example.com\" will add \"By johnsmith@example.com\" to all issues and comments originally created by johnsmith@example.com. By default, the email address or username is masked to ensure the user's privacy. Use this option if you want to show the full email address." +msgstr "" + +msgid "%{changedFilesLength} unstaged and %{stagedFilesLength} staged changes" +msgstr "" + +msgid "%{created_count} created, %{accepted_count} accepted." +msgstr "" + +msgid "%{created_count} created, %{closed_count} closed." +msgstr "" + +msgid "%{group_name} group members" +msgstr "" + +msgid "%{pushes} pushes, more than %{commits} commits by %{people} contributors." +msgstr "" + +msgid "Removes source branch" +msgstr "" + +msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." +msgstr "" + +msgid "A collection of graphs regarding Continuous Integration" +msgstr "" + +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + +msgid "A new branch will be created in your fork and a new merge request will be started." +msgstr "" + +msgid "A project is where you house your files (repository), plan your work (issues), and publish your documentation (wiki), %{among_other_things_link}." +msgstr "" + +msgid "A regular expression that will be used to find the test coverage output in the job trace. Leave blank to disable" +msgstr "" + +msgid "A user with write access to the source branch selected this option" +msgstr "" + +msgid "About GitLab" +msgstr "" + +msgid "About GitLab CE" +msgstr "" + +msgid "About auto deploy" +msgstr "" + +msgid "About this feature" +msgstr "" + +msgid "Abuse Reports" +msgstr "" + +msgid "Abuse reports" +msgstr "" + +msgid "Accept terms" +msgstr "" + +msgid "Accepted MR" +msgstr "" + +msgid "Access Tokens" +msgstr "" + +msgid "Access denied! Please verify you can add deploy keys to this repository." +msgstr "" + +msgid "Access expiration date" +msgstr "" + +msgid "Access to '%{classification_label}' not allowed" +msgstr "" + +msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." +msgstr "" + +msgid "Access your runner token, customize your pipeline configuration, and view your pipeline status and coverage report." +msgstr "" + +msgid "Account" +msgstr "" + +msgid "Account and limit" +msgstr "" + +msgid "Active" +msgstr "" + +msgid "Active Sessions" +msgstr "" + +msgid "Activity" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Add Changelog" +msgstr "" + +msgid "Add Contribution guide" +msgstr "" + +msgid "Add Group Webhooks and GitLab Enterprise Edition." +msgstr "" + +msgid "Add Kubernetes cluster" +msgstr "" + +msgid "Add Readme" +msgstr "" + +msgid "Add additional text to appear in all email communications. %{character_limit} character limit" +msgstr "" + +msgid "Add license" +msgstr "" + +msgid "Add new application" +msgstr "" + +msgid "Add new directory" +msgstr "" + +msgid "Add reaction" +msgstr "" + +msgid "Add todo" +msgstr "" + +msgid "Add user(s) to the group:" +msgstr "" + +msgid "Add users to group" +msgstr "" + +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + +msgid "Additional text" +msgstr "" + +msgid "Admin Area" +msgstr "" + +msgid "Admin Overview" +msgstr "" + +msgid "Admin area" +msgstr "" + +msgid "AdminArea| You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." +msgstr "" + +msgid "AdminArea| You are about to permanently delete the user %{username}. This will delete all of the issues, merge requests, and groups linked to them. To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." +msgstr "" + +msgid "AdminArea|Stop all jobs" +msgstr "" + +msgid "AdminArea|Stop all jobs?" +msgstr "" + +msgid "AdminArea|Stop jobs" +msgstr "" + +msgid "AdminArea|Stopping jobs failed" +msgstr "" + +msgid "AdminArea|You’re about to stop all jobs.This will halt all current jobs that are running." +msgstr "" + +msgid "AdminHealthPageLink|health page" +msgstr "" + +msgid "AdminProjects| You’re about to permanently delete the project %{projectName}, its repository, and all related resources including issues, merge requests, etc.. Once you confirm and press %{strong_start}Delete project%{strong_end}, it cannot be undone or recovered." +msgstr "" + +msgid "AdminProjects|Delete" +msgstr "" + +msgid "AdminProjects|Delete Project %{projectName}?" +msgstr "" + +msgid "AdminProjects|Delete project" +msgstr "" + +msgid "AdminSettings|Specify a domain to use by default for every project's Auto Review Apps and Auto Deploy stages." +msgstr "" + +msgid "AdminUsers|Block user" +msgstr "" + +msgid "AdminUsers|Delete User %{username} and contributions?" +msgstr "" + +msgid "AdminUsers|Delete User %{username}?" +msgstr "" + +msgid "AdminUsers|Delete user" +msgstr "" + +msgid "AdminUsers|Delete user and contributions" +msgstr "" + +msgid "AdminUsers|To confirm, type %{projectName}" +msgstr "" + +msgid "AdminUsers|To confirm, type %{username}" +msgstr "" + +msgid "Advanced" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "All" +msgstr "" + +msgid "All changes are committed" +msgstr "" + +msgid "All features are enabled for blank projects, from templates, or when importing, but you can disable them afterward in the project settings." +msgstr "" + +msgid "All users" +msgstr "" + +msgid "Allow commits from members who can merge to the target branch." +msgstr "" + +msgid "Allow public access to pipelines and job details, including output logs and artifacts" +msgstr "" + +msgid "Allow rendering of PlantUML diagrams in Asciidoc documents." +msgstr "" + +msgid "Allow requests to the local network from hooks and services." +msgstr "" + +msgid "Allows you to add and manage Kubernetes clusters." +msgstr "" + +msgid "Also called \"Issuer\" or \"Relying party trust identifier\"" +msgstr "" + +msgid "Also called \"Relying party service URL\" or \"Reply URL\"" +msgstr "" + +msgid "Alternatively, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to connect." +msgstr "" + +msgid "Alternatively, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." +msgstr "" + +msgid "An SSH key will be automatically generated when the form is submitted. For more information, please refer to the documentation." +msgstr "" + +msgid "An application called %{link_to_client} is requesting access to your GitLab account." +msgstr "" + +msgid "An empty GitLab User field will add the FogBugz user's full name (e.g. \"By John Smith\") in the description of all issues and comments. It will also associate and/or assign these issues and comments with the project creator." +msgstr "" + +msgid "An error accured whilst committing your changes." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "An error occured creating the new branch." +msgstr "" + +msgid "An error occured whilst fetching the job trace." +msgstr "" + +msgid "An error occured whilst fetching the latest pipline." +msgstr "" + +msgid "An error occured whilst loading all the files." +msgstr "" + +msgid "An error occured whilst loading the file content." +msgstr "" + +msgid "An error occured whilst loading the file." +msgstr "" + +msgid "An error occured whilst loading the merge request changes." +msgstr "" + +msgid "An error occured whilst loading the merge request version data." +msgstr "" + +msgid "An error occured whilst loading the merge request." +msgstr "" + +msgid "An error occured whilst loading the pipelines jobs." +msgstr "" + +msgid "An error occurred previewing the blob" +msgstr "" + +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while adding approver" +msgstr "" + +msgid "An error occurred while detecting host keys" +msgstr "" + +msgid "An error occurred while dismissing the alert. Refresh the page and try again." +msgstr "" + +msgid "An error occurred while dismissing the feature highlight. Refresh the page and try dismissing again." +msgstr "" + +msgid "An error occurred while fetching markdown preview" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + +msgid "An error occurred while fetching stages." +msgstr "" + +msgid "An error occurred while fetching the job log." +msgstr "" + +msgid "An error occurred while fetching the job." +msgstr "" + +msgid "An error occurred while fetching the jobs." +msgstr "" + +msgid "An error occurred while fetching the pipeline." +msgstr "" + +msgid "An error occurred while getting projects" +msgstr "" + +msgid "An error occurred while importing project: %{details}" +msgstr "" + +msgid "An error occurred while initializing path locks" +msgstr "" + +msgid "An error occurred while loading commit signatures" +msgstr "" + +msgid "An error occurred while loading diff" +msgstr "" + +msgid "An error occurred while loading filenames" +msgstr "" + +msgid "An error occurred while loading the file" +msgstr "" + +msgid "An error occurred while making the request." +msgstr "" + +msgid "An error occurred while removing approver" +msgstr "" + +msgid "An error occurred while rendering KaTeX" +msgstr "" + +msgid "An error occurred while rendering preview broadcast message" +msgstr "" + +msgid "An error occurred while retrieving calendar activity" +msgstr "" + +msgid "An error occurred while retrieving diff" +msgstr "" + +msgid "An error occurred while saving LDAP override status. Please try again." +msgstr "" + +msgid "An error occurred while saving assignees" +msgstr "" + +msgid "An error occurred while subscribing to notifications." +msgstr "" + +msgid "An error occurred while unsubscribing to notifications." +msgstr "" + +msgid "An error occurred while validating username" +msgstr "" + +msgid "An error occurred. Please try again." +msgstr "" + +msgid "Anonymous" +msgstr "" + +msgid "Anti-spam verification" +msgstr "" + +msgid "Any" +msgstr "" + +msgid "Any Label" +msgstr "" + +msgid "Appearance" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Application Id" +msgstr "" + +msgid "Application: %{name}" +msgstr "" + +msgid "Applications" +msgstr "" + +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + +msgid "Archived project! Repository and other project resources are read-only" +msgstr "" + +msgid "Archived projects" +msgstr "" + +msgid "Are you sure you want to delete this pipeline schedule?" +msgstr "" + +msgid "Are you sure you want to lose unsaved changes?" +msgstr "" + +msgid "Are you sure you want to regenerate the public key? You will have to update the public key on the remote server before mirroring will work again." +msgstr "" + +msgid "Are you sure you want to remove %{group_name}?" +msgstr "" + +msgid "Are you sure you want to remove this identity?" +msgstr "" + +msgid "Are you sure you want to reset registration token?" +msgstr "" + +msgid "Are you sure you want to reset the health check token?" +msgstr "" + +msgid "Are you sure you want to unlock %{path_lock_path}?" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "Artifact ID" +msgstr "" + +msgid "Artifacts" +msgstr "" + +msgid "Ascending" +msgstr "" + +msgid "Ask your group maintainer to set up a group Runner." +msgstr "" + +msgid "Assertion consumer service URL" +msgstr "" + +msgid "Assign custom color like #FF0000" +msgstr "" + +msgid "Assign labels" +msgstr "" + +msgid "Assign milestone" +msgstr "" + +msgid "Assign to" +msgstr "" + +msgid "Assigned Issues" +msgstr "" + +msgid "Assigned Merge Requests" +msgstr "" + +msgid "Assigned to :name" +msgstr "" + +msgid "Assigned to me" +msgstr "" + +msgid "Assignee" +msgstr "" + +msgid "Assignee lists not available with your current license" +msgstr "" + +msgid "Assignee lists show all issues assigned to the selected user." +msgstr "" + +msgid "Assignee(s)" +msgstr "" + +msgid "Attach a file by drag & drop or %{upload_link}" +msgstr "" + +msgid "Audit Events" +msgstr "" + +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + +msgid "Authentication Log" +msgstr "" + +msgid "Authentication log" +msgstr "" + +msgid "Authentication method" +msgstr "" + +msgid "Author" +msgstr "" + +msgid "Authorization code:" +msgstr "" + +msgid "Authorization was granted by entering your username and password in the application." +msgstr "" + +msgid "Authorize" +msgstr "" + +msgid "Authorize %{link_to_client} to use your account?" +msgstr "" + +msgid "Authorized At" +msgstr "" + +msgid "Authorized applications (%{size})" +msgstr "" + +msgid "Authors: %{authors}" +msgstr "" + +msgid "Auto DevOps" +msgstr "" + +msgid "Auto DevOps enabled" +msgstr "" + +msgid "Auto DevOps, runners and job artifacts" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and a %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto-cancel redundant, pending pipelines" +msgstr "" + +msgid "AutoDevOps|Auto DevOps" +msgstr "" + +msgid "AutoDevOps|Auto DevOps documentation" +msgstr "" + +msgid "AutoDevOps|Enable in settings" +msgstr "" + +msgid "AutoDevOps|It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "AutoDevOps|Learn more in the %{link_to_documentation}" +msgstr "" + +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + +msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." +msgstr "" + +msgid "AutoDevOps|add a Kubernetes cluster" +msgstr "" + +msgid "AutoDevOps|enable Auto DevOps" +msgstr "" + +msgid "Automatically marked as default internal user" +msgstr "" + +msgid "Available" +msgstr "" + +msgid "Available group Runners : %{runners}" +msgstr "" + +msgid "Available group Runners : %{runners}." +msgstr "" + +msgid "Avatar will be removed. Are you sure?" +msgstr "" + +msgid "Average per day: %{average}" +msgstr "" + +msgid "Background Color" +msgstr "" + +msgid "Background Jobs" +msgstr "" + +msgid "Background color" +msgstr "" + +msgid "Badges" +msgstr "" + +msgid "Badges|A new badge was added." +msgstr "" + +msgid "Badges|Add badge" +msgstr "" + +msgid "Badges|Adding the badge failed, please check the entered URLs and try again." +msgstr "" + +msgid "Badges|Badge image URL" +msgstr "" + +msgid "Badges|Badge image preview" +msgstr "" + +msgid "Badges|Delete badge" +msgstr "" + +msgid "Badges|Delete badge?" +msgstr "" + +msgid "Badges|Deleting the badge failed, please try again." +msgstr "" + +msgid "Badges|Group Badge" +msgstr "" + +msgid "Badges|Link" +msgstr "" + +msgid "Badges|No badge image" +msgstr "" + +msgid "Badges|No image to preview" +msgstr "" + +msgid "Badges|Please fill in a valid URL" +msgstr "" + +msgid "Badges|Project Badge" +msgstr "" + +msgid "Badges|Reload badge image" +msgstr "" + +msgid "Badges|Save changes" +msgstr "" + +msgid "Badges|Saving the badge failed, please check the entered URLs and try again." +msgstr "" + +msgid "Badges|The %{docsLinkStart}variables%{docsLinkEnd} GitLab supports: %{placeholders}" +msgstr "" + +msgid "Badges|The badge was deleted." +msgstr "" + +msgid "Badges|The badge was saved." +msgstr "" + +msgid "Badges|This group has no badges" +msgstr "" + +msgid "Badges|This project has no badges" +msgstr "" + +msgid "Badges|You are going to delete this badge. Deleted badges cannot be restored." +msgstr "" + +msgid "Badges|Your badges" +msgstr "" + +msgid "Badges|e.g. %{exampleUrl}" +msgstr "" + +msgid "Begin with the selected commit" +msgstr "" + +msgid "Below are examples of regex for existing tools:" +msgstr "" + +msgid "Below you will find all the groups that are public." +msgstr "" + +msgid "Billing" +msgstr "" + +msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." +msgstr "" + +msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available." +msgstr "" + +msgid "BillingPlans|Current plan" +msgstr "" + +msgid "BillingPlans|Customer Support" +msgstr "" + +msgid "BillingPlans|Downgrade" +msgstr "" + +msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}, or start a free 30-day trial of GitLab.com Gold." +msgstr "" + +msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." +msgstr "" + +msgid "BillingPlans|Manage plan" +msgstr "" + +msgid "BillingPlans|Please contact %{customer_support_link} in that case." +msgstr "" + +msgid "BillingPlans|See all %{plan_name} features" +msgstr "" + +msgid "BillingPlans|This group uses the plan associated with its parent group." +msgstr "" + +msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." +msgstr "" + +msgid "BillingPlans|Upgrade" +msgstr "" + +msgid "BillingPlans|You are currently on the %{plan_link} plan." +msgstr "" + +msgid "BillingPlans|Your GitLab.com trial expired on %{expiration_date}. %{learn_more_text}" +msgstr "" + +msgid "BillingPlans|Your Gold trial will expire after %{expiration_date}. You can learn more about GitLab.com Gold by reading about our %{features_link}." +msgstr "" + +msgid "BillingPlans|features" +msgstr "" + +msgid "BillingPlans|frequently asked questions" +msgstr "" + +msgid "BillingPlans|monthly" +msgstr "" + +msgid "BillingPlans|paid annually at %{price_per_year}" +msgstr "" + +msgid "BillingPlans|per user" +msgstr "" + +msgid "Bitbucket Server Import" +msgstr "" + +msgid "Bitbucket import" +msgstr "" + +msgid "Blog" +msgstr "" + +msgid "Boards" +msgstr "" + +msgid "Branch %{branchName} was not found in this project's repository." +msgstr "" + +msgid "Branch (%{branch_count})" +msgid_plural "Branches (%{branch_count})" +msgstr[0] "" +msgstr[1] "" + +msgid "Branch %{branch_name} was created. To set up auto deploy, choose a GitLab CI Yaml template and commit your changes. %{link_to_autodeploy_doc}" +msgstr "" + +msgid "Branch has changed" +msgstr "" + +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + +msgid "BranchSwitcherPlaceholder|Search branches" +msgstr "" + +msgid "BranchSwitcherTitle|Switch branch" +msgstr "" + +msgid "Branches" +msgstr "" + +msgid "Branches|Active" +msgstr "" + +msgid "Branches|Active branches" +msgstr "" + +msgid "Branches|All" +msgstr "" + +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project maintainer or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Overview" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}." +msgstr "" + +msgid "Branches|Show active branches" +msgstr "" + +msgid "Branches|Show all branches" +msgstr "" + +msgid "Branches|Show more active branches" +msgstr "" + +msgid "Branches|Show more stale branches" +msgstr "" + +msgid "Branches|Show overview of the branches" +msgstr "" + +msgid "Branches|Show stale branches" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|Stale" +msgstr "" + +msgid "Branches|Stale branches" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" + +msgid "Browse Directory" +msgstr "" + +msgid "Browse File" +msgstr "" + +msgid "Browse Files" +msgstr "" + +msgid "Browse files" +msgstr "" + +msgid "Built-In" +msgstr "" + +msgid "Business metrics (Custom)" +msgstr "" + +msgid "ByAuthor|by" +msgstr "" + +msgid "CI / CD" +msgstr "" + +msgid "CI / CD Settings" +msgstr "" + +msgid "CI will run using the credentials assigned above." +msgstr "" + +msgid "CI/CD" +msgstr "" + +msgid "CI/CD configuration" +msgstr "" + +msgid "CI/CD for external repo" +msgstr "" + +msgid "CI/CD settings" +msgstr "" + +msgid "CICD|Auto DevOps" +msgstr "" + +msgid "CICD|Auto DevOps will automatically build, test, and deploy your application based on a predefined Continuous Integration and Delivery configuration." +msgstr "" + +msgid "CICD|Automatic deployment to staging, manual deployment to production" +msgstr "" + +msgid "CICD|Continuous deployment to production" +msgstr "" + +msgid "CICD|Default to Auto DevOps pipeline" +msgstr "" + +msgid "CICD|Deployment strategy" +msgstr "" + +msgid "CICD|Deployment strategy needs a domain name to work correctly." +msgstr "" + +msgid "CICD|Do not set up a domain here if you are setting up multiple Kubernetes clusters with Auto DevOps." +msgstr "" + +msgid "CICD|Jobs" +msgstr "" + +msgid "CICD|Learn more about Auto DevOps" +msgstr "" + +msgid "CICD|The Auto DevOps pipeline will run if no alternative CI configuration file is found." +msgstr "" + +msgid "CICD|You need to specify a domain if you want to use Auto Review Apps and Auto Deploy stages." +msgstr "" + +msgid "CICD|instance enabled" +msgstr "" + +msgid "Callback URL" +msgstr "" + +msgid "Callback url" +msgstr "" + +msgid "Can't find HEAD commit for this branch" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "Cancel this job" +msgstr "" + +msgid "Cannot be merged automatically" +msgstr "" + +msgid "Cannot modify managed Kubernetes cluster" +msgstr "" + +msgid "Certificate fingerprint" +msgstr "" + +msgid "Change Weight" +msgstr "" + +msgid "Change template" +msgstr "" + +msgid "Change this value to influence how frequently the GitLab UI polls for updates." +msgstr "" + +msgid "ChangeTypeActionLabel|Pick into branch" +msgstr "" + +msgid "ChangeTypeActionLabel|Revert in branch" +msgstr "" + +msgid "ChangeTypeAction|Cherry-pick" +msgstr "" + +msgid "ChangeTypeAction|Revert" +msgstr "" + +msgid "ChangeTypeAction|This will create a new commit in order to revert the existing changes." +msgstr "" + +msgid "Changelog" +msgstr "" + +msgid "Changes are shown as if the source revision was being merged into the target revision." +msgstr "" + +msgid "Charts" +msgstr "" + +msgid "Chat" +msgstr "" + +msgid "Check interval" +msgstr "" + +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + +msgid "Cherry-pick this commit" +msgstr "" + +msgid "Cherry-pick this merge request" +msgstr "" + +msgid "Choose Create archive and wait for archiving to complete." +msgstr "" + +msgid "Choose Next at the bottom of the page." +msgstr "" + +msgid "Choose File ..." +msgstr "" + +msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." +msgstr "" + +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + +msgid "Choose any color." +msgstr "" + +msgid "Choose between clone or fetch to get the recent application code" +msgstr "" + +msgid "Choose file..." +msgstr "" + +msgid "Choose the top-level group for your repository imports." +msgstr "" + +msgid "Choose which groups you wish to synchronize to this secondary node." +msgstr "" + +msgid "Choose which repositories you want to connect and run CI/CD pipelines." +msgstr "" + +msgid "Choose which repositories you want to import." +msgstr "" + +msgid "Choose which shards you wish to synchronize to this secondary node." +msgstr "" + +msgid "CiStatusLabel|canceled" +msgstr "" + +msgid "CiStatusLabel|created" +msgstr "" + +msgid "CiStatusLabel|failed" +msgstr "" + +msgid "CiStatusLabel|manual action" +msgstr "" + +msgid "CiStatusLabel|passed" +msgstr "" + +msgid "CiStatusLabel|passed with warnings" +msgstr "" + +msgid "CiStatusLabel|pending" +msgstr "" + +msgid "CiStatusLabel|skipped" +msgstr "" + +msgid "CiStatusLabel|waiting for manual action" +msgstr "" + +msgid "CiStatusText|blocked" +msgstr "" + +msgid "CiStatusText|canceled" +msgstr "" + +msgid "CiStatusText|created" +msgstr "" + +msgid "CiStatusText|failed" +msgstr "" + +msgid "CiStatusText|manual" +msgstr "" + +msgid "CiStatusText|passed" +msgstr "" + +msgid "CiStatusText|pending" +msgstr "" + +msgid "CiStatusText|skipped" +msgstr "" + +msgid "CiStatus|running" +msgstr "" + +msgid "CiVariables|Input variable key" +msgstr "" + +msgid "CiVariables|Input variable value" +msgstr "" + +msgid "CiVariables|Remove variable row" +msgstr "" + +msgid "CiVariable|* (All environments)" +msgstr "" + +msgid "CiVariable|All environments" +msgstr "" + +msgid "CiVariable|Create wildcard" +msgstr "" + +msgid "CiVariable|Error occured while saving variables" +msgstr "" + +msgid "CiVariable|New environment" +msgstr "" + +msgid "CiVariable|Protected" +msgstr "" + +msgid "CiVariable|Search environments" +msgstr "" + +msgid "CiVariable|Toggle protected" +msgstr "" + +msgid "CiVariable|Validation failed" +msgstr "" + +msgid "CircuitBreakerApiLink|circuitbreaker api" +msgstr "" + +msgid "ClassificationLabelUnavailable|is unavailable: %{reason}" +msgstr "" + +msgid "Clear search input" +msgstr "" + +msgid "Click any project name in the project list below to navigate to the project milestone." +msgstr "" + +msgid "Click the Download button and wait for downloading to complete." +msgstr "" + +msgid "Click the Promote button in the top right corner to promote it to a group milestone." +msgstr "" + +msgid "Click the Select none button on the right, since we only need \"Google Code Project Hosting\"." +msgstr "" + +msgid "Click the button below to begin the install process by navigating to the Kubernetes page" +msgstr "" + +msgid "Click to expand it." +msgstr "" + +msgid "Click to expand text" +msgstr "" + +msgid "Client authentication certificate" +msgstr "" + +msgid "Client authentication key" +msgstr "" + +msgid "Client authentication key password" +msgstr "" + +msgid "Clients" +msgstr "" + +msgid "Clone repository" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Close epic" +msgstr "" + +msgid "Closed" +msgstr "" + +msgid "Closed issues" +msgstr "" + +msgid "ClusterIntegration|%{appList} was successfully installed on your Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which may incur additional costs depending on the hosting provider your Kubernetes cluster is installed on. If you are using Google Kubernetes Engine, you can %{pricingLink}." +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Add Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Advanced options on this Kubernetes cluster's integration" +msgstr "" + +msgid "ClusterIntegration|After installing Ingress, you will need to point your wildcard DNS at the generated external IP address in order to view your app after it is deployed. %{ingressHelpLink}" +msgstr "" + +msgid "ClusterIntegration|An error occured while trying to fetch project zones: %{error}" +msgstr "" + +msgid "ClusterIntegration|An error occured while trying to fetch your projects: %{error}" +msgstr "" + +msgid "ClusterIntegration|An error occured while trying to fetch zone machine types: %{error}" +msgstr "" + +msgid "ClusterIntegration|An error occurred when trying to contact the Google Cloud API. Please try again later." +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|Are you sure you want to remove this Kubernetes cluster's integration? This will not delete your actual Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" + +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Ingress IP Address to clipboard" +msgstr "" + +msgid "ClusterIntegration|Copy Jupyter Hostname to clipboard" +msgstr "" + +msgid "ClusterIntegration|Copy Kubernetes cluster name" +msgstr "" + +msgid "ClusterIntegration|Copy Token" +msgstr "" + +msgid "ClusterIntegration|Create Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Did you know?" +msgstr "" + +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + +msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Environment scope" +msgstr "" + +msgid "ClusterIntegration|Every new Google Cloud Platform (GCP) account receives $300 in credit upon %{sign_up_link}. In partnership with Google, GitLab is able to offer an additional $200 for both new and existing GCP accounts to get started with GitLab's Google Kubernetes Engine Integration." +msgstr "" + +msgid "ClusterIntegration|Fetching machine types" +msgstr "" + +msgid "ClusterIntegration|Fetching projects" +msgstr "" + +msgid "ClusterIntegration|Fetching zones" +msgstr "" + +msgid "ClusterIntegration|GitLab Integration" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." +msgstr "" + +msgid "ClusterIntegration|Google Cloud Platform project" +msgstr "" + +msgid "ClusterIntegration|Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Google Kubernetes Engine project" +msgstr "" + +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Helm streamlines installing and managing Kubernetes applications. Tiller runs inside of your Kubernetes Cluster, and manages releases of your charts." +msgstr "" + +msgid "ClusterIntegration|Hide" +msgstr "" + +msgid "ClusterIntegration|If you are setting up multiple clusters and are using Auto DevOps, %{help_link_start}read this first%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|In order to show the health of the cluster, we'll need to provision your cluster with Prometheus to collect the required data." +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Ingress IP Address" +msgstr "" + +msgid "ClusterIntegration|Ingress gives you a way to route requests to services based on the request host or path, centralizing a number of services into a single entrypoint." +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install Prometheus" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate Kubernetes cluster automation" +msgstr "" + +msgid "ClusterIntegration|Integration status" +msgstr "" + +msgid "ClusterIntegration|Jupyter Hostname" +msgstr "" + +msgid "ClusterIntegration|JupyterHub" +msgstr "" + +msgid "ClusterIntegration|JupyterHub, a multi-user Hub, spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server. JupyterHub can be used to serve notebooks to a class of students, a corporate data science group, or a scientific research group." +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster details" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster health" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster integration" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster name" +msgstr "" + +msgid "ClusterIntegration|Kubernetes cluster was successfully created on Google Kubernetes Engine. Refresh the page to see Kubernetes cluster's details" +msgstr "" + +msgid "ClusterIntegration|Kubernetes clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Kubernetes clusters can be used to deploy applications and to provide Review Apps for this project" +msgstr "" + +msgid "ClusterIntegration|Learn more about %{help_link_start_machine_type}machine types%{help_link_end} and %{help_link_start_pricing}pricing%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|Learn more about %{help_link_start}Kubernetes%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." +msgstr "" + +msgid "ClusterIntegration|Machine type" +msgstr "" + +msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create Kubernetes clusters" +msgstr "" + +msgid "ClusterIntegration|Manage" +msgstr "" + +msgid "ClusterIntegration|Manage your Kubernetes cluster by visiting %{link_gke}" +msgstr "" + +msgid "ClusterIntegration|More information" +msgstr "" + +msgid "ClusterIntegration|Multiple Kubernetes clusters are available in GitLab Enterprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|No machine types matched your search" +msgstr "" + +msgid "ClusterIntegration|No projects found" +msgstr "" + +msgid "ClusterIntegration|No projects matched your search" +msgstr "" + +msgid "ClusterIntegration|No zones matched your search" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + +msgid "ClusterIntegration|Number of nodes" +msgstr "" + +msgid "ClusterIntegration|Please enter access information for your Kubernetes cluster. If you need help, you can read our %{link_to_help_page} on Kubernetes" +msgstr "" + +msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" +msgstr "" + +msgid "ClusterIntegration|Point a wildcard DNS to this generated IP address in order to access your application after it has been deployed." +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + +msgid "ClusterIntegration|Project namespace (optional, unique)" +msgstr "" + +msgid "ClusterIntegration|Prometheus" +msgstr "" + +msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." +msgstr "" + +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + +msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." +msgstr "" + +msgid "ClusterIntegration|Remove Kubernetes cluster integration" +msgstr "" + +msgid "ClusterIntegration|Remove integration" +msgstr "" + +msgid "ClusterIntegration|Remove this Kubernetes cluster's configuration from this project. This will not delete your actual Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Replace this with your own hostname if you want. If you do so, point hostname to Ingress IP Address from above." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" +msgstr "" + +msgid "ClusterIntegration|Search machine types" +msgstr "" + +msgid "ClusterIntegration|Search projects" +msgstr "" + +msgid "ClusterIntegration|Search zones" +msgstr "" + +msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Select machine type" +msgstr "" + +msgid "ClusterIntegration|Select project" +msgstr "" + +msgid "ClusterIntegration|Select project and zone to choose machine type" +msgstr "" + +msgid "ClusterIntegration|Select project to choose zone" +msgstr "" + +msgid "ClusterIntegration|Select zone" +msgstr "" + +msgid "ClusterIntegration|Select zone to choose machine type" +msgstr "" + +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + +msgid "ClusterIntegration|Something went wrong on our end." +msgstr "" + +msgid "ClusterIntegration|Something went wrong while creating your Kubernetes cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." +msgstr "" + +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" +msgstr "" + +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + +msgid "ClusterIntegration|Toggle Kubernetes Cluster" +msgstr "" + +msgid "ClusterIntegration|Toggle Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Token" +msgstr "" + +msgid "ClusterIntegration|Validating project billing status" +msgstr "" + +msgid "ClusterIntegration|We could not verify that one of your projects on GCP has billing enabled. Please try again." +msgstr "" + +msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." +msgstr "" + +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + +msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" +msgstr "" + +msgid "ClusterIntegration|Zone" +msgstr "" + +msgid "ClusterIntegration|access to Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|check the pricing here" +msgstr "" + +msgid "ClusterIntegration|documentation" +msgstr "" + +msgid "ClusterIntegration|help page" +msgstr "" + +msgid "ClusterIntegration|meets the requirements" +msgstr "" + +msgid "ClusterIntegration|properly configured" +msgstr "" + +msgid "ClusterIntegration|sign up" +msgstr "" + +msgid "Code owners" +msgstr "" + +msgid "Cohorts" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Collapse sidebar" +msgstr "" + +msgid "Comment & resolve discussion" +msgstr "" + +msgid "Comment & unresolve discussion" +msgstr "" + +msgid "Comments" +msgstr "" + +msgid "Commit" +msgid_plural "Commits" +msgstr[0] "" +msgstr[1] "" + +msgid "Commit (%{commit_count})" +msgid_plural "Commits (%{commit_count})" +msgstr[0] "" +msgstr[1] "" + +msgid "Commit Message" +msgstr "" + +msgid "Commit duration in minutes for last 30 commits" +msgstr "" + +msgid "Commit message" +msgstr "" + +msgid "Commit statistics for %{ref} %{start_time} - %{end_time}" +msgstr "" + +msgid "Commit to %{branchName} branch" +msgstr "" + +msgid "CommitBoxTitle|Commit" +msgstr "" + +msgid "CommitMessage|Add %{file_name}" +msgstr "" + +msgid "CommitWidget|authored" +msgstr "" + +msgid "Commits" +msgstr "" + +msgid "Commits feed" +msgstr "" + +msgid "Commits per day hour (UTC)" +msgstr "" + +msgid "Commits per day of month" +msgstr "" + +msgid "Commits per weekday" +msgstr "" + +msgid "Commits|An error occurred while fetching merge requests data." +msgstr "" + +msgid "Commits|Commit: %{commitText}" +msgstr "" + +msgid "Commits|History" +msgstr "" + +msgid "Commits|No related merge requests found" +msgstr "" + +msgid "Committed by" +msgstr "" + +msgid "Commit…" +msgstr "" + +msgid "Compare" +msgstr "" + +msgid "Compare Git revisions" +msgstr "" + +msgid "Compare Revisions" +msgstr "" + +msgid "Compare changes with the last commit" +msgstr "" + +msgid "Compare changes with the merge request target branch" +msgstr "" + +msgid "CompareBranches|%{source_branch} and %{target_branch} are the same." +msgstr "" + +msgid "CompareBranches|Compare" +msgstr "" + +msgid "CompareBranches|Source" +msgstr "" + +msgid "CompareBranches|Target" +msgstr "" + +msgid "CompareBranches|There isn't anything to compare." +msgstr "" + +msgid "Confidential" +msgstr "" + +msgid "Confidentiality" +msgstr "" + +msgid "Configure Gitaly timeouts." +msgstr "" + +msgid "Configure automatic git checks and housekeeping on repositories." +msgstr "" + +msgid "Configure limits for web and API requests." +msgstr "" + +msgid "Configure push mirrors." +msgstr "" + +msgid "Configure storage path and circuit breaker settings." +msgstr "" + +msgid "Configure the way a user creates a new account." +msgstr "" + +msgid "Connect" +msgstr "" + +msgid "Connect all repositories" +msgstr "" + +msgid "Connect repositories from GitHub" +msgstr "" + +msgid "Connect your external repositories, and CI/CD pipelines will run for new commits. A GitLab project will be created with only CI/CD features enabled." +msgstr "" + +msgid "Connecting..." +msgstr "" + +msgid "Container Registry" +msgstr "" + +msgid "ContainerRegistry|Created" +msgstr "" + +msgid "ContainerRegistry|First log in to GitLab’s Container Registry using your GitLab username and password. If you have %{link_2fa} you need to use a %{link_token}:" +msgstr "" + +msgid "ContainerRegistry|GitLab supports up to 3 levels of image names. The following examples of images are valid for your project:" +msgstr "" + +msgid "ContainerRegistry|How to use the Container Registry" +msgstr "" + +msgid "ContainerRegistry|Learn more about" +msgstr "" + +msgid "ContainerRegistry|No tags in Container Registry for this container image." +msgstr "" + +msgid "ContainerRegistry|Once you log in, you’re free to create and upload a container image using the common %{build} and %{push} commands" +msgstr "" + +msgid "ContainerRegistry|Remove repository" +msgstr "" + +msgid "ContainerRegistry|Remove tag" +msgstr "" + +msgid "ContainerRegistry|Size" +msgstr "" + +msgid "ContainerRegistry|Tag" +msgstr "" + +msgid "ContainerRegistry|Tag ID" +msgstr "" + +msgid "ContainerRegistry|Use different image names" +msgstr "" + +msgid "ContainerRegistry|With the Docker Container Registry integrated into GitLab, every project can have its own space to store its Docker images." +msgstr "" + +msgid "ContainerRegistry|You can also use a %{deploy_token} for read-only access to the registry images." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Continue to the next step" +msgstr "" + +msgid "Continuous Integration and Deployment" +msgstr "" + +msgid "Contribute to GitLab" +msgstr "" + +msgid "Contribution" +msgstr "" + +msgid "Contribution guide" +msgstr "" + +msgid "Contributions for %{calendar_date}" +msgstr "" + +msgid "Contributions per group member" +msgstr "" + +msgid "Contributors" +msgstr "" + +msgid "ContributorsPage|%{startDate} – %{endDate}" +msgstr "" + +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + +msgid "Control the display of third party offers." +msgstr "" + +msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" +msgstr "" + +msgid "Control the maximum concurrency of repository backfill for this secondary node" +msgstr "" + +msgid "Control the maximum concurrency of verification operations for this Geo node" +msgstr "" + +msgid "ConvDev Index" +msgstr "" + +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + +msgid "Copy SSH public key to clipboard" +msgstr "" + +msgid "Copy URL to clipboard" +msgstr "" + +msgid "Copy branch name to clipboard" +msgstr "" + +msgid "Copy command to clipboard" +msgstr "" + +msgid "Copy commit SHA to clipboard" +msgstr "" + +msgid "Copy file path to clipboard" +msgstr "" + +msgid "Copy incoming email address to clipboard" +msgstr "" + +msgid "Copy reference to clipboard" +msgstr "" + +msgid "Copy to clipboard" +msgstr "" + +msgid "Copy token to clipboard" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Create New Directory" +msgstr "" + +msgid "Create a new branch" +msgstr "" + +msgid "Create a new branch and merge request" +msgstr "" + +msgid "Create a new issue" +msgstr "" + +msgid "Create a personal access token on your account to pull or push via %{protocol}." +msgstr "" + +msgid "Create branch" +msgstr "" + +msgid "Create commit" +msgstr "" + +msgid "Create directory" +msgstr "" + +msgid "Create empty repository" +msgstr "" + +msgid "Create epic" +msgstr "" + +msgid "Create file" +msgstr "" + +msgid "Create group" +msgstr "" + +msgid "Create group label" +msgstr "" + +msgid "Create issue" +msgstr "" + +msgid "Create lists from labels. Issues with that label appear in that list." +msgstr "" + +msgid "Create merge request" +msgstr "" + +msgid "Create merge request and branch" +msgstr "" + +msgid "Create new branch" +msgstr "" + +msgid "Create new directory" +msgstr "" + +msgid "Create new file" +msgstr "" + +msgid "Create new file or directory" +msgstr "" + +msgid "Create new label" +msgstr "" + +msgid "Create new..." +msgstr "" + +msgid "Create project label" +msgstr "" + +msgid "CreateTag|Tag" +msgstr "" + +msgid "CreateTokenToCloneLink|create a personal access token" +msgstr "" + +msgid "Created" +msgstr "" + +msgid "Created At" +msgstr "" + +msgid "Created by me" +msgstr "" + +msgid "Created on" +msgstr "" + +msgid "Created on:" +msgstr "" + +msgid "Creating epic" +msgstr "" + +msgid "Cron Timezone" +msgstr "" + +msgid "Cron syntax" +msgstr "" + +msgid "Current Branch" +msgstr "" + +msgid "Current node" +msgstr "" + +msgid "CurrentUser|Profile" +msgstr "" + +msgid "CurrentUser|Settings" +msgstr "" + +msgid "Custom" +msgstr "" + +msgid "Custom CI config path" +msgstr "" + +msgid "Custom notification events" +msgstr "" + +msgid "Custom notification levels are the same as participating levels. With custom notification levels you will also receive notifications for select events. To find out more, check out %{notification_link}." +msgstr "" + +msgid "Custom project templates" +msgstr "" + +msgid "Customize colors" +msgstr "" + +msgid "Customize how FogBugz email addresses and usernames are imported into GitLab. In the next step, you'll be able to select the projects you want to import." +msgstr "" + +msgid "Customize how Google Code email addresses and usernames are imported into GitLab. In the next step, you'll be able to select the projects you want to import." +msgstr "" + +msgid "Cycle Analytics" +msgstr "" + +msgid "Cycle Analytics gives an overview of how much time it takes to go from idea to production in your project." +msgstr "" + +msgid "CycleAnalyticsStage|Code" +msgstr "" + +msgid "CycleAnalyticsStage|Issue" +msgstr "" + +msgid "CycleAnalyticsStage|Plan" +msgstr "" + +msgid "CycleAnalyticsStage|Production" +msgstr "" + +msgid "CycleAnalyticsStage|Review" +msgstr "" + +msgid "CycleAnalyticsStage|Staging" +msgstr "" + +msgid "CycleAnalyticsStage|Test" +msgstr "" + +msgid "Dashboard" +msgstr "" + +msgid "DashboardProjects|All" +msgstr "" + +msgid "DashboardProjects|Personal" +msgstr "" + +msgid "Date picker" +msgstr "" + +msgid "Debug" +msgstr "" + +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + +msgid "Decline and sign out" +msgstr "" + +msgid "Default Branch" +msgstr "" + +msgid "Default classification label" +msgstr "" + +msgid "Default: Directly import the Google Code email address or username" +msgstr "" + +msgid "Default: Map a FogBugz account ID to a full name" +msgstr "" + +msgid "Define a custom pattern with cron syntax" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Delete Package" +msgstr "" + +msgid "Delete Snippet" +msgstr "" + +msgid "Delete list" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Deploy" +msgid_plural "Deploys" +msgstr[0] "" +msgstr[1] "" + +msgid "Deploy Keys" +msgstr "" + +msgid "DeployKeys|+%{count} others" +msgstr "" + +msgid "DeployKeys|Current project" +msgstr "" + +msgid "DeployKeys|Deploy key" +msgstr "" + +msgid "DeployKeys|Enabled deploy keys" +msgstr "" + +msgid "DeployKeys|Error enabling deploy key" +msgstr "" + +msgid "DeployKeys|Error getting deploy keys" +msgstr "" + +msgid "DeployKeys|Error removing deploy key" +msgstr "" + +msgid "DeployKeys|Expand %{count} other projects" +msgstr "" + +msgid "DeployKeys|Loading deploy keys" +msgstr "" + +msgid "DeployKeys|No deploy keys found. Create one with the form above." +msgstr "" + +msgid "DeployKeys|Privately accessible deploy keys" +msgstr "" + +msgid "DeployKeys|Project usage" +msgstr "" + +msgid "DeployKeys|Publicly accessible deploy keys" +msgstr "" + +msgid "DeployKeys|Read access only" +msgstr "" + +msgid "DeployKeys|Write access allowed" +msgstr "" + +msgid "DeployKeys|You are going to remove this deploy key. Are you sure?" +msgstr "" + +msgid "DeployTokens|Active Deploy Tokens (%{active_tokens})" +msgstr "" + +msgid "DeployTokens|Add a deploy token" +msgstr "" + +msgid "DeployTokens|Allows read-only access to the registry images" +msgstr "" + +msgid "DeployTokens|Allows read-only access to the repository" +msgstr "" + +msgid "DeployTokens|Copy deploy token to clipboard" +msgstr "" + +msgid "DeployTokens|Copy username to clipboard" +msgstr "" + +msgid "DeployTokens|Create deploy token" +msgstr "" + +msgid "DeployTokens|Created" +msgstr "" + +msgid "DeployTokens|Deploy Tokens" +msgstr "" + +msgid "DeployTokens|Deploy tokens allow read-only access to your repository and registry images." +msgstr "" + +msgid "DeployTokens|Expires" +msgstr "" + +msgid "DeployTokens|Name" +msgstr "" + +msgid "DeployTokens|Pick a name for the application, and we'll give you a unique deploy token." +msgstr "" + +msgid "DeployTokens|Revoke" +msgstr "" + +msgid "DeployTokens|Revoke %{name}" +msgstr "" + +msgid "DeployTokens|Scopes" +msgstr "" + +msgid "DeployTokens|This action cannot be undone." +msgstr "" + +msgid "DeployTokens|This project has no active Deploy Tokens." +msgstr "" + +msgid "DeployTokens|Use this token as a password. Make sure you save it - you won't be able to access it again." +msgstr "" + +msgid "DeployTokens|Use this username as a login." +msgstr "" + +msgid "DeployTokens|Username" +msgstr "" + +msgid "DeployTokens|You are about to revoke" +msgstr "" + +msgid "DeployTokens|Your New Deploy Token" +msgstr "" + +msgid "DeployTokens|Your new project deploy token has been created." +msgstr "" + +msgid "Deprioritize label" +msgstr "" + +msgid "Descending" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." +msgstr "" + +msgid "Description:" +msgstr "" + +msgid "Destroy" +msgstr "" + +msgid "Details" +msgstr "" + +msgid "Detect host keys" +msgstr "" + +msgid "Diffs|No file name available" +msgstr "" + +msgid "Diffs|Something went wrong while fetching diff lines." +msgstr "" + +msgid "Direction" +msgstr "" + +msgid "Directory name" +msgstr "" + +msgid "Disable" +msgstr "" + +msgid "Disable for this project" +msgstr "" + +msgid "Disable group Runners" +msgstr "" + +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + +msgid "Discard changes" +msgstr "" + +msgid "Discard changes to %{path}?" +msgstr "" + +msgid "Discard draft" +msgstr "" + +msgid "Discover GitLab Geo." +msgstr "" + +msgid "Discover projects, groups and snippets. Share your projects with others" +msgstr "" + +msgid "Dismiss" +msgstr "" + +msgid "Dismiss Cycle Analytics introduction box" +msgstr "" + +msgid "Dismiss Merge Request promotion" +msgstr "" + +msgid "Do you want to customize how Google Code email addresses and usernames are imported into GitLab?" +msgstr "" + +msgid "Documentation for popular identity providers" +msgstr "" + +msgid "Domain" +msgstr "" + +msgid "Don't show again" +msgstr "" + +msgid "Done" +msgstr "" + +msgid "Download" +msgstr "" + +msgid "Download tar" +msgstr "" + +msgid "Download tar.bz2" +msgstr "" + +msgid "Download tar.gz" +msgstr "" + +msgid "Download zip" +msgstr "" + +msgid "DownloadArtifacts|Download" +msgstr "" + +msgid "DownloadCommit|Email Patches" +msgstr "" + +msgid "DownloadCommit|Plain Diff" +msgstr "" + +msgid "DownloadSource|Download" +msgstr "" + +msgid "Downvotes" +msgstr "" + +msgid "Due date" +msgstr "" + +msgid "During this process, you’ll be asked for URLs from GitLab’s side. Use the URLs shown below." +msgstr "" + +msgid "Each Runner can be in one of the following states:" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Edit Label" +msgstr "" + +msgid "Edit Pipeline Schedule %{id}" +msgstr "" + +msgid "Edit Snippet" +msgstr "" + +msgid "Edit application" +msgstr "" + +msgid "Edit files in the editor and commit changes here" +msgstr "" + +msgid "Edit group: %{group_name}" +msgstr "" + +msgid "Edit identity for %{user_name}" +msgstr "" + +msgid "Elasticsearch" +msgstr "" + +msgid "Elasticsearch intergration. Elasticsearch AWS IAM." +msgstr "" + +msgid "Email" +msgstr "" + +msgid "Email patch" +msgstr "" + +msgid "Emails" +msgstr "" + +msgid "Embed" +msgstr "" + +msgid "Enable" +msgstr "" + +msgid "Enable Auto DevOps" +msgstr "" + +msgid "Enable Pseudonymizer data collection" +msgstr "" + +msgid "Enable SAML authentication for this group" +msgstr "" + +msgid "Enable Sentry for error reporting and logging." +msgstr "" + +msgid "Enable and configure InfluxDB metrics." +msgstr "" + +msgid "Enable and configure Prometheus metrics." +msgstr "" + +msgid "Enable classification control using an external service" +msgstr "" + +msgid "Enable for this project" +msgstr "" + +msgid "Enable group Runners" +msgstr "" + +msgid "Enable or disable certain group features and choose access levels." +msgstr "" + +msgid "Enable or disable the Pseudonymizer data collection." +msgstr "" + +msgid "Enable or disable version check and usage ping." +msgstr "" + +msgid "Enable reCAPTCHA or Akismet and set IP limits." +msgstr "" + +msgid "Enable the Performance Bar for a given group." +msgstr "" + +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + +msgid "Enabled" +msgstr "" + +msgid "Ends at (UTC)" +msgstr "" + +msgid "Enter in your Bitbucket Server URL and personal access token below" +msgstr "" + +msgid "Enter the issue description" +msgstr "" + +msgid "Enter the issue title" +msgstr "" + +msgid "Enter the merge request description" +msgstr "" + +msgid "Enter the merge request title" +msgstr "" + +msgid "Environments" +msgstr "" + +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|An error occurred while stopping the environment, please try again" +msgstr "" + +msgid "Environments|Are you sure you want to stop this environment?" +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deploy to..." +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|Learn more about stopping environments" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|No pod name has been specified" +msgstr "" + +msgid "Environments|Note that this action will stop the environment, but it will %{emphasisStart}not%{emphasisEnd} have an effect on any existing deployment due to no “stop environment action” being defined in the %{ciConfigLinkStart}.gitlab-ci.yml%{ciConfigLinkEnd} file." +msgstr "" + +msgid "Environments|Note that this action will stop the environment, but it will %{emphasis_start}not%{emphasis_end} have an effect on any existing deployment due to no “stop environment action” being defined in the %{ci_config_link_start}.gitlab-ci.yml%{ci_config_link_end} file." +msgstr "" + +msgid "Environments|Open live environment" +msgstr "" + +msgid "Environments|Pod logs from" +msgstr "" + +msgid "Environments|Re-deploy to environment" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback environment" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Stop" +msgstr "" + +msgid "Environments|Stop environment" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Environments|protected" +msgstr "" + +msgid "Epic" +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics Roadmap" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Epics|An error occurred while saving %{epicDateType} date" +msgstr "" + +msgid "Epics|How can I solve this?" +msgstr "" + +msgid "Epics|More information" +msgstr "" + +msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." +msgstr "" + +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." +msgstr "" + +msgid "Epics|due" +msgstr "" + +msgid "Epics|start" +msgstr "" + +msgid "Error" +msgstr "" + +msgid "Error Reporting and Logging" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error fetching contributors data." +msgstr "" + +msgid "Error fetching labels." +msgstr "" + +msgid "Error fetching network graph." +msgstr "" + +msgid "Error fetching refs" +msgstr "" + +msgid "Error fetching usage ping data." +msgstr "" + +msgid "Error loading branch data. Please try again." +msgstr "" + +msgid "Error loading branches." +msgstr "" + +msgid "Error loading last commit." +msgstr "" + +msgid "Error loading markdown preview" +msgstr "" + +msgid "Error loading merge requests." +msgstr "" + +msgid "Error loading project data. Please try again." +msgstr "" + +msgid "Error loading template types." +msgstr "" + +msgid "Error loading template." +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + +msgid "Error saving label update." +msgstr "" + +msgid "Error updating status for all todos." +msgstr "" + +msgid "Error updating todo status." +msgstr "" + +msgid "Error while loading the merge request. Please try again." +msgstr "" + +msgid "Estimated" +msgstr "" + +msgid "EventFilterBy|Filter by all" +msgstr "" + +msgid "EventFilterBy|Filter by comments" +msgstr "" + +msgid "EventFilterBy|Filter by issue events" +msgstr "" + +msgid "EventFilterBy|Filter by merge events" +msgstr "" + +msgid "EventFilterBy|Filter by push events" +msgstr "" + +msgid "EventFilterBy|Filter by team" +msgstr "" + +msgid "Every day (at 4:00am)" +msgstr "" + +msgid "Every month (on the 1st at 4:00am)" +msgstr "" + +msgid "Every week (Sundays at 4:00am)" +msgstr "" + +msgid "Everyone can contribute" +msgstr "" + +msgid "Expand" +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Expand sidebar" +msgstr "" + +msgid "Expiration date" +msgstr "" + +msgid "Explore" +msgstr "" + +msgid "Explore GitLab" +msgstr "" + +msgid "Explore Groups" +msgstr "" + +msgid "Explore groups" +msgstr "" + +msgid "Explore projects" +msgstr "" + +msgid "Explore public groups" +msgstr "" + +msgid "External Classification Policy Authorization" +msgstr "" + +msgid "External authentication" +msgstr "" + +msgid "External authorization denied access to this project" +msgstr "" + +msgid "External authorization request timeout" +msgstr "" + +msgid "ExternalAuthorizationService|Classification Label" +msgstr "" + +msgid "ExternalAuthorizationService|Classification label" +msgstr "" + +msgid "ExternalAuthorizationService|When no classification label is set the default label `%{default_label}` will be used." +msgstr "" + +msgid "Facebook" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Failed Jobs" +msgstr "" + +msgid "Failed to change the owner" +msgstr "" + +msgid "Failed to check related branches." +msgstr "" + +msgid "Failed to remove issue from board, please try again." +msgstr "" + +msgid "Failed to remove mirror." +msgstr "" + +msgid "Failed to remove the pipeline schedule" +msgstr "" + +msgid "Failed to update issues, please try again." +msgstr "" + +msgid "Failure" +msgstr "" + +msgid "Faster as it re-uses the project workspace (falling back to clone if it doesn't exist)" +msgstr "" + +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + +msgid "Fields on this page are now uneditable, you can configure" +msgstr "" + +msgid "File templates" +msgstr "" + +msgid "Files" +msgstr "" + +msgid "Files (%{human_size})" +msgstr "" + +msgid "Fill in the fields below, turn on %{enable_label}, and press %{save_changes}" +msgstr "" + +msgid "Filter" +msgstr "" + +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + +msgid "Filter by commit message" +msgstr "" + +msgid "Filter..." +msgstr "" + +msgid "Find by path" +msgstr "" + +msgid "Find file" +msgstr "" + +msgid "Find the downloaded ZIP file and decompress it." +msgstr "" + +msgid "Find the newly extracted Takeout/Google Code Project Hosting/GoogleCodeProjectHosting.json file." +msgstr "" + +msgid "Fingerprints" +msgstr "" + +msgid "Finished" +msgstr "" + +msgid "FirstPushedBy|First" +msgstr "" + +msgid "FirstPushedBy|pushed by" +msgstr "" + +msgid "Fixed date" +msgstr "" + +msgid "Fixed due date" +msgstr "" + +msgid "Fixed start date" +msgstr "" + +msgid "Fixed:" +msgstr "" + +msgid "FogBugz Email" +msgstr "" + +msgid "FogBugz Import" +msgstr "" + +msgid "FogBugz Password" +msgstr "" + +msgid "FogBugz URL" +msgstr "" + +msgid "FogBugz import" +msgstr "" + +msgid "Follow the steps below to export your Google Code project data." +msgstr "" + +msgid "Font Color" +msgstr "" + +msgid "Footer message" +msgstr "" + +msgid "For internal projects, any logged in user can view pipelines and access job details (output logs and artifacts)" +msgstr "" + +msgid "For more information, go to the " +msgstr "" + +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + +msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" +msgstr "" + +msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" +msgstr "" + +msgid "ForkedFromProjectPath|Forked from" +msgstr "" + +msgid "ForkedFromProjectPath|Forked from %{project_name} (deleted)" +msgstr "" + +msgid "Forking in progress" +msgstr "" + +msgid "Format" +msgstr "" + +msgid "Found errors in your .gitlab-ci.yml:" +msgstr "" + +msgid "From %{provider_title}" +msgstr "" + +msgid "From Bitbucket" +msgstr "" + +msgid "From Bitbucket Server" +msgstr "" + +msgid "From FogBugz" +msgstr "" + +msgid "From GitLab.com" +msgstr "" + +msgid "From Google Code" +msgstr "" + +msgid "From issue creation until deploy to production" +msgstr "" + +msgid "From merge request merge until deploy to production" +msgstr "" + +msgid "From milestones:" +msgstr "" + +msgid "From the Kubernetes cluster details view, install Runner from the applications list" +msgstr "" + +msgid "GPG Keys" +msgstr "" + +msgid "General" +msgstr "" + +msgid "General pipelines" +msgstr "" + +msgid "Generate a default set of labels" +msgstr "" + +msgid "Geo" +msgstr "" + +msgid "Geo Nodes" +msgstr "" + +msgid "Geo allows you to replicate your GitLab instance to other geographical locations." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodes|Checksummed" +msgstr "" + +msgid "GeoNodes|Data is out of date from %{timeago}" +msgstr "" + +msgid "GeoNodes|Data replication lag" +msgstr "" + +msgid "GeoNodes|Disabling a node stops the sync process. Are you sure?" +msgstr "" + +msgid "GeoNodes|Does not match the primary storage configuration" +msgstr "" + +msgid "GeoNodes|Failed" +msgstr "" + +msgid "GeoNodes|Full" +msgstr "" + +msgid "GeoNodes|GitLab version" +msgstr "" + +msgid "GeoNodes|GitLab version does not match the primary node version" +msgstr "" + +msgid "GeoNodes|Health status" +msgstr "" + +msgid "GeoNodes|Last event ID processed by cursor" +msgstr "" + +msgid "GeoNodes|Last event ID seen from primary" +msgstr "" + +msgid "GeoNodes|Learn more about Repository checksum progress" +msgstr "" + +msgid "GeoNodes|Learn more about Repository verification" +msgstr "" + +msgid "GeoNodes|Learn more about Wiki checksum progress" +msgstr "" + +msgid "GeoNodes|Learn more about Wiki verification" +msgstr "" + +msgid "GeoNodes|Loading nodes" +msgstr "" + +msgid "GeoNodes|Local LFS objects" +msgstr "" + +msgid "GeoNodes|Local attachments" +msgstr "" + +msgid "GeoNodes|Local job artifacts" +msgstr "" + +msgid "GeoNodes|New node" +msgstr "" + +msgid "GeoNodes|Node Authentication was successfully repaired." +msgstr "" + +msgid "GeoNodes|Node was successfully removed." +msgstr "" + +msgid "GeoNodes|Not checksummed" +msgstr "" + +msgid "GeoNodes|Out of sync" +msgstr "" + +msgid "GeoNodes|Removing a node stops the sync process. Are you sure?" +msgstr "" + +msgid "GeoNodes|Replication slot WAL" +msgstr "" + +msgid "GeoNodes|Replication slots" +msgstr "" + +msgid "GeoNodes|Repositories" +msgstr "" + +msgid "GeoNodes|Repositories checksummed for verification with their counterparts on Secondary nodes" +msgstr "" + +msgid "GeoNodes|Repositories verified with their counterparts on the Primary node" +msgstr "" + +msgid "GeoNodes|Repository checksum progress" +msgstr "" + +msgid "GeoNodes|Repository verification progress" +msgstr "" + +msgid "GeoNodes|Selective" +msgstr "" + +msgid "GeoNodes|Something went wrong while changing node status" +msgstr "" + +msgid "GeoNodes|Something went wrong while fetching nodes" +msgstr "" + +msgid "GeoNodes|Something went wrong while removing node" +msgstr "" + +msgid "GeoNodes|Something went wrong while repairing node" +msgstr "" + +msgid "GeoNodes|Storage config" +msgstr "" + +msgid "GeoNodes|Sync settings" +msgstr "" + +msgid "GeoNodes|Synced" +msgstr "" + +msgid "GeoNodes|Unused slots" +msgstr "" + +msgid "GeoNodes|Unverified" +msgstr "" + +msgid "GeoNodes|Used slots" +msgstr "" + +msgid "GeoNodes|Verified" +msgstr "" + +msgid "GeoNodes|Wiki checksum progress" +msgstr "" + +msgid "GeoNodes|Wiki verification progress" +msgstr "" + +msgid "GeoNodes|Wikis" +msgstr "" + +msgid "GeoNodes|Wikis checksummed for verification with their counterparts on Secondary nodes" +msgstr "" + +msgid "GeoNodes|Wikis verified with their counterparts on the Primary node" +msgstr "" + +msgid "GeoNodes|You have configured Geo nodes using an insecure HTTP connection. We recommend the use of HTTPS." +msgstr "" + +msgid "Geo|%{name} is scheduled for forced re-download" +msgstr "" + +msgid "Geo|%{name} is scheduled for re-check" +msgstr "" + +msgid "Geo|%{name} is scheduled for re-sync" +msgstr "" + +msgid "Geo|All projects" +msgstr "" + +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + +msgid "Geo|Error message" +msgstr "" + +msgid "Geo|Failed" +msgstr "" + +msgid "Geo|File sync capacity" +msgstr "" + +msgid "Geo|Groups to synchronize" +msgstr "" + +msgid "Geo|In sync" +msgstr "" + +msgid "Geo|Last successful sync" +msgstr "" + +msgid "Geo|Last sync attempt" +msgstr "" + +msgid "Geo|Last time verified" +msgstr "" + +msgid "Geo|Never" +msgstr "" + +msgid "Geo|Next sync scheduled at" +msgstr "" + +msgid "Geo|No errors" +msgstr "" + +msgid "Geo|Pending" +msgstr "" + +msgid "Geo|Pending synchronization" +msgstr "" + +msgid "Geo|Pending verification" +msgstr "" + +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + +msgid "Geo|Projects in certain groups" +msgstr "" + +msgid "Geo|Projects in certain storage shards" +msgstr "" + +msgid "Geo|Recheck" +msgstr "" + +msgid "Geo|Redownload" +msgstr "" + +msgid "Geo|Remove" +msgstr "" + +msgid "Geo|Repository sync capacity" +msgstr "" + +msgid "Geo|Resync" +msgstr "" + +msgid "Geo|Retry count" +msgstr "" + +msgid "Geo|Retry counts" +msgstr "" + +msgid "Geo|Select groups to replicate." +msgstr "" + +msgid "Geo|Shards to synchronize" +msgstr "" + +msgid "Geo|Status" +msgstr "" + +msgid "Geo|Synced" +msgstr "" + +msgid "Geo|Synchronization failed - %{error}" +msgstr "" + +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + +msgid "Geo|Unknown state" +msgstr "" + +msgid "Geo|Verification capacity" +msgstr "" + +msgid "Geo|Verification failed - %{error}" +msgstr "" + +msgid "Geo|Waiting for scheduler" +msgstr "" + +msgid "Geo|You need a different license to use Geo replication" +msgstr "" + +msgid "Get a free instance review" +msgstr "" + +msgid "Git" +msgstr "" + +msgid "Git repository URL" +msgstr "" + +msgid "Git revision" +msgstr "" + +msgid "Git storage health information has been reset" +msgstr "" + +msgid "Git strategy for pipelines" +msgstr "" + +msgid "Git version" +msgstr "" + +msgid "GitHub import" +msgstr "" + +msgid "GitLab CI Linter has been moved" +msgstr "" + +msgid "GitLab Geo" +msgstr "" + +msgid "GitLab Group Runners can execute code for all the projects in this group." +msgstr "" + +msgid "GitLab Import" +msgstr "" + +msgid "GitLab User" +msgstr "" + +msgid "GitLab project export" +msgstr "" + +msgid "GitLab single sign on URL" +msgstr "" + +msgid "GitLab will run a background job that will produce pseudonymized CSVs of the GitLab database that will be uploaded to your configured object storage directory." +msgstr "" + +msgid "GitLab.com import" +msgstr "" + +msgid "GitLab’s issue tracker" +msgstr "" + +msgid "Gitaly" +msgstr "" + +msgid "Gitaly Servers" +msgstr "" + +msgid "Gitaly|Address" +msgstr "" + +msgid "Gitea Host URL" +msgstr "" + +msgid "Gitea Import" +msgstr "" + +msgid "Go Back" +msgstr "" + +msgid "Go back" +msgstr "" + +msgid "Go to" +msgstr "" + +msgid "Go to %{link_to_google_takeout}." +msgstr "" + +msgid "Google Code import" +msgstr "" + +msgid "Google Takeout" +msgstr "" + +msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service." +msgstr "" + +msgid "Got it!" +msgstr "" + +msgid "Graph" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Group CI/CD settings" +msgstr "" + +msgid "Group Git LFS status:" +msgstr "" + +msgid "Group ID" +msgstr "" + +msgid "Group Runners" +msgstr "" + +msgid "Group avatar" +msgstr "" + +msgid "Group details" +msgstr "" + +msgid "Group info:" +msgstr "" + +msgid "Group maintainers can register group runners in the %{link}" +msgstr "" + +msgid "Group: %{group_name}" +msgstr "" + +msgid "GroupRoadmap|From %{dateWord}" +msgstr "" + +msgid "GroupRoadmap|Loading roadmap" +msgstr "" + +msgid "GroupRoadmap|Something went wrong while fetching epics" +msgstr "" + +msgid "GroupRoadmap|Sorry, no epics matched your search" +msgstr "" + +msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" +msgstr "" + +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To widen your search, change or remove filters. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|To widen your search, change or remove filters. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" + +msgid "GroupRoadmap|Until %{dateWord}" +msgstr "" + +msgid "GroupSettings|Badges" +msgstr "" + +msgid "GroupSettings|Customize your group badges." +msgstr "" + +msgid "GroupSettings|Learn more about badges." +msgstr "" + +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}" +msgstr "" + +msgid "Groups" +msgstr "" + +msgid "Groups can also be nested by creating %{subgroup_docs_link_start}subgroups%{subgroup_docs_link_end}." +msgstr "" + +msgid "GroupsDropdown|Frequently visited" +msgstr "" + +msgid "GroupsDropdown|Groups you visit often will appear here" +msgstr "" + +msgid "GroupsDropdown|Loading groups" +msgstr "" + +msgid "GroupsDropdown|Search your groups" +msgstr "" + +msgid "GroupsDropdown|Something went wrong on our end." +msgstr "" + +msgid "GroupsDropdown|Sorry, no groups matched your search" +msgstr "" + +msgid "GroupsDropdown|This feature requires browser localStorage support" +msgstr "" + +msgid "GroupsEmptyState|A group is a collection of several projects." +msgstr "" + +msgid "GroupsEmptyState|If you organize your projects under a group, it works like a folder." +msgstr "" + +msgid "GroupsEmptyState|No groups found" +msgstr "" + +msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." +msgstr "" + +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + +msgid "GroupsTree|Create a project in this group." +msgstr "" + +msgid "GroupsTree|Create a subgroup in this group." +msgstr "" + +msgid "GroupsTree|Edit group" +msgstr "" + +msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." +msgstr "" + +msgid "GroupsTree|Leave this group" +msgstr "" + +msgid "GroupsTree|Loading groups" +msgstr "" + +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" +msgstr "" + +msgid "Have your users email" +msgstr "" + +msgid "Header message" +msgstr "" + +msgid "Health Check" +msgstr "" + +msgid "Health information can be retrieved from the following endpoints. More information is available" +msgstr "" + +msgid "HealthCheck|Access token is" +msgstr "" + +msgid "HealthCheck|Healthy" +msgstr "" + +msgid "HealthCheck|No Health Problems Detected" +msgstr "" + +msgid "HealthCheck|Unhealthy" +msgstr "" + +msgid "Help" +msgstr "" + +msgid "Help page" +msgstr "" + +msgid "Help page text and support page url." +msgstr "" + +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 host keys manual input" +msgstr "" + +msgid "Hide payload" +msgstr "" + +msgid "Hide value" +msgid_plural "Hide values" +msgstr[0] "" +msgstr[1] "" + +msgid "Hide whitespace changes" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Housekeeping successfully started" +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 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, 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 you already have files you can push them using the %{link_to_cli} below." +msgstr "" + +msgid "If your HTTP repository is not publicly accessible, add authentication information to the URL: https://username:password@gitlab.company.com/group/project.git." +msgstr "" + +msgid "ImageDiffViewer|2-up" +msgstr "" + +msgid "ImageDiffViewer|Onion skin" +msgstr "" + +msgid "ImageDiffViewer|Swipe" +msgstr "" + +msgid "Import" +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 multiple repositories by uploading a manifest file." +msgstr "" + +msgid "Import project" +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 "ImportButtons|Connect repositories from" +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 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 the username in the URL if required: https://username@gitlab.company.com/group/project.git." +msgstr "" + +msgid "Incompatible Project" +msgstr "" + +msgid "Indicates whether this runner can pick jobs without tags" +msgstr "" + +msgid "Inline" +msgstr "" + +msgid "Input host keys manually" +msgstr "" + +msgid "Input your repository URL" +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 - 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 "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + +msgid "Issue Boards" +msgstr "" + +msgid "Issue board focus mode" +msgstr "" + +msgid "Issue events" +msgstr "" + +msgid "IssueBoards|Board" +msgstr "" + +msgid "IssueBoards|Boards" +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 "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Job" +msgstr "" + +msgid "Job has been erased" +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|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 in" +msgstr "" + +msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + +msgid "Koding" +msgstr "" + +msgid "Koding Dashboard" +msgstr "" + +msgid "Kubernetes" +msgstr "" + +msgid "Kubernetes Cluster" +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 Kubernetes Clusters page" +msgstr "" + +msgid "LFS" +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 "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|Promote label %{labelTitle} to Group Label?" +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 "Last %d day" +msgid_plural "Last %d days" +msgstr[0] "" +msgstr[1] "" + +msgid "Last Pipeline" +msgstr "" + +msgid "Last commit" +msgstr "" + +msgid "Last contact" +msgstr "" + +msgid "Last edited %{date}" +msgstr "" + +msgid "Last edited by %{name}" +msgstr "" + +msgid "Last update" +msgstr "" + +msgid "Last updated" +msgstr "" + +msgid "LastPushEvent|You pushed to" +msgstr "" + +msgid "LastPushEvent|at" +msgstr "" + +msgid "Latest changes" +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 Kubernetes" +msgstr "" + +msgid "Learn more about protected branches" +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|Approve license" +msgstr "" + +msgid "LicenseManagement|Approve license?" +msgstr "" + +msgid "LicenseManagement|Approved" +msgstr "" + +msgid "LicenseManagement|Blacklist license" +msgstr "" + +msgid "LicenseManagement|Blacklist license?" +msgstr "" + +msgid "LicenseManagement|Blacklisted" +msgstr "" + +msgid "LicenseManagement|License" +msgstr "" + +msgid "LicenseManagement|License Management" +msgstr "" + +msgid "LicenseManagement|License details" +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|There are currently no approved or blacklisted licenses 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 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 "Lock" +msgstr "" + +msgid "Lock %{issuableDisplayName}" +msgstr "" + +msgid "Lock not found" +msgstr "" + +msgid "Lock this %{issuableDisplayName}? Only project members 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 "Logs" +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 your group’s membership while adding another level of security with SAML." +msgstr "" + +msgid "Manifest" +msgstr "" + +msgid "Manifest file import" +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 enabled" +msgstr "" + +msgid "Maven Metadata" +msgstr "" + +msgid "Maven package" +msgstr "" + +msgid "Max access level" +msgstr "" + +msgid "Maximum git storage failures" +msgstr "" + +msgid "Maximum job timeout" +msgstr "" + +msgid "May" +msgstr "" + +msgid "Median" +msgstr "" + +msgid "Members" +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 Request:" +msgstr "" + +msgid "Merge Requests" +msgstr "" + +msgid "Merge Requests created" +msgstr "" + +msgid "Merge events" +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 "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 "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}" +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|Business" +msgstr "" + +msgid "Metrics|Check out the CI/CD documentation on deploying to an environment" +msgstr "" + +msgid "Metrics|Create metric" +msgstr "" + +msgid "Metrics|Edit metric" +msgstr "" + +msgid "Metrics|Environment" +msgstr "" + +msgid "Metrics|For grouping similar metrics" +msgstr "" + +msgid "Metrics|Label of the chart's vertical axis. Usually the type of the unit being charted. The horizontal axis (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|Name" +msgstr "" + +msgid "Metrics|New metric" +msgstr "" + +msgid "Metrics|No deployed environments" +msgstr "" + +msgid "Metrics|Prometheus Query Documentation" +msgstr "" + +msgid "Metrics|Query" +msgstr "" + +msgid "Metrics|Response" +msgstr "" + +msgid "Metrics|System" +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 while retrieving metrics" +msgstr "" + +msgid "Metrics|Type" +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|e.g. HTTP requests" +msgstr "" + +msgid "Metrics|e.g. Requests/second" +msgstr "" + +msgid "Metrics|e.g. Throughput" +msgstr "" + +msgid "Metrics|e.g. rate(http_requests_total[5m])" +msgstr "" + +msgid "Metrics|e.g. req/sec" +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|

%{milestonePromotion}

%{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 "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 "Monitoring" +msgstr "" + +msgid "Months" +msgstr "" + +msgid "More" +msgstr "" + +msgid "More info" +msgstr "" + +msgid "More information" +msgstr "" + +msgid "More information is available|here" +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 "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 "Network" +msgstr "" + +msgid "Never" +msgstr "" + +msgid "New" +msgstr "" + +msgid "New Application" +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 Pipeline Schedule" +msgstr "" + +msgid "New Snippet" +msgstr "" + +msgid "New Snippets" +msgstr "" + +msgid "New branch" +msgstr "" + +msgid "New branch unavailable" +msgstr "" + +msgid "New directory" +msgstr "" + +msgid "New epic" +msgstr "" + +msgid "New file" +msgstr "" + +msgid "New group" +msgstr "" + +msgid "New identity" +msgstr "" + +msgid "New issue" +msgstr "" + +msgid "New label" +msgstr "" + +msgid "New merge request" +msgstr "" + +msgid "New pipelines will cancel older, pending pipelines on the same branch" +msgstr "" + +msgid "New project" +msgstr "" + +msgid "New schedule" +msgstr "" + +msgid "New snippet" +msgstr "" + +msgid "New subgroup" +msgstr "" + +msgid "New tag" +msgstr "" + +msgid "New..." +msgstr "" + +msgid "No" +msgstr "" + +msgid "No Label" +msgstr "" + +msgid "No assignee" +msgstr "" + +msgid "No branches found" +msgstr "" + +msgid "No changes" +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 due date" +msgstr "" + +msgid "No estimate or time spent" +msgstr "" + +msgid "No file chosen" +msgstr "" + +msgid "No files found" +msgstr "" + +msgid "No files found." +msgstr "" + +msgid "No issues for the selected time period." +msgstr "" + +msgid "No labels with such name or description" +msgstr "" + +msgid "No license. All rights reserved" +msgstr "" + +msgid "No merge requests for the selected time period." +msgstr "" + +msgid "No merge requests found" +msgstr "" + +msgid "No messages were logged" +msgstr "" + +msgid "No other labels with such name or description" +msgstr "" + +msgid "No packages stored for this project." +msgstr "" + +msgid "No prioritised labels with such name or description" +msgstr "" + +msgid "No public groups" +msgstr "" + +msgid "No pushes for the selected time period." +msgstr "" + +msgid "No repository" +msgstr "" + +msgid "No runners found" +msgstr "" + +msgid "No schedules" +msgstr "" + +msgid "No, directly import the existing email addresses and usernames." +msgstr "" + +msgid "Nodes" +msgstr "" + +msgid "None" +msgstr "" + +msgid "Not all comments are displayed because you're comparing two versions of the diff." +msgstr "" + +msgid "Not all comments are displayed because you're viewing an old version of the diff." +msgstr "" + +msgid "Not allowed to merge" +msgstr "" + +msgid "Not available" +msgstr "" + +msgid "Not available for private projects" +msgstr "" + +msgid "Not available for protected branches" +msgstr "" + +msgid "Not confidential" +msgstr "" + +msgid "Not enough data" +msgstr "" + +msgid "Not now" +msgstr "" + +msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" +msgstr "" + +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 "" + +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 "" + +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 "" + +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 "" + +msgid "Notes|Are you sure you want to cancel creating this comment?" +msgstr "" + +msgid "Notification events" +msgstr "" + +msgid "NotificationEvent|Close issue" +msgstr "" + +msgid "NotificationEvent|Close merge request" +msgstr "" + +msgid "NotificationEvent|Failed pipeline" +msgstr "" + +msgid "NotificationEvent|Merge merge request" +msgstr "" + +msgid "NotificationEvent|New epic" +msgstr "" + +msgid "NotificationEvent|New issue" +msgstr "" + +msgid "NotificationEvent|New merge request" +msgstr "" + +msgid "NotificationEvent|New note" +msgstr "" + +msgid "NotificationEvent|Reassign issue" +msgstr "" + +msgid "NotificationEvent|Reassign merge request" +msgstr "" + +msgid "NotificationEvent|Reopen issue" +msgstr "" + +msgid "NotificationEvent|Successful pipeline" +msgstr "" + +msgid "NotificationLevel|Custom" +msgstr "" + +msgid "NotificationLevel|Disabled" +msgstr "" + +msgid "NotificationLevel|Global" +msgstr "" + +msgid "NotificationLevel|On mention" +msgstr "" + +msgid "NotificationLevel|Participate" +msgstr "" + +msgid "NotificationLevel|Watch" +msgstr "" + +msgid "Notifications" +msgstr "" + +msgid "Notifications off" +msgstr "" + +msgid "Notifications on" +msgstr "" + +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + +msgid "Number of access attempts" +msgstr "" + +msgid "OK" +msgstr "" + +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + +msgid "OfSearchInADropdown|Filter" +msgstr "" + +msgid "Once imported, repositories can be mirrored over SSH. Read more %{ssh_link}" +msgstr "" + +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 "" + +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 "" + +msgid "Online IDE integration settings." +msgstr "" + +msgid "Only admins" +msgstr "" + +msgid "Only comments from the following commit are shown below" +msgstr "" + +msgid "Only mirror protected branches" +msgstr "" + +msgid "Only project members can comment." +msgstr "" + +msgid "Oops, are you sure?" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Open in Xcode" +msgstr "" + +msgid "Open sidebar" +msgstr "" + +msgid "Open source software to collaborate on code" +msgstr "" + +msgid "Opened" +msgstr "" + +msgid "Opened MR" +msgstr "" + +msgid "Opened issues" +msgstr "" + +msgid "OpenedNDaysAgo|Opened" +msgstr "" + +msgid "Opens in a new window" +msgstr "" + +msgid "Operations" +msgstr "" + +msgid "Optionally, you can %{link_to_customize} how FogBugz email addresses and usernames are imported into GitLab." +msgstr "" + +msgid "Optionally, you can %{link_to_customize} how Google Code email addresses and usernames are imported into GitLab." +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Or you can choose one of the suggested colors below" +msgstr "" + +msgid "Other Labels" +msgstr "" + +msgid "Other information" +msgstr "" + +msgid "Otherwise it is recommended you start with one of the options below." +msgstr "" + +msgid "Outbound requests" +msgstr "" + +msgid "Overview" +msgstr "" + +msgid "Overwrite diverged branches" +msgstr "" + +msgid "Owner" +msgstr "" + +msgid "Package information" +msgstr "" + +msgid "Package was removed" +msgstr "" + +msgid "Packages" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" + +msgid "Part of merge request changes" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Paste your public SSH key, which is usually contained in the file '~/.ssh/id_rsa.pub' and begins with 'ssh-rsa'. Don't use your private SSH key." +msgstr "" + +msgid "Path:" +msgstr "" + +msgid "Pause" +msgstr "" + +msgid "Paused Runners don't accept new jobs" +msgstr "" + +msgid "Pending" +msgstr "" + +msgid "People without permission will never get a notification and won't be able to comment." +msgstr "" + +msgid "Per job. If a job passes this threshold, it will be marked as failed" +msgstr "" + +msgid "Perform advanced options such as changing path, transferring, or removing the group." +msgstr "" + +msgid "Performance optimization" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "Personal Access Token" +msgstr "" + +msgid "Pipeline" +msgstr "" + +msgid "Pipeline %{pipelineLinkStart} #%{pipelineId} %{pipelineLinkEnd} from %{pipelineLinkRefStart} %{pipelineRef} %{pipelineLinkRefEnd}" +msgstr "" + +msgid "Pipeline Health" +msgstr "" + +msgid "Pipeline Schedule" +msgstr "" + +msgid "Pipeline Schedules" +msgstr "" + +msgid "Pipeline quota" +msgstr "" + +msgid "Pipeline triggers" +msgstr "" + +msgid "PipelineCharts|Failed:" +msgstr "" + +msgid "PipelineCharts|Overall statistics" +msgstr "" + +msgid "PipelineCharts|Success ratio:" +msgstr "" + +msgid "PipelineCharts|Successful:" +msgstr "" + +msgid "PipelineCharts|Total:" +msgstr "" + +msgid "PipelineSchedules|Activated" +msgstr "" + +msgid "PipelineSchedules|Active" +msgstr "" + +msgid "PipelineSchedules|All" +msgstr "" + +msgid "PipelineSchedules|Inactive" +msgstr "" + +msgid "PipelineSchedules|Next Run" +msgstr "" + +msgid "PipelineSchedules|None" +msgstr "" + +msgid "PipelineSchedules|Provide a short description for this pipeline" +msgstr "" + +msgid "PipelineSchedules|Take ownership" +msgstr "" + +msgid "PipelineSchedules|Target" +msgstr "" + +msgid "PipelineSchedules|Variables" +msgstr "" + +msgid "PipelineSheduleIntervalPattern|Custom" +msgstr "" + +msgid "Pipelines" +msgstr "" + +msgid "Pipelines charts" +msgstr "" + +msgid "Pipelines for last month" +msgstr "" + +msgid "Pipelines for last week" +msgstr "" + +msgid "Pipelines for last year" +msgstr "" + +msgid "Pipelines|Build with confidence" +msgstr "" + +msgid "Pipelines|CI Lint" +msgstr "" + +msgid "Pipelines|Clear Runner Caches" +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." +msgstr "" + +msgid "Pipelines|Get started with Pipelines" +msgstr "" + +msgid "Pipelines|Loading Pipelines" +msgstr "" + +msgid "Pipelines|Project cache successfully reset." +msgstr "" + +msgid "Pipelines|Run Pipeline" +msgstr "" + +msgid "Pipelines|Something went wrong while cleaning runners cache." +msgstr "" + +msgid "Pipelines|There are currently no %{scope} pipelines." +msgstr "" + +msgid "Pipelines|There are currently no pipelines." +msgstr "" + +msgid "Pipelines|There was an error fetching the pipelines. Try again in a few moments or contact your support team." +msgstr "" + +msgid "Pipelines|This project is not currently set up to run pipelines." +msgstr "" + +msgid "Pipeline|Create for" +msgstr "" + +msgid "Pipeline|Create pipeline" +msgstr "" + +msgid "Pipeline|Existing branch name or tag" +msgstr "" + +msgid "Pipeline|Run Pipeline" +msgstr "" + +msgid "Pipeline|Search branches" +msgstr "" + +msgid "Pipeline|Specify variable values to be used in this run. The values specified in %{settings_link} will be used by default." +msgstr "" + +msgid "Pipeline|Stop pipeline" +msgstr "" + +msgid "Pipeline|Stop pipeline #%{pipelineId}?" +msgstr "" + +msgid "Pipeline|Variables" +msgstr "" + +msgid "Pipeline|You’re about to stop pipeline %{pipelineId}." +msgstr "" + +msgid "Pipeline|all" +msgstr "" + +msgid "Pipeline|success" +msgstr "" + +msgid "Pipeline|with stage" +msgstr "" + +msgid "Pipeline|with stages" +msgstr "" + +msgid "Plain diff" +msgstr "" + +msgid "PlantUML" +msgstr "" + +msgid "Play" +msgstr "" + +msgid "Please accept the Terms of Service before continuing." +msgstr "" + +msgid "Please convert them to %{link_to_git}, and go through the %{link_to_import_flow} again." +msgstr "" + +msgid "Please convert them to Git on Google Code, and go through the %{link_to_import_flow} again." +msgstr "" + +msgid "Please note that this application is not provided by GitLab and you should verify its authenticity before allowing access." +msgstr "" + +msgid "Please select at least one filter to see results" +msgstr "" + +msgid "Please solve the reCAPTCHA" +msgstr "" + +msgid "Please try again" +msgstr "" + +msgid "Please wait while we connect to your repository. Refresh at will." +msgstr "" + +msgid "Please wait while we import the repository for you. Refresh at will." +msgstr "" + +msgid "Preferences" +msgstr "" + +msgid "Preferences|Navigation theme" +msgstr "" + +msgid "Press Enter or click to search" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Preview payload" +msgstr "" + +msgid "Primary" +msgstr "" + +msgid "Prioritize" +msgstr "" + +msgid "Prioritize label" +msgstr "" + +msgid "Prioritized Labels" +msgstr "" + +msgid "Prioritized label" +msgstr "" + +msgid "Private - Project access must be granted explicitly to each user." +msgstr "" + +msgid "Private - The group and its projects can only be viewed by members." +msgstr "" + +msgid "Private projects can be created in your personal namespace with:" +msgstr "" + +msgid "Profile" +msgstr "" + +msgid "Profile Settings" +msgstr "" + +msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered." +msgstr "" + +msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." +msgstr "" + +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + +msgid "Profiles|Account scheduled for removal." +msgstr "" + +msgid "Profiles|Add key" +msgstr "" + +msgid "Profiles|Add status emoji" +msgstr "" + +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + +msgid "Profiles|Change username" +msgstr "" + +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + +msgid "Profiles|Clear status" +msgstr "" + +msgid "Profiles|Current path: %{path}" +msgstr "" + +msgid "Profiles|Current status" +msgstr "" + +msgid "Profiles|Delete Account" +msgstr "" + +msgid "Profiles|Delete account" +msgstr "" + +msgid "Profiles|Delete your account?" +msgstr "" + +msgid "Profiles|Deleting an account has the following effects:" +msgstr "" + +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + +msgid "Profiles|Invalid password" +msgstr "" + +msgid "Profiles|Invalid username" +msgstr "" + +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + +msgid "Profiles|Path" +msgstr "" + +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + +msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" +msgstr "" + +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + +msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." +msgstr "" + +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + +msgid "Profiles|Type your %{confirmationValue} to confirm:" +msgstr "" + +msgid "Profiles|Typically starts with \"ssh-rsa …\"" +msgstr "" + +msgid "Profiles|Update profile settings" +msgstr "" + +msgid "Profiles|Update username" +msgstr "" + +msgid "Profiles|Upload new avatar" +msgstr "" + +msgid "Profiles|Username change failed - %{message}" +msgstr "" + +msgid "Profiles|Username successfully changed" +msgstr "" + +msgid "Profiles|Website" +msgstr "" + +msgid "Profiles|What's your status?" +msgstr "" + +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + +msgid "Profiles|You don't have access to delete this user." +msgstr "" + +msgid "Profiles|You must transfer ownership or delete these groups before you can delete your account." +msgstr "" + +msgid "Profiles|Your account is currently an owner in these groups:" +msgstr "" + +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + +msgid "Profiles|Your status" +msgstr "" + +msgid "Profiles|e.g. My MacBook key" +msgstr "" + +msgid "Profiles|your account" +msgstr "" + +msgid "Profiling - Performance bar" +msgstr "" + +msgid "Programming languages used in this repository" +msgstr "" + +msgid "Progress" +msgstr "" + +msgid "Project" +msgstr "" + +msgid "Project '%{project_name}' is in the process of being deleted." +msgstr "" + +msgid "Project '%{project_name}' queued for deletion." +msgstr "" + +msgid "Project '%{project_name}' was successfully created." +msgstr "" + +msgid "Project '%{project_name}' was successfully updated." +msgstr "" + +msgid "Project Badges" +msgstr "" + +msgid "Project URL" +msgstr "" + +msgid "Project access must be granted explicitly to each user." +msgstr "" + +msgid "Project avatar" +msgstr "" + +msgid "Project avatar in repository: %{link}" +msgstr "" + +msgid "Project details" +msgstr "" + +msgid "Project export could not be deleted." +msgstr "" + +msgid "Project export has been deleted." +msgstr "" + +msgid "Project export link has expired. Please generate a new export from your project settings." +msgstr "" + +msgid "Project export started. A download link will be sent by email." +msgstr "" + +msgid "Project name" +msgstr "" + +msgid "Project slug" +msgstr "" + +msgid "ProjectActivityRSS|Subscribe" +msgstr "" + +msgid "ProjectCreationLevel|Allowed to create projects" +msgstr "" + +msgid "ProjectCreationLevel|Default project creation protection" +msgstr "" + +msgid "ProjectCreationLevel|Developers + Maintainers" +msgstr "" + +msgid "ProjectCreationLevel|Maintainers" +msgstr "" + +msgid "ProjectCreationLevel|No one" +msgstr "" + +msgid "ProjectFileTree|Name" +msgstr "" + +msgid "ProjectLastActivity|Never" +msgstr "" + +msgid "ProjectLifecycle|Stage" +msgstr "" + +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + +msgid "ProjectPage|Project ID: %{project_id}" +msgstr "" + +msgid "ProjectSettings|Badges" +msgstr "" + +msgid "ProjectSettings|Contact an admin to change this setting." +msgstr "" + +msgid "ProjectSettings|Customize your project badges." +msgstr "" + +msgid "ProjectSettings|Failed to protect the tag" +msgstr "" + +msgid "ProjectSettings|Failed to update tag!" +msgstr "" + +msgid "ProjectSettings|Learn more about badges." +msgstr "" + +msgid "ProjectSettings|Only signed commits can be pushed to this repository." +msgstr "" + +msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." +msgstr "" + +msgid "ProjectSettings|This setting is applied on the server level but has been overridden for this project." +msgstr "" + +msgid "ProjectSettings|This setting will be applied to all projects unless overridden by an admin." +msgstr "" + +msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." +msgstr "" + +msgid "Projects" +msgstr "" + +msgid "Projects shared with %{group_name}" +msgstr "" + +msgid "ProjectsDropdown|Frequently visited" +msgstr "" + +msgid "ProjectsDropdown|Loading projects" +msgstr "" + +msgid "ProjectsDropdown|Projects you visit often will appear here" +msgstr "" + +msgid "ProjectsDropdown|Search your projects" +msgstr "" + +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "" + +msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "" + +msgid "PrometheusAlerts|Add alert" +msgstr "" + +msgid "PrometheusAlerts|Alert set" +msgstr "" + +msgid "PrometheusAlerts|Edit alert" +msgstr "" + +msgid "PrometheusAlerts|Error creating alert" +msgstr "" + +msgid "PrometheusAlerts|Error deleting alert" +msgstr "" + +msgid "PrometheusAlerts|Error fetching alert" +msgstr "" + +msgid "PrometheusAlerts|Error saving alert" +msgstr "" + +msgid "PrometheusAlerts|No alert set" +msgstr "" + +msgid "PrometheusAlerts|Operator" +msgstr "" + +msgid "PrometheusAlerts|Threshold" +msgstr "" + +msgid "PrometheusDashboard|Time" +msgstr "" + +msgid "PrometheusService|%{exporters} with %{metrics} were found" +msgstr "" + +msgid "PrometheusService|

No common metrics were found

" +msgstr "" + +msgid "PrometheusService|Active" +msgstr "" + +msgid "PrometheusService|Auto configuration" +msgstr "" + +msgid "PrometheusService|Automatically deploy and configure Prometheus on your clusters to monitor your project’s environments" +msgstr "" + +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Common metrics" +msgstr "" + +msgid "PrometheusService|Common metrics are automatically monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Custom metrics" +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Finding custom metrics..." +msgstr "" + +msgid "PrometheusService|Install Prometheus on clusters" +msgstr "" + +msgid "PrometheusService|Manage clusters" +msgstr "" + +msgid "PrometheusService|Manual configuration" +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|New metric" +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus is being automatically managed on your clusters" +msgstr "" + +msgid "PrometheusService|These metrics will only be monitored after your first deployment to an environment" +msgstr "" + +msgid "PrometheusService|Time-series monitoring service" +msgstr "" + +msgid "PrometheusService|To enable manual configuration, uninstall Prometheus from your clusters" +msgstr "" + +msgid "PrometheusService|To enable the installation of Prometheus on your clusters, deactivate the manual configuration below" +msgstr "" + +msgid "PrometheusService|Waiting for your first deployment to an environment to find common metrics" +msgstr "" + +msgid "Promote" +msgstr "" + +msgid "Promote these project milestones into a group milestone." +msgstr "" + +msgid "Promote to Group Milestone" +msgstr "" + +msgid "Promote to group label" +msgstr "" + +msgid "Promotions|Don't show me this again" +msgstr "" + +msgid "Promotions|Epics let you manage your portfolio of projects more efficiently and with less effort by tracking groups of issues that share a theme, across projects and milestones." +msgstr "" + +msgid "Promotions|This feature is locked." +msgstr "" + +msgid "Promotions|Upgrade plan" +msgstr "" + +msgid "Protected" +msgstr "" + +msgid "Protected Environments" +msgstr "" + +msgid "ProtectedEnvironment|%{environment_name} will be writable for developers. Are you sure?" +msgstr "" + +msgid "ProtectedEnvironment|Allowed to deploy" +msgstr "" + +msgid "ProtectedEnvironment|Choose who is allowed to deploy" +msgstr "" + +msgid "ProtectedEnvironment|Environment" +msgstr "" + +msgid "ProtectedEnvironment|Protect" +msgstr "" + +msgid "ProtectedEnvironment|Protect Environments in order to restrict who can execute deployments." +msgstr "" + +msgid "ProtectedEnvironment|Protect an environment" +msgstr "" + +msgid "ProtectedEnvironment|Protected Environment (%{protected_environments_count})" +msgstr "" + +msgid "ProtectedEnvironment|Select an environment" +msgstr "" + +msgid "ProtectedEnvironment|There are currently no protected environments, protect an environment with the form above." +msgstr "" + +msgid "ProtectedEnvironment|Unprotect" +msgstr "" + +msgid "ProtectedEnvironment|Your environment can't be unprotected" +msgstr "" + +msgid "ProtectedEnvironment|Your environment has been protected." +msgstr "" + +msgid "ProtectedEnvironment|Your environment has been unprotected" +msgstr "" + +msgid "Protip:" +msgstr "" + +msgid "Provider" +msgstr "" + +msgid "Pseudonymizer data collection" +msgstr "" + +msgid "Public - The group and any public projects can be viewed without any authentication." +msgstr "" + +msgid "Public - The project can be accessed without any authentication." +msgstr "" + +msgid "Public pipelines" +msgstr "" + +msgid "Pull" +msgstr "" + +msgid "Push" +msgstr "" + +msgid "Push Rules" +msgstr "" + +msgid "Push events" +msgstr "" + +msgid "Push project from command line" +msgstr "" + +msgid "Push to create a project" +msgstr "" + +msgid "PushRule|Committer restriction" +msgstr "" + +msgid "Pushed" +msgstr "" + +msgid "Pushes" +msgstr "" + +msgid "Quarters" +msgstr "" + +msgid "Quick actions can be used in the issues description and comment boxes." +msgstr "" + +msgid "Read more" +msgstr "" + +msgid "Read more about project permissions %{link_to_help}" +msgstr "" + +msgid "Readme" +msgstr "" + +msgid "Real-time features" +msgstr "" + +msgid "Recent searches" +msgstr "" + +msgid "Reference:" +msgstr "" + +msgid "Refresh" +msgstr "" + +msgid "Refreshing in a second to show the updated status..." +msgid_plural "Refreshing in %d seconds to show the updated status..." +msgstr[0] "" +msgstr[1] "" + +msgid "Regenerate key" +msgstr "" + +msgid "Regex pattern" +msgstr "" + +msgid "Register / Sign In" +msgstr "" + +msgid "Register and see your runners for this group." +msgstr "" + +msgid "Register and see your runners for this project." +msgstr "" + +msgid "Registry" +msgstr "" + +msgid "Related Commits" +msgstr "" + +msgid "Related Deployed Jobs" +msgstr "" + +msgid "Related Issues" +msgstr "" + +msgid "Related Jobs" +msgstr "" + +msgid "Related Merge Requests" +msgstr "" + +msgid "Related Merged Requests" +msgstr "" + +msgid "Related merge requests" +msgstr "" + +msgid "Remind later" +msgstr "" + +msgid "Remove" +msgstr "" + +msgid "Remove Runner" +msgstr "" + +msgid "Remove avatar" +msgstr "" + +msgid "Remove priority" +msgstr "" + +msgid "Remove project" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "Rename file" +msgstr "" + +msgid "Rename folder" +msgstr "" + +msgid "Reopen epic" +msgstr "" + +msgid "Repair authentication" +msgstr "" + +msgid "Reply to this email directly or %{view_it_on_gitlab}." +msgstr "" + +msgid "Repo by URL" +msgstr "" + +msgid "Reporting" +msgstr "" + +msgid "Reports|%{failedString} and %{resolvedString}" +msgstr "" + +msgid "Reports|Class" +msgstr "" + +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + +msgid "Reports|Execution time" +msgstr "" + +msgid "Reports|Failure" +msgstr "" + +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + +msgid "Reports|System output" +msgstr "" + +msgid "Reports|Test summary" +msgstr "" + +msgid "Reports|Test summary failed loading results" +msgstr "" + +msgid "Reports|Test summary results are being parsed" +msgstr "" + +msgid "Reports|Vulnerability" +msgstr "" + +msgid "Reports|no changed test results" +msgstr "" + +msgid "Repository" +msgstr "" + +msgid "Repository Settings" +msgstr "" + +msgid "Repository URL" +msgstr "" + +msgid "Repository has no locks." +msgstr "" + +msgid "Repository maintenance" +msgstr "" + +msgid "Repository mirror" +msgstr "" + +msgid "Repository storage" +msgstr "" + +msgid "RepositorySettingsAccessLevel|Select" +msgstr "" + +msgid "Request Access" +msgstr "" + +msgid "Requests Profiles" +msgstr "" + +msgid "Require all users to accept Terms of Service and Privacy Policy when they access GitLab." +msgstr "" + +msgid "Reset git storage health information" +msgstr "" + +msgid "Reset health check access token" +msgstr "" + +msgid "Reset runners registration token" +msgstr "" + +msgid "Resolve all discussions in new issue" +msgstr "" + +msgid "Resolve conflicts on source branch" +msgstr "" + +msgid "Resolve discussion" +msgstr "" + +msgid "Response metrics (AWS ELB)" +msgstr "" + +msgid "Response metrics (Custom)" +msgstr "" + +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + +msgid "Resume" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Retry this job" +msgstr "" + +msgid "Retry verification" +msgstr "" + +msgid "Reveal Variables" +msgstr "" + +msgid "Reveal value" +msgid_plural "Reveal values" +msgstr[0] "" +msgstr[1] "" + +msgid "Revert this commit" +msgstr "" + +msgid "Revert this merge request" +msgstr "" + +msgid "Review" +msgstr "" + +msgid "Review the process for configuring service providers in your identity provider — in this case, GitLab is the \"service provider\" or \"relying party\"." +msgstr "" + +msgid "Reviewing" +msgstr "" + +msgid "Reviewing (merge request !%{mergeRequestId})" +msgstr "" + +msgid "Revoke" +msgstr "" + +msgid "Roadmap" +msgstr "" + +msgid "Run CI/CD pipelines for external repositories" +msgstr "" + +msgid "Run untagged jobs" +msgstr "" + +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + +msgid "Runner token" +msgstr "" + +msgid "Runner will not receive any new jobs" +msgstr "" + +msgid "Runners" +msgstr "" + +msgid "Runners API" +msgstr "" + +msgid "Runners can be placed on separate users, servers, and even on your local machine." +msgstr "" + +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + +msgid "Runners page" +msgstr "" + +msgid "Runners page." +msgstr "" + +msgid "Runners|You have used all your shared Runners pipeline minutes." +msgstr "" + +msgid "Running" +msgstr "" + +msgid "SAML SSO" +msgstr "" + +msgid "SAML SSO for %{group_name}" +msgstr "" + +msgid "SAML Single Sign On" +msgstr "" + +msgid "SAML Single Sign On Settings" +msgstr "" + +msgid "SAST" +msgstr "" + +msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." +msgstr "" + +msgid "SSH Keys" +msgstr "" + +msgid "SSH host keys" +msgstr "" + +msgid "SSH public key" +msgstr "" + +msgid "SSL Verification" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Save application" +msgstr "" + +msgid "Save changes" +msgstr "" + +msgid "Save pipeline schedule" +msgstr "" + +msgid "Save variables" +msgstr "" + +msgid "Schedule a new pipeline" +msgstr "" + +msgid "Scheduled" +msgstr "" + +msgid "Schedules" +msgstr "" + +msgid "Scheduling Pipelines" +msgstr "" + +msgid "Scope" +msgstr "" + +msgid "Scoped issue boards" +msgstr "" + +msgid "Scroll down to Google Code Project Hosting and enable the switch on the right." +msgstr "" + +msgid "Scroll to bottom" +msgstr "" + +msgid "Scroll to top" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Search branches" +msgstr "" + +msgid "Search branches and tags" +msgstr "" + +msgid "Search files" +msgstr "" + +msgid "Search for projects, issues, etc." +msgstr "" + +msgid "Search merge requests" +msgstr "" + +msgid "Search milestones" +msgstr "" + +msgid "Search or filter results..." +msgstr "" + +msgid "Search or jump to…" +msgstr "" + +msgid "Search project" +msgstr "" + +msgid "Search users" +msgstr "" + +msgid "SearchAutocomplete|All GitLab" +msgstr "" + +msgid "SearchAutocomplete|Issues I've created" +msgstr "" + +msgid "SearchAutocomplete|Issues assigned to me" +msgstr "" + +msgid "SearchAutocomplete|Merge requests I've created" +msgstr "" + +msgid "SearchAutocomplete|Merge requests assigned to me" +msgstr "" + +msgid "SearchAutocomplete|in all GitLab" +msgstr "" + +msgid "SearchAutocomplete|in this group" +msgstr "" + +msgid "SearchAutocomplete|in this project" +msgstr "" + +msgid "Seconds before reseting failure information" +msgstr "" + +msgid "Seconds to wait for a storage access attempt" +msgstr "" + +msgid "Secret:" +msgstr "" + +msgid "Security" +msgstr "" + +msgid "Security Dashboard" +msgstr "" + +msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." +msgstr "" + +msgid "SecurityDashboard|Monitor vulnerabilities in your code" +msgstr "" + +msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered" +msgstr "" + +msgid "Select" +msgstr "" + +msgid "Select Archive Format" +msgstr "" + +msgid "Select a group to invite" +msgstr "" + +msgid "Select a namespace to fork the project" +msgstr "" + +msgid "Select a timezone" +msgstr "" + +msgid "Select an existing Kubernetes cluster or create a new one" +msgstr "" + +msgid "Select assignee" +msgstr "" + +msgid "Select branch/tag" +msgstr "" + +msgid "Select project" +msgstr "" + +msgid "Select project and zone to choose machine type" +msgstr "" + +msgid "Select project to choose zone" +msgstr "" + +msgid "Select projects you want to import." +msgstr "" + +msgid "Select source branch" +msgstr "" + +msgid "Select target branch" +msgstr "" + +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + +msgid "Select the custom project template source group." +msgstr "" + +msgid "Selecting a GitLab user will add a link to the GitLab user in the descriptions of issues and comments (e.g. \"By @johnsmith\"). It will also associate and/or assign these issues and comments with the selected user." +msgstr "" + +msgid "Selective synchronization" +msgstr "" + +msgid "Send email" +msgstr "" + +msgid "Send usage data" +msgstr "" + +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + +msgid "Server version" +msgstr "" + +msgid "Service Desk" +msgstr "" + +msgid "Service Templates" +msgstr "" + +msgid "Service URL" +msgstr "" + +msgid "Session expiration, projects limit and attachment size." +msgstr "" + +msgid "Set a password on your account to pull or push via %{protocol}." +msgstr "" + +msgid "Set default and restrict visibility levels. Configure import sources and git access protocol." +msgstr "" + +msgid "Set instance-wide template repository" +msgstr "" + +msgid "Set max session time for web terminal." +msgstr "" + +msgid "Set notification email for abuse reports." +msgstr "" + +msgid "Set requirements for a user to sign-in. Enable mandatory two-factor authentication." +msgstr "" + +msgid "Set up CI/CD" +msgstr "" + +msgid "Set up Koding" +msgstr "" + +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgstr "" + +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgstr "" + +msgid "SetPasswordToCloneLink|set a password" +msgstr "" + +msgid "Settings" +msgstr "" + +msgid "Share" +msgstr "" + +msgid "Share the %{sso_label} with members so they can sign in to your group through your identity provider" +msgstr "" + +msgid "Shared Runners" +msgstr "" + +msgid "Shared projects" +msgstr "" + +msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." +msgstr "" + +msgid "SharedRunnersMinutesSettings|Reset pipeline minutes" +msgstr "" + +msgid "SharedRunnersMinutesSettings|Reset used pipeline minutes" +msgstr "" + +msgid "Sherlock Transactions" +msgstr "" + +msgid "Show command" +msgstr "" + +msgid "Show complete raw log" +msgstr "" + +msgid "Show latest version" +msgstr "" + +msgid "Show latest version of the diff" +msgstr "" + +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" + +msgid "Show whitespace changes" +msgstr "" + +msgid "Showing %d event" +msgid_plural "Showing %d events" +msgstr[0] "" +msgstr[1] "" + +msgid "Side-by-side" +msgstr "" + +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Only numeral characters allowed" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + +msgid "Sign in" +msgstr "" + +msgid "Sign in / Register" +msgstr "" + +msgid "Sign in to %{group_name}" +msgstr "" + +msgid "Sign in with Single Sign-On" +msgstr "" + +msgid "Sign out" +msgstr "" + +msgid "Sign-in restrictions" +msgstr "" + +msgid "Sign-up restrictions" +msgstr "" + +msgid "Size" +msgstr "" + +msgid "Size and domain settings for static websites" +msgstr "" + +msgid "Slack application" +msgstr "" + +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." +msgstr "" + +msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" +msgstr "" + +msgid "Snippets" +msgstr "" + +msgid "Something went wrong on our end" +msgstr "" + +msgid "Something went wrong on our end." +msgstr "" + +msgid "Something went wrong on our end. Please try again!" +msgstr "" + +msgid "Something went wrong trying to change the confidentiality of this issue" +msgstr "" + +msgid "Something went wrong trying to change the locked state of this %{issuableDisplayName}" +msgstr "" + +msgid "Something went wrong when toggling the button" +msgstr "" + +msgid "Something went wrong while closing the %{issuable}. Please try again later" +msgstr "" + +msgid "Something went wrong while fetching %{listType} list" +msgstr "" + +msgid "Something went wrong while fetching group member contributions" +msgstr "" + +msgid "Something went wrong while fetching the projects." +msgstr "" + +msgid "Something went wrong while fetching the registry list." +msgstr "" + +msgid "Something went wrong while reopening the %{issuable}. Please try again later" +msgstr "" + +msgid "Something went wrong while resolving this discussion. Please try again." +msgstr "" + +msgid "Something went wrong. Please try again." +msgstr "" + +msgid "Sorry, no epics matched your search" +msgstr "" + +msgid "Sort by" +msgstr "" + +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last Contact" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Most stars" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start date" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" + +msgid "Source" +msgstr "" + +msgid "Source (branch or tag)" +msgstr "" + +msgid "Source code" +msgstr "" + +msgid "Source is not available" +msgstr "" + +msgid "Spam Logs" +msgstr "" + +msgid "Spam and Anti-bot Protection" +msgstr "" + +msgid "Specific Runners" +msgstr "" + +msgid "Specify an e-mail address regex pattern to identify default internal users." +msgstr "" + +msgid "Specify the following URL during the Runner setup:" +msgstr "" + +msgid "Squash commits" +msgstr "" + +msgid "Stage" +msgstr "" + +msgid "Stage & Commit" +msgstr "" + +msgid "Stage all changes" +msgstr "" + +msgid "Stage changes" +msgstr "" + +msgid "Staged" +msgstr "" + +msgid "Staged %{type}" +msgstr "" + +msgid "Star a label to make it a priority label. Order the prioritized labels to change their relative priority, by dragging." +msgstr "" + +msgid "StarProject|Star" +msgstr "" + +msgid "Starred Projects" +msgstr "" + +msgid "Starred Projects' Activity" +msgstr "" + +msgid "Starred projects" +msgstr "" + +msgid "Start a %{new_merge_request} with these changes" +msgstr "" + +msgid "Start date" +msgstr "" + +msgid "Start the Runner!" +msgstr "" + +msgid "Started" +msgstr "" + +msgid "Starts at (UTC)" +msgstr "" + +msgid "State your message to activate" +msgstr "" + +msgid "Status" +msgstr "" + +msgid "Stop impersonation" +msgstr "" + +msgid "Stop this environment" +msgstr "" + +msgid "Stopped" +msgstr "" + +msgid "Storage" +msgstr "" + +msgid "Storage:" +msgstr "" + +msgid "Subgroups" +msgstr "" + +msgid "Subgroups and projects" +msgstr "" + +msgid "Submit as spam" +msgstr "" + +msgid "Submit search" +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "Subscribe at group level" +msgstr "" + +msgid "Subscribe at project level" +msgstr "" + +msgid "Switch branch/tag" +msgstr "" + +msgid "Sync information" +msgstr "" + +msgid "System Hooks" +msgstr "" + +msgid "System Info" +msgstr "" + +msgid "System header and footer:" +msgstr "" + +msgid "System metrics (Custom)" +msgstr "" + +msgid "System metrics (Kubernetes)" +msgstr "" + +msgid "Tag (%{tag_count})" +msgid_plural "Tags (%{tag_count})" +msgstr[0] "" +msgstr[1] "" + +msgid "Tags" +msgstr "" + +msgid "Tags feed" +msgstr "" + +msgid "Tags:" +msgstr "" + +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here…" +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + +msgid "Target Branch" +msgstr "" + +msgid "Target branch" +msgstr "" + +msgid "Team" +msgstr "" + +msgid "Template" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Terms of Service Agreement and Privacy Policy" +msgstr "" + +msgid "Terms of Service and Privacy Policy" +msgstr "" + +msgid "Test coverage parsing" +msgstr "" + +msgid "Thanks! Don't show me this again" +msgstr "" + +msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." +msgstr "" + +msgid "The Git LFS objects will not be synced." +msgstr "" + +msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project" +msgstr "" + +msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project. You can register or sign in to create issues for this project." +msgstr "" + +msgid "The X509 Certificate to use when mutual TLS is required to communicate with the external authorization service. If left blank, the server certificate is still validated when accessing over HTTPS." +msgstr "" + +msgid "The character highlighter helps you keep the subject line to %{titleLength} characters and wrap the body at %{bodyLength} so they are readable in git." +msgstr "" + +msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request." +msgstr "" + +msgid "The collection of events added to the data gathered for that stage." +msgstr "" + +msgid "The connection will time out after %{timeout}. For repositories that take longer, use a clone/push combination." +msgstr "" + +msgid "The deployment of this job to %{environmentLink} did not succeed." +msgstr "" + +msgid "The fork relationship has been removed." +msgstr "" + +msgid "The import will time out after %{timeout}. For repositories that take longer, use a clone/push combination." +msgstr "" + +msgid "The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage." +msgstr "" + +msgid "The maximum file size allowed is 200KB." +msgstr "" + +msgid "The number of attempts GitLab will make to access a storage." +msgstr "" + +msgid "The number of failures after which GitLab will completely prevent access to the storage. The number of failures can be reset in the admin interface: %{link_to_health_page} or using the %{api_documentation_link}." +msgstr "" + +msgid "The passphrase required to decrypt the private key. This is optional and the value is encrypted at rest." +msgstr "" + +msgid "The path to CI config file. Defaults to .gitlab-ci.yml" +msgstr "" + +msgid "The phase of the development lifecycle." +msgstr "" + +msgid "The pipelines schedule runs pipelines in the future, repeatedly, for specific branches or tags. Those scheduled pipelines will inherit limited project access based on their associated user." +msgstr "" + +msgid "The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit." +msgstr "" + +msgid "The private key to use when a client certificate is provided. This value is encrypted at rest." +msgstr "" + +msgid "The production stage shows the total time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle." +msgstr "" + +msgid "The project can be accessed by any logged in user." +msgstr "" + +msgid "The project can be accessed without any authentication." +msgstr "" + +msgid "The pseudonymizer data collection is disabled. When enabled, GitLab will run a background job that will produce pseudonymized CSVs of the GitLab database that will be uploaded to your configured object storage directory." +msgstr "" + +msgid "The repository for this project does not exist." +msgstr "" + +msgid "The repository for this project is empty" +msgstr "" + +msgid "The repository must be accessible over http://, https:// or git://." +msgstr "" + +msgid "The repository must be accessible over http://, https://, ssh:// and git://." +msgstr "" + +msgid "The review stage shows the time from creating the merge request to merging it. The data will automatically be added after you merge your first merge request." +msgstr "" + +msgid "The roadmap shows the progress of your epics along a timeline" +msgstr "" + +msgid "The secure token used by the Runner to checkout the project" +msgstr "" + +msgid "The staging stage shows the time between merging the MR and deploying code to the production environment. The data will be automatically added once you deploy to production for the first time." +msgstr "" + +msgid "The tabs below will be removed in a future version" +msgstr "" + +msgid "The testing stage shows the time GitLab CI takes to run every pipeline for the related merge request. The data will automatically be added after your first pipeline finishes running." +msgstr "" + +msgid "The time in seconds GitLab will keep failure information. When no failures occur during this time, information about the mount is reset." +msgstr "" + +msgid "The time in seconds GitLab will try to access storage. After this time a timeout error will be raised." +msgstr "" + +msgid "The time in seconds between storage checks. If a check did not complete yet, GitLab will skip the next check." +msgstr "" + +msgid "The time taken by each data entry gathered by that stage." +msgstr "" + +msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." +msgstr "" + +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + +msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." +msgstr "" + +msgid "The user map is a mapping of the FogBugz users that participated on your projects to the way their email address and usernames will be imported into GitLab. You can change this by populating the table below." +msgstr "" + +msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." +msgstr "" + +msgid "There are no archived projects yet" +msgstr "" + +msgid "There are no issues to show" +msgstr "" + +msgid "There are no labels yet" +msgstr "" + +msgid "There are no merge requests to show" +msgstr "" + +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + +msgid "There are problems accessing Git storage: " +msgstr "" + +msgid "There was an error adding a todo." +msgstr "" + +msgid "There was an error deleting the todo." +msgstr "" + +msgid "There was an error loading users activity calendar." +msgstr "" + +msgid "There was an error saving your notification settings." +msgstr "" + +msgid "There was an error subscribing to this label." +msgstr "" + +msgid "There was an error when reseting email token." +msgstr "" + +msgid "There was an error when subscribing to this label." +msgstr "" + +msgid "There was an error when unsubscribing from this label." +msgstr "" + +msgid "They can be managed using the %{link}." +msgstr "" + +msgid "Third party offers" +msgstr "" + +msgid "This GitLab instance does not provide any shared Runners yet. Instance administrators can register shared Runners in the admin area." +msgstr "" + +msgid "This application was created by %{link_to_owner}." +msgstr "" + +msgid "This application will be able to:" +msgstr "" + +msgid "This board's scope is reduced" +msgstr "" + +msgid "This branch has changed since you started editing. Would you like to create a new branch?" +msgstr "" + +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This diff is collapsed." +msgstr "" + +msgid "This directory" +msgstr "" + +msgid "This group" +msgstr "" + +msgid "This group allows you to sign in with your %{group_name} Single Sign-On account. This will redirect you to an external sign in page." +msgstr "" + +msgid "This group does not provide any group Runners yet." +msgstr "" + +msgid "This is a confidential issue." +msgstr "" + +msgid "This is the author's first Merge Request to this project." +msgstr "" + +msgid "This issue is confidential" +msgstr "" + +msgid "This issue is confidential and locked." +msgstr "" + +msgid "This issue is locked." +msgstr "" + +msgid "This job depends on a user to trigger its process. Often they are used to deploy code to production environments" +msgstr "" + +msgid "This job depends on upstream jobs that need to succeed in order for this job to be triggered" +msgstr "" + +msgid "This job does not have a trace." +msgstr "" + +msgid "This job has been canceled" +msgstr "" + +msgid "This job has been skipped" +msgstr "" + +msgid "This job has not been triggered yet" +msgstr "" + +msgid "This job has not started yet" +msgstr "" + +msgid "This job is an out-of-date deployment to %{environmentLink}." +msgstr "" + +msgid "This job is an out-of-date deployment to %{environmentLink}. View the most recent deployment %{deploymentLink}." +msgstr "" + +msgid "This job is creating a deployment to %{environmentLink} and will overwrite the last %{deploymentLink}." +msgstr "" + +msgid "This job is creating a deployment to %{environmentLink}." +msgstr "" + +msgid "This job is in pending state and is waiting to be picked by a runner" +msgstr "" + +msgid "This job is stuck, because you don't have any active runners online with any of these tags assigned to them:" +msgstr "" + +msgid "This job is stuck, because you don't have any active runners that can run this job." +msgstr "" + +msgid "This job is the most recent deployment to %{link}." +msgstr "" + +msgid "This job requires a manual action" +msgstr "" + +msgid "This means you can not push code until you create an empty repository or import existing one." +msgstr "" + +msgid "This merge request is locked." +msgstr "" + +msgid "This option is disabled as you don't have write permissions for the current branch" +msgstr "" + +msgid "This option is disabled while you still have unstaged changes" +msgstr "" + +msgid "This page is unavailable because you are not allowed to read information across multiple projects." +msgstr "" + +msgid "This page will be removed in a future release." +msgstr "" + +msgid "This project" +msgstr "" + +msgid "This project does not belong to a group and can therefore not make use of group Runners." +msgstr "" + +msgid "This project does not have billing enabled. To create a cluster, enable billing and try again." +msgstr "" + +msgid "This repository" +msgstr "" + +msgid "This runner will only run on pipelines triggered on protected branches" +msgstr "" + +msgid "This source diff could not be displayed because it is too large." +msgstr "" + +msgid "This timeout will take precedence when lower than Project-defined timeout" +msgstr "" + +msgid "This user has no identities" +msgstr "" + +msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches." +msgstr "" + +msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches. Upon creation or when reassigning you can only assign yourself to be the mirror user." +msgstr "" + +msgid "This will delete the custom metric, Are you sure?" +msgstr "" + +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + +msgid "Time before an issue gets scheduled" +msgstr "" + +msgid "Time before an issue starts implementation" +msgstr "" + +msgid "Time between merge request creation and merge/close" +msgstr "" + +msgid "Time in seconds GitLab will wait for a response from the external service. When the service does not respond in time, access will be denied." +msgstr "" + +msgid "Time remaining" +msgstr "" + +msgid "Time spent" +msgstr "" + +msgid "Time tracking" +msgstr "" + +msgid "Time until first merge request" +msgstr "" + +msgid "TimeTrackingEstimated|Est" +msgstr "" + +msgid "TimeTracking|Estimated:" +msgstr "" + +msgid "TimeTracking|Spent" +msgstr "" + +msgid "Timeago|%s days ago" +msgstr "" + +msgid "Timeago|%s days remaining" +msgstr "" + +msgid "Timeago|%s hours ago" +msgstr "" + +msgid "Timeago|%s hours remaining" +msgstr "" + +msgid "Timeago|%s minutes ago" +msgstr "" + +msgid "Timeago|%s minutes remaining" +msgstr "" + +msgid "Timeago|%s months ago" +msgstr "" + +msgid "Timeago|%s months remaining" +msgstr "" + +msgid "Timeago|%s seconds ago" +msgstr "" + +msgid "Timeago|%s seconds remaining" +msgstr "" + +msgid "Timeago|%s weeks ago" +msgstr "" + +msgid "Timeago|%s weeks remaining" +msgstr "" + +msgid "Timeago|%s years ago" +msgstr "" + +msgid "Timeago|%s years remaining" +msgstr "" + +msgid "Timeago|1 day ago" +msgstr "" + +msgid "Timeago|1 day remaining" +msgstr "" + +msgid "Timeago|1 hour ago" +msgstr "" + +msgid "Timeago|1 hour remaining" +msgstr "" + +msgid "Timeago|1 minute ago" +msgstr "" + +msgid "Timeago|1 minute remaining" +msgstr "" + +msgid "Timeago|1 month ago" +msgstr "" + +msgid "Timeago|1 month remaining" +msgstr "" + +msgid "Timeago|1 week ago" +msgstr "" + +msgid "Timeago|1 week remaining" +msgstr "" + +msgid "Timeago|1 year ago" +msgstr "" + +msgid "Timeago|1 year remaining" +msgstr "" + +msgid "Timeago|Past due" +msgstr "" + +msgid "Timeago|in %s days" +msgstr "" + +msgid "Timeago|in %s hours" +msgstr "" + +msgid "Timeago|in %s minutes" +msgstr "" + +msgid "Timeago|in %s months" +msgstr "" + +msgid "Timeago|in %s seconds" +msgstr "" + +msgid "Timeago|in %s weeks" +msgstr "" + +msgid "Timeago|in %s years" +msgstr "" + +msgid "Timeago|in 1 day" +msgstr "" + +msgid "Timeago|in 1 hour" +msgstr "" + +msgid "Timeago|in 1 minute" +msgstr "" + +msgid "Timeago|in 1 month" +msgstr "" + +msgid "Timeago|in 1 week" +msgstr "" + +msgid "Timeago|in 1 year" +msgstr "" + +msgid "Timeago|just now" +msgstr "" + +msgid "Timeago|right now" +msgstr "" + +msgid "Timeout" +msgstr "" + +msgid "Time|hr" +msgid_plural "Time|hrs" +msgstr[0] "" +msgstr[1] "" + +msgid "Time|min" +msgid_plural "Time|mins" +msgstr[0] "" +msgstr[1] "" + +msgid "Time|s" +msgstr "" + +msgid "Tip:" +msgstr "" + +msgid "Title" +msgstr "" + +msgid "To GitLab" +msgstr "" + +msgid "To add an SSH key you need to %{generate_link_start}generate one%{link_end} or use an %{existing_link_start}existing key%{link_end}." +msgstr "" + +msgid "To connect GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to connect." +msgstr "" + +msgid "To connect GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" +msgstr "" + +msgid "To connect an SVN repository, check out %{svn_link}." +msgstr "" + +msgid "To define internal users, first enable new users set to external" +msgstr "" + +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + +msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." +msgstr "" + +msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." +msgstr "" + +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + +msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." +msgstr "" + +msgid "To import GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" +msgstr "" + +msgid "To import an SVN repository, check out %{svn_link}." +msgstr "" + +msgid "To move or copy an entire GitLab project from another GitLab installation to this one, navigate to the original project's settings page, generate an export file, and upload it here." +msgstr "" + +msgid "To only use CI/CD features for an external repository, choose CI/CD for external repo." +msgstr "" + +msgid "To set up SAML authentication for your group through an identity provider like Azure, Okta, Onelogin, Ping Identity, or your custom SAML 2.0 provider:" +msgstr "" + +msgid "To start serving your jobs you can add Runners to your group" +msgstr "" + +msgid "To this GitLab instance" +msgstr "" + +msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." +msgstr "" + +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "" + +msgid "To widen your search, change or remove filters." +msgstr "" + +msgid "Todo" +msgstr "" + +msgid "Todos" +msgstr "" + +msgid "Toggle Sidebar" +msgstr "" + +msgid "Toggle commit description" +msgstr "" + +msgid "Toggle discussion" +msgstr "" + +msgid "Toggle navigation" +msgstr "" + +msgid "Toggle sidebar" +msgstr "" + +msgid "ToggleButton|Toggle Status: OFF" +msgstr "" + +msgid "ToggleButton|Toggle Status: ON" +msgstr "" + +msgid "Token" +msgstr "" + +msgid "Too many changes to show." +msgstr "" + +msgid "Total Contributions" +msgstr "" + +msgid "Total Time" +msgstr "" + +msgid "Total test time for all commits/merges" +msgstr "" + +msgid "Total: %{total}" +msgstr "" + +msgid "Track activity with Contribution Analytics." +msgstr "" + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Track time with quick actions" +msgstr "" + +msgid "Trending" +msgstr "" + +msgid "Trigger" +msgstr "" + +msgid "Trigger pipelines for mirror updates" +msgstr "" + +msgid "Trigger pipelines when branches or tags are updated from the upstream repository. Depending on the activity of the upstream repository, this may greatly increase the load on your CI runners. Only enable this if you know they can handle the load." +msgstr "" + +msgid "Trigger this manual action" +msgstr "" + +msgid "Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions." +msgstr "" + +msgid "Try again" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + +msgid "Twitter" +msgstr "" + +msgid "Type" +msgstr "" + +msgid "Unable to load the diff. %{button_try_again}" +msgstr "" + +msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" +msgstr "" + +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + +msgid "Unknown" +msgstr "" + +msgid "Unlock" +msgstr "" + +msgid "Unlock this %{issuableDisplayName}? Everyone will be able to comment." +msgstr "" + +msgid "Unlocked" +msgstr "" + +msgid "Unresolve discussion" +msgstr "" + +msgid "Unstage" +msgstr "" + +msgid "Unstage all changes" +msgstr "" + +msgid "Unstage changes" +msgstr "" + +msgid "Unstaged" +msgstr "" + +msgid "Unstaged %{type}" +msgstr "" + +msgid "Unstaged and staged %{type}" +msgstr "" + +msgid "Unstar" +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Unsubscribe at group level" +msgstr "" + +msgid "Unsubscribe at project level" +msgstr "" + +msgid "Unverified" +msgstr "" + +msgid "Up to date" +msgstr "" + +msgid "Update" +msgstr "" + +msgid "Update now" +msgstr "" + +msgid "Update your group name, description, avatar, and other general settings." +msgstr "" + +msgid "Updating" +msgstr "" + +msgid "Upgrade your plan to activate Advanced Global Search." +msgstr "" + +msgid "Upgrade your plan to activate Contribution Analytics." +msgstr "" + +msgid "Upgrade your plan to activate Group Webhooks." +msgstr "" + +msgid "Upgrade your plan to activate Issue weight." +msgstr "" + +msgid "Upgrade your plan to improve Issue boards." +msgstr "" + +msgid "Upload GoogleCodeProjectHosting.json here:" +msgstr "" + +msgid "Upload New File" +msgstr "" + +msgid "Upload file" +msgstr "" + +msgid "UploadLink|click to upload" +msgstr "" + +msgid "Upvotes" +msgstr "" + +msgid "Usage ping is not enabled" +msgstr "" + +msgid "Usage statistics" +msgstr "" + +msgid "Use %{native_redirect_uri} for local tests" +msgstr "" + +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + +msgid "Use group milestones to manage issues from multiple projects in the same milestone." +msgstr "" + +msgid "Use one line per URI" +msgstr "" + +msgid "Use template" +msgstr "" + +msgid "Use the following registration token during setup:" +msgstr "" + +msgid "Use your global notification setting" +msgstr "" + +msgid "Used by members to sign in to your group in GitLab" +msgstr "" + +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + +msgid "User Settings" +msgstr "" + +msgid "User and IP Rate Limits" +msgstr "" + +msgid "User map" +msgstr "" + +msgid "Users" +msgstr "" + +msgid "Variables" +msgstr "" + +msgid "Variables are applied to environments via the runner. They can be protected by only exposing them to protected branches or tags. You can use variables for passwords, secret keys, or whatever you want." +msgstr "" + +msgid "Various container registry settings." +msgstr "" + +msgid "Various email settings." +msgstr "" + +msgid "Various settings that affect GitLab performance." +msgstr "" + +msgid "Verification information" +msgstr "" + +msgid "Verified" +msgstr "" + +msgid "Version" +msgstr "" + +msgid "View epics list" +msgstr "" + +msgid "View file @ " +msgstr "" + +msgid "View group labels" +msgstr "" + +msgid "View issue" +msgstr "" + +msgid "View it on GitLab" +msgstr "" + +msgid "View jobs" +msgstr "" + +msgid "View labels" +msgstr "" + +msgid "View log" +msgstr "" + +msgid "View open merge request" +msgstr "" + +msgid "View project labels" +msgstr "" + +msgid "View replaced file @ " +msgstr "" + +msgid "Visibility and access controls" +msgstr "" + +msgid "Visibility level:" +msgstr "" + +msgid "Visibility:" +msgstr "" + +msgid "VisibilityLevel|Internal" +msgstr "" + +msgid "VisibilityLevel|Private" +msgstr "" + +msgid "VisibilityLevel|Public" +msgstr "" + +msgid "VisibilityLevel|Unknown" +msgstr "" + +msgid "Want to see the data? Please ask an administrator for access." +msgstr "" + +msgid "We detected potential spam in the %{humanized_resource_name}. Please solve the reCAPTCHA to proceed." +msgstr "" + +msgid "We don't have enough data to show this stage." +msgstr "" + +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + +msgid "Web IDE" +msgstr "" + +msgid "Web terminal" +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." +msgstr "" + +msgid "Weeks" +msgstr "" + +msgid "Weight" +msgstr "" + +msgid "Weight %{weight}" +msgstr "" + +msgid "When a runner is locked, it cannot be assigned to other projects" +msgstr "" + +msgid "When enabled, users cannot use GitLab until the terms have been accepted." +msgstr "" + +msgid "When leaving the URL blank, classification labels can still be specified without disabling cross project features or performing external authorization checks." +msgstr "" + +msgid "Wiki" +msgstr "" + +msgid "WikiClone|Clone your wiki" +msgstr "" + +msgid "WikiClone|Git Access" +msgstr "" + +msgid "WikiClone|Install Gollum" +msgstr "" + +msgid "WikiClone|It is recommended to install %{markdown} so that GFM features render locally:" +msgstr "" + +msgid "WikiClone|Start Gollum and edit locally" +msgstr "" + +msgid "WikiEditPageTip|Tip: You can move this page by adding the path to the beginning of the title." +msgstr "" + +msgid "WikiEdit|There is already a page with the same title in that path." +msgstr "" + +msgid "WikiEmptyIssueMessage|Suggest wiki improvement" +msgstr "" + +msgid "WikiEmptyIssueMessage|You must be a project member in order to add wiki pages. If you have suggestions for how to improve the wiki for this project, consider opening an issue in the %{issues_link}." +msgstr "" + +msgid "WikiEmptyIssueMessage|issue tracker" +msgstr "" + +msgid "WikiEmpty|A wiki is where you can store all the details about your project. This can include why you've created it, its principles, how to use it, and so on." +msgstr "" + +msgid "WikiEmpty|Create your first page" +msgstr "" + +msgid "WikiEmpty|Suggest wiki improvement" +msgstr "" + +msgid "WikiEmpty|The wiki lets you write documentation for your project" +msgstr "" + +msgid "WikiEmpty|This project has no wiki pages" +msgstr "" + +msgid "WikiEmpty|You must be a project member in order to add wiki pages." +msgstr "" + +msgid "WikiHistoricalPage|This is an old version of this page." +msgstr "" + +msgid "WikiHistoricalPage|You can view the %{most_recent_link} or browse the %{history_link}." +msgstr "" + +msgid "WikiHistoricalPage|history" +msgstr "" + +msgid "WikiHistoricalPage|most recent version" +msgstr "" + +msgid "WikiMarkdownDocs|More examples are in the %{docs_link}" +msgstr "" + +msgid "WikiMarkdownDocs|documentation" +msgstr "" + +msgid "WikiMarkdownTip|To link to a (new) page, simply type %{link_example}" +msgstr "" + +msgid "WikiNewPagePlaceholder|how-to-setup" +msgstr "" + +msgid "WikiNewPageTip|Tip: You can specify the full path for the new file. We will automatically create any missing directories." +msgstr "" + +msgid "WikiNewPageTitle|New Wiki Page" +msgstr "" + +msgid "WikiPageConfirmDelete|Are you sure you want to delete this page?" +msgstr "" + +msgid "WikiPageConfirmDelete|Delete page" +msgstr "" + +msgid "WikiPageConfirmDelete|Delete page %{pageTitle}?" +msgstr "" + +msgid "WikiPageConflictMessage|Someone edited the page the same time you did. Please check out %{page_link} and make sure your changes will not unintentionally remove theirs." +msgstr "" + +msgid "WikiPageConflictMessage|the page" +msgstr "" + +msgid "WikiPageCreate|Create %{page_title}" +msgstr "" + +msgid "WikiPageEdit|Update %{page_title}" +msgstr "" + +msgid "WikiPage|Page slug" +msgstr "" + +msgid "WikiPage|Write your content or drag files here…" +msgstr "" + +msgid "Wiki|Create Page" +msgstr "" + +msgid "Wiki|Create page" +msgstr "" + +msgid "Wiki|Edit Page" +msgstr "" + +msgid "Wiki|More Pages" +msgstr "" + +msgid "Wiki|New page" +msgstr "" + +msgid "Wiki|Page history" +msgstr "" + +msgid "Wiki|Page version" +msgstr "" + +msgid "Wiki|Pages" +msgstr "" + +msgid "Wiki|Wiki Pages" +msgstr "" + +msgid "With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members." +msgstr "" + +msgid "Withdraw Access Request" +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "Yes, add it" +msgstr "" + +msgid "Yes, let me map Google Code users to full names or GitLab users." +msgstr "" + +msgid "You are an admin, which means granting access to %{client_name} will allow them to interact with GitLab as an admin as well. Proceed with caution." +msgstr "" + +msgid "You are going to remove %{group_name}. Removed groups CANNOT be restored! Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are going to remove %{project_full_name}. Removed project CANNOT be restored! Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are going to remove the fork relationship to source project %{forked_from_project}. Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are going to transfer %{project_full_name} to another owner. Are you ABSOLUTELY sure?" +msgstr "" + +msgid "You are on a read-only GitLab instance." +msgstr "" + +msgid "You are on a secondary, read-only Geo node. If you want to make changes, you must visit this page on the %{primary_node}." +msgstr "" + +msgid "You can %{linkStart}view the blob%{linkEnd} instead." +msgstr "" + +msgid "You can also create a project from the command line." +msgstr "" + +msgid "You can also star a label to make it a priority label." +msgstr "" + +msgid "You can also test your .gitlab-ci.yml in the %{linkStart}Lint%{linkEnd}" +msgstr "" + +msgid "You can easily contribute to them by requesting to join these groups." +msgstr "" + +msgid "You can easily install a Runner on a Kubernetes cluster. %{link_to_help_page}" +msgstr "" + +msgid "You can move around the graph by using the arrow keys." +msgstr "" + +msgid "You can only add files when you are on a branch" +msgstr "" + +msgid "You can only edit files when you are on a branch" +msgstr "" + +msgid "You can reset runners registration token by pressing a button below." +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}" +msgstr "" + +msgid "You can set up jobs to only use Runners with specific tags. Separate tags with commas." +msgstr "" + +msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." +msgstr "" + +msgid "You cannot write to this read-only GitLab instance." +msgstr "" + +msgid "You do not have the correct permissions to override the settings from the LDAP group sync." +msgstr "" + +msgid "You don't have any applications" +msgstr "" + +msgid "You don't have any authorized applications" +msgstr "" + +msgid "You have no permissions" +msgstr "" + +msgid "You have reached your project limit" +msgstr "" + +msgid "You must accept our Terms of Service and privacy policy in order to register an account" +msgstr "" + +msgid "You must have maintainer access to force delete a lock" +msgstr "" + +msgid "You need a different license to enable FileLocks feature" +msgstr "" + +msgid "You need git-lfs version %{min_git_lfs_version} (or greater) to continue. Please visit https://git-lfs.github.com" +msgstr "" + +msgid "You need permission." +msgstr "" + +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + +msgid "You will not get any notifications via email" +msgstr "" + +msgid "You will only receive notifications for the events you choose" +msgstr "" + +msgid "You will only receive notifications for threads you have participated in" +msgstr "" + +msgid "You will receive notifications for any activity" +msgstr "" + +msgid "You will receive notifications only for comments in which you were @mentioned" +msgstr "" + +msgid "You won't be able to pull or push project code via %{protocol} until you %{set_password_link} on your account" +msgstr "" + +msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" +msgstr "" + +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + +msgid "You'll need to use different branch names to get a valid comparison." +msgstr "" + +msgid "You're receiving this email because %{reason}." +msgstr "" + +msgid "You're receiving this email because of your account on %{host}." +msgstr "" + +msgid "You're receiving this email because of your account on %{host}. %{manage_notifications_link} · %{help_link}" +msgstr "" + +msgid "YouTube" +msgstr "" + +msgid "Your Groups" +msgstr "" + +msgid "Your Kubernetes cluster information on this page is still editable, but you are advised to disable and reconfigure" +msgstr "" + +msgid "Your Projects (default)" +msgstr "" + +msgid "Your Projects' Activity" +msgstr "" + +msgid "Your Todos" +msgstr "" + +msgid "Your applications (%{size})" +msgstr "" + +msgid "Your authorized applications" +msgstr "" + +msgid "Your changes can be committed to %{branch_name} because a merge request is open." +msgstr "" + +msgid "Your changes have been committed. Commit %{commitId} %{commitStats}" +msgstr "" + +msgid "Your comment will not be visible to the public." +msgstr "" + +msgid "Your groups" +msgstr "" + +msgid "Your name" +msgstr "" + +msgid "Your projects" +msgstr "" + +msgid "a deleted user" +msgstr "" + +msgid "ago" +msgstr "" + +msgid "among other things" +msgstr "" + +msgid "assign yourself" +msgstr "" + +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about Container Scanning %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about DAST %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about Dependency Scanning %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{linkStartTag}Learn more about SAST %{linkEndTag}" +msgstr "" + +msgid "ciReport|%{namespace} is affected by %{vulnerability}." +msgstr "" + +msgid "ciReport|%{remainingPackagesCount} more" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" + +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} is loading" +msgstr "" + +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" + +msgid "ciReport|(errors when loading results)" +msgstr "" + +msgid "ciReport|(is loading)" +msgstr "" + +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" + +msgid "ciReport|Class" +msgstr "" + +msgid "ciReport|Code quality" +msgstr "" + +msgid "ciReport|Confidence" +msgstr "" + +msgid "ciReport|Container scanning" +msgstr "" + +msgid "ciReport|Container scanning detected" +msgstr "" + +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgstr "" + +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgstr "" + +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" +msgstr "" + +msgid "ciReport|Description" +msgstr "" + +msgid "ciReport|Dismiss vulnerability" +msgstr "" + +msgid "ciReport|Dismissed by" +msgstr "" + +msgid "ciReport|Dynamic Application Security Testing (DAST) detects known vulnerabilities in your web application." +msgstr "" + +msgid "ciReport|Failed to load %{reportName} report" +msgstr "" + +msgid "ciReport|File" +msgstr "" + +msgid "ciReport|Fixed:" +msgstr "" + +msgid "ciReport|Identifiers" +msgstr "" + +msgid "ciReport|Instances" +msgstr "" + +msgid "ciReport|Learn more about interacting with security reports (Alpha)." +msgstr "" + +msgid "ciReport|License management detected %d license for the source branch only" +msgid_plural "ciReport|License management detected %d licenses for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|License management detected %d new license" +msgid_plural "ciReport|License management detected %d new licenses" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|License management detected no licenses for the source branch only" +msgstr "" + +msgid "ciReport|License management detected no new licenses" +msgstr "" + +msgid "ciReport|Links" +msgstr "" + +msgid "ciReport|Loading %{reportName} report" +msgstr "" + +msgid "ciReport|Method" +msgstr "" + +msgid "ciReport|Namespace" +msgstr "" + +msgid "ciReport|No changes to code quality" +msgstr "" + +msgid "ciReport|No changes to performance metrics" +msgstr "" + +msgid "ciReport|Performance metrics" +msgstr "" + +msgid "ciReport|Revert dismissal" +msgstr "" + +msgid "ciReport|SAST" +msgstr "" + +msgid "ciReport|SAST detected" +msgstr "" + +msgid "ciReport|Security scanning" +msgstr "" + +msgid "ciReport|Security scanning failed loading any results" +msgstr "" + +msgid "ciReport|Severity" +msgstr "" + +msgid "ciReport|Solution" +msgstr "" + +msgid "ciReport|Static Application Security Testing (SAST) detects known vulnerabilities in your source code." +msgstr "" + +msgid "ciReport|There was an error creating the issue. Please try again." +msgstr "" + +msgid "ciReport|There was an error dismissing the vulnerability. Please try again." +msgstr "" + +msgid "ciReport|There was an error loading DAST report" +msgstr "" + +msgid "ciReport|There was an error loading SAST report" +msgstr "" + +msgid "ciReport|There was an error loading container scanning report" +msgstr "" + +msgid "ciReport|There was an error loading dependency scanning report" +msgstr "" + +msgid "ciReport|There was an error reverting the dismissal. Please try again." +msgstr "" + +msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." +msgstr "" + +msgid "ciReport|Used by %{packagesString}" +msgid_plural "ciReport|Used by %{packagesString}, and %{lastPackage}" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|View full report" +msgstr "" + +msgid "ciReport|no vulnerabilities" +msgstr "" + +msgid "ciReport|on pipeline" +msgstr "" + +msgid "command line instructions" +msgstr "" + +msgid "confidentiality|You are going to turn off the confidentiality. This means everyone will be able to see and leave a comment on this issue." +msgstr "" + +msgid "confidentiality|You are going to turn on the confidentiality. This means that only team members with at least Reporter access are able to see and leave comments on the issue." +msgstr "" + +msgid "connecting" +msgstr "" + +msgid "could not read private key, is the passphrase correct?" +msgstr "" + +msgid "customize" +msgstr "" + +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +msgid "deploy token" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "done" +msgstr "" + +msgid "enabled" +msgstr "" + +msgid "estimateCommand|%{slash_command} will update the estimated time with the latest command." +msgstr "" + +msgid "for this project" +msgstr "" + +msgid "here" +msgstr "" + +msgid "https://your-bitbucket-server" +msgstr "" + +msgid "import flow" +msgstr "" + +msgid "importing" +msgstr "" + +msgid "instance completed" +msgid_plural "instances completed" +msgstr[0] "" +msgstr[1] "" + +msgid "is invalid because there is downstream lock" +msgstr "" + +msgid "is invalid because there is upstream lock" +msgstr "" + +msgid "is not a valid X509 certificate." +msgstr "" + +msgid "issue boards" +msgstr "" + +msgid "latest version" +msgstr "" + +msgid "license management" +msgstr "" + +msgid "locked by %{path_lock_user_name} %{created_at}" +msgstr "" + +msgid "merge request" +msgid_plural "merge requests" +msgstr[0] "" +msgstr[1] "" + +msgid "mrWidget| Please restore it or use a different %{missingBranchName} branch" +msgstr "" + +msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage %{emphasisStart} decreased %{emphasisEnd} from %{memoryFrom}MB to %{memoryTo}MB" +msgstr "" + +msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage %{emphasisStart} increased %{emphasisEnd} from %{memoryFrom}MB to %{memoryTo}MB" +msgstr "" + +msgid "mrWidget|%{metricsLinkStart} Memory %{metricsLinkEnd} usage is %{emphasisStart} unchanged %{emphasisEnd} at %{memoryFrom}MB" +msgstr "" + +msgid "mrWidget|Add approval" +msgstr "" + +msgid "mrWidget|Allows commits from members who can merge to the target branch" +msgstr "" + +msgid "mrWidget|An error occured while removing your approval." +msgstr "" + +msgid "mrWidget|An error occured while retrieving approval data for this merge request." +msgstr "" + +msgid "mrWidget|An error occurred while submitting your approval." +msgstr "" + +msgid "mrWidget|Approve" +msgstr "" + +msgid "mrWidget|Approved by" +msgstr "" + +msgid "mrWidget|Cancel automatic merge" +msgstr "" + +msgid "mrWidget|Check out branch" +msgstr "" + +msgid "mrWidget|Checking ability to merge automatically" +msgstr "" + +msgid "mrWidget|Cherry-pick" +msgstr "" + +msgid "mrWidget|Cherry-pick this merge request in a new merge request" +msgstr "" + +msgid "mrWidget|Closed" +msgstr "" + +msgid "mrWidget|Closed by" +msgstr "" + +msgid "mrWidget|Closes" +msgstr "" + +msgid "mrWidget|Create an issue to resolve them later" +msgstr "" + +msgid "mrWidget|Deployment statistics are not available currently" +msgstr "" + +msgid "mrWidget|Did not close" +msgstr "" + +msgid "mrWidget|Email patches" +msgstr "" + +msgid "mrWidget|Failed to load deployment statistics" +msgstr "" + +msgid "mrWidget|Fast-forward merge is not possible. To merge this request, first rebase locally." +msgstr "" + +msgid "mrWidget|If the %{branch} branch exists in your local repository, you can merge this merge request manually using the" +msgstr "" + +msgid "mrWidget|If the %{missingBranchName} branch exists in your local repository, you can merge this merge request manually using the command line" +msgstr "" + +msgid "mrWidget|Loading deployment statistics" +msgstr "" + +msgid "mrWidget|Mentions" +msgstr "" + +msgid "mrWidget|Merge" +msgstr "" + +msgid "mrWidget|Merge failed." +msgstr "" + +msgid "mrWidget|Merge locally" +msgstr "" + +msgid "mrWidget|Merge request approved" +msgstr "" + +msgid "mrWidget|Merge request approved; you can approve additionally" +msgstr "" + +msgid "mrWidget|Merged by" +msgstr "" + +msgid "mrWidget|No Approval required" +msgstr "" + +msgid "mrWidget|No Approval required; you can still approve" +msgstr "" + +msgid "mrWidget|Open in Web IDE" +msgstr "" + +msgid "mrWidget|Pipeline blocked. The pipeline for this merge request requires a manual action to proceed" +msgstr "" + +msgid "mrWidget|Plain diff" +msgstr "" + +msgid "mrWidget|Ready to be merged automatically. Ask someone with write access to this repository to merge this request" +msgstr "" + +msgid "mrWidget|Refresh" +msgstr "" + +msgid "mrWidget|Refresh now" +msgstr "" + +msgid "mrWidget|Refreshing now" +msgstr "" + +msgid "mrWidget|Remove Source Branch" +msgstr "" + +msgid "mrWidget|Remove source branch" +msgstr "" + +msgid "mrWidget|Remove your approval" +msgstr "" + +msgid "mrWidget|Request to merge" +msgstr "" + +msgid "mrWidget|Requires 1 more approval" +msgid_plural "mrWidget|Requires %d more approvals" +msgstr[0] "" +msgstr[1] "" + +msgid "mrWidget|Requires 1 more approval by" +msgid_plural "mrWidget|Requires %d more approvals by" +msgstr[0] "" +msgstr[1] "" + +msgid "mrWidget|Resolve conflicts" +msgstr "" + +msgid "mrWidget|Resolve these conflicts or ask someone with write access to this repository to merge it locally" +msgstr "" + +msgid "mrWidget|Revert" +msgstr "" + +msgid "mrWidget|Revert this merge request in a new merge request" +msgstr "" + +msgid "mrWidget|Set by" +msgstr "" + +msgid "mrWidget|The changes were merged into" +msgstr "" + +msgid "mrWidget|The changes were not merged into" +msgstr "" + +msgid "mrWidget|The changes will be merged into" +msgstr "" + +msgid "mrWidget|The pipeline for this merge request failed. Please retry the job or push a new commit to fix the failure" +msgstr "" + +msgid "mrWidget|The source branch HEAD has recently changed. Please reload the page and review the changes before merging" +msgstr "" + +msgid "mrWidget|The source branch has been removed" +msgstr "" + +msgid "mrWidget|The source branch is %{commitsBehindLinkStart}%{commitsBehind}%{commitsBehindLinkEnd} the target branch" +msgstr "" + +msgid "mrWidget|The source branch is being removed" +msgstr "" + +msgid "mrWidget|The source branch will be removed" +msgstr "" + +msgid "mrWidget|The source branch will not be removed" +msgstr "" + +msgid "mrWidget|There are merge conflicts" +msgstr "" + +msgid "mrWidget|There are unresolved discussions. Please resolve these discussions" +msgstr "" + +msgid "mrWidget|This merge request failed to be merged automatically" +msgstr "" + +msgid "mrWidget|This merge request is in the process of being merged" +msgstr "" + +msgid "mrWidget|This project is archived, write access has been disabled" +msgstr "" + +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + +msgid "mrWidget|You can merge this merge request manually using the" +msgstr "" + +msgid "mrWidget|You can remove source branch now" +msgstr "" + +msgid "mrWidget|branch does not exist." +msgstr "" + +msgid "mrWidget|command line" +msgstr "" + +msgid "mrWidget|into" +msgstr "" + +msgid "mrWidget|to be merged automatically when the pipeline succeeds" +msgstr "" + +msgid "n/a" +msgstr "" + +msgid "new merge request" +msgstr "" + +msgid "notification emails" +msgstr "" + +msgid "or" +msgstr "" + +msgid "out of %d total test" +msgid_plural "out of %d total tests" +msgstr[0] "" +msgstr[1] "" + +msgid "parent" +msgid_plural "parents" +msgstr[0] "" +msgstr[1] "" + +msgid "password" +msgstr "" + +msgid "personal access token" +msgstr "" + +msgid "private key does not match certificate." +msgstr "" + +msgid "remaining" +msgstr "" + +msgid "remove" +msgstr "" + +msgid "remove due date" +msgstr "" + +msgid "remove weight" +msgstr "" + +msgid "source" +msgstr "" + +msgid "spendCommand|%{slash_command} will update the sum of the time spent." +msgstr "" + +msgid "started" +msgstr "" + +msgid "this document" +msgstr "" + +msgid "to help your contributors communicate effectively!" +msgstr "" + +msgid "toggle collapse" +msgstr "" + +msgid "username" +msgstr "" + +msgid "uses Kubernetes clusters to deploy your code!" +msgstr "" + +msgid "view it on GitLab" +msgstr "" + +msgid "with %{additions} additions, %{deletions} deletions." +msgstr "" + +msgid "within %d minute " +msgid_plural "within %d minutes " +msgstr[0] "" +msgstr[1] "" + diff --git a/locale/nl_NL/gitlab.po b/locale/nl_NL/gitlab.po index 8234f120676..d039b51ce40 100644 --- a/locale/nl_NL/gitlab.po +++ b/locale/nl_NL/gitlab.po @@ -13,10 +13,10 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: nl\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:30\n" msgid " Status" -msgstr "" +msgstr " Status" msgid " and" msgstr " en" @@ -83,18 +83,18 @@ msgstr[1] "%d statistieken" msgid "%d staged change" msgid_plural "%d staged changes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d bepaalde wijziging" +msgstr[1] "%d bepaalde wijzigingen" msgid "%d unstaged change" msgid_plural "%d unstaged changes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d onbepaalde wijziging" +msgstr[1] "%d onbepaalde wijzigingen" msgid "%d vulnerability" msgid_plural "%d vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d veiligheidsprobleem" +msgstr[1] "%d veiligheidsproblemen" msgid "%s additional commit has been omitted to prevent performance issues." msgid_plural "%s additional commits have been omitted to prevent performance issues." @@ -105,7 +105,7 @@ msgid "%{actionText} & %{openOrClose} %{noteable}" msgstr "%{actionText} & %{openOrClose} %{noteable}" msgid "%{commit_author_link} authored %{commit_timeago}" -msgstr "" +msgstr "%{commit_author_link} schreef %{commit_timeago}" msgid "%{counter_storage} (%{counter_repositories} repositories, %{counter_build_artifacts} build artifacts, %{counter_lfs_objects} LFS)" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} Gestart" @@ -167,27 +170,13 @@ msgstr "%{text} is beschikbaar" msgid "%{title} changes" msgstr "%{title} wijzigingen" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "Toegangstokens" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Licentie toevoegen" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "Commit" msgid "CommitMessage|Add %{file_name}" msgstr "%{file_name} toevoegen" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Commits" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" +msgstr "" + +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/pl_PL/gitlab.po b/locale/pl_PL/gitlab.po index 6cc1b4472c7..3f30108892f 100644 --- a/locale/pl_PL/gitlab.po +++ b/locale/pl_PL/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: pl\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:27\n" msgid " Status" msgstr "" @@ -158,6 +158,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -205,35 +208,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -382,6 +363,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -424,6 +411,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -463,15 +453,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -490,6 +480,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -787,6 +780,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -946,6 +942,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -982,9 +981,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1469,6 +1465,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1631,6 +1633,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1679,10 +1684,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1709,6 +1714,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1775,9 +1786,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1811,15 +1819,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1844,12 +1843,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1907,6 +1900,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1937,9 +1933,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1979,12 +1972,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -2003,6 +1999,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -2021,9 +2020,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -2033,6 +2029,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2086,6 +2085,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2158,24 +2160,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2260,6 +2256,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2293,6 +2292,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2398,9 +2406,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2518,6 +2523,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2723,9 +2731,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2885,6 +2905,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -3020,10 +3046,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3134,6 +3160,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3215,6 +3244,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3227,9 +3259,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3257,7 +3298,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3296,19 +3337,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3366,6 +3403,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3543,6 +3583,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3585,6 +3628,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3597,6 +3643,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3624,6 +3673,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3639,6 +3694,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3717,12 +3775,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3783,13 +3835,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3876,6 +3928,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3888,19 +3943,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3942,6 +3997,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4108,6 +4166,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4178,6 +4239,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4217,9 +4284,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4256,7 +4320,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4365,6 +4429,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4609,6 +4676,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4663,9 +4733,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4690,6 +4757,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4870,9 +4940,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -5027,6 +5094,9 @@ 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 due date" msgstr "" @@ -5048,6 +5118,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -5075,6 +5148,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5111,6 +5187,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5544,12 +5623,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5589,9 +5662,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5628,6 +5707,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5637,15 +5719,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5658,39 +5755,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5700,6 +5866,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5736,6 +5911,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5763,6 +5941,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5790,6 +5971,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6096,6 +6298,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6175,6 +6380,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6184,18 +6392,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6208,6 +6434,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6262,9 +6491,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6317,9 +6558,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6329,6 +6585,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6353,6 +6615,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6431,6 +6696,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6479,16 +6747,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6504,6 +6762,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6537,6 +6798,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6549,6 +6813,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6594,22 +6861,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6621,6 +6888,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6706,7 +6976,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6790,6 +7060,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6820,6 +7093,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6850,6 +7126,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6925,6 +7204,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6958,6 +7240,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6991,6 +7276,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7226,6 +7514,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7235,6 +7526,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7244,6 +7538,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7292,10 +7595,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7633,12 +7939,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7666,7 +7981,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7681,6 +7996,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7759,6 +8077,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7774,6 +8098,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7843,15 +8170,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7879,6 +8206,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7891,9 +8221,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8209,6 +8536,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8242,9 +8572,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8254,6 +8581,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8341,20 +8674,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "assign yourself" msgstr "" @@ -8382,61 +8701,95 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8469,9 +8822,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8516,13 +8866,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8531,9 +8878,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8564,9 +8908,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8614,23 +8955,6 @@ msgstr[3] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8911,6 +9235,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8929,6 +9256,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8988,6 +9318,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/pt_BR/gitlab.po b/locale/pt_BR/gitlab.po index 516b85f0016..bcc7659e5a2 100644 --- a/locale/pt_BR/gitlab.po +++ b/locale/pt_BR/gitlab.po @@ -13,10 +13,10 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 12:08\n" msgid " Status" -msgstr "" +msgstr " Status" msgid " and" msgstr " e" @@ -53,13 +53,13 @@ msgstr[1] "%d exporters" msgid "%d failed test result" msgid_plural "%d failed test results" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d resultado do teste com falha" +msgstr[1] "%d resultados do teste com falha" msgid "%d fixed test result" msgid_plural "%d fixed test results" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d resultado do teste corrigido" +msgstr[1] "%d resultados do teste corrigidos" msgid "%d issue" msgid_plural "%d issues" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "%{group_docs_link_start}Grupos%{group_docs_link_end} permitem que você gerencie e colabore em vários projetos. Os membros de um grupo têm acesso a todos os seus projetos." +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} Iniciado" @@ -167,29 +170,15 @@ msgstr "%{text} está disponível" msgid "%{title} changes" msgstr "Alterações de %{title}" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type} detectou 1 vulnerabilidade" -msgstr[1] "%{type} detectou %{vulnerabilityCount} vulnerabilidades" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged} mudanças fora e %{staged} mudanças dentro da lista de commit" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + msgid "+ %{moreCount} more" msgstr "%{moreCount} mais" @@ -224,8 +213,8 @@ msgstr[1] "%d merge requests fechados" msgid "1 group" msgid_plural "%d groups" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 grupo" +msgstr[1] "%d grupos" msgid "1 merged merge request" msgid_plural "%d merged merge requests" @@ -254,8 +243,8 @@ msgstr[1] "" msgid "1 user" msgid_plural "%d users" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 usuário" +msgstr[1] "%d usuários" msgid "1st contribution!" msgstr "1ª contribuição!" @@ -309,11 +298,17 @@ msgid "Removes source branch" msgstr "Remover branch de origem" msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." -msgstr "'Runner' é um processo que executa um job. Você pode configurar quantos Runners você precisar." +msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Uma coleção de gráficos sobre Integração Contínua" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "Um novo \"branch\" será criado no seu \"fork\" e um novo merge request será iniciado." @@ -356,6 +351,9 @@ msgstr "Tokens de acesso" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "Acesso negado! Por favor, verifique se você pode adicionar chaves de deploy neste repositório." +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "Acesso a '%{classification_label}' não permitido" @@ -395,15 +393,15 @@ msgstr "Adicione Webhooks de grupo e GitLab Enterprise Edition." msgid "Add Kubernetes cluster" msgstr "Adicionar cluster Kubernetes" -msgid "Add License" -msgstr "Adicionar Licença" - msgid "Add Readme" msgstr "Adicionar leia-me" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "Coloque um texto adicional para aparecer em todas as comunicações por email. Limite de %{character_limit} caracteres" +msgid "Add license" +msgstr "Adicionar licença" + msgid "Add new application" msgstr "Adicionar novo aplicativo" @@ -422,6 +420,9 @@ msgstr "Adicionar usuário(s) ao grupo:" msgid "Add users to group" msgstr "Adicionar usuários ao grupo" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "Texto adicional" @@ -510,7 +511,7 @@ msgid "All features are enabled for blank projects, from templates, or when impo msgstr "Todas as funcionalidades estão habilitadas para projetos em branco, a partir de templates ou ao importar, mas você pode desativá-los posteriormente nas configurações do projeto." msgid "All users" -msgstr "" +msgstr "Todos os usuários" msgid "Allow commits from members who can merge to the target branch." msgstr "Permitir commits de membros que podem fazer merge ao branch de destino." @@ -719,6 +720,9 @@ msgstr "Abril" msgid "Archived project! Repository and other project resources are read-only" msgstr "Projeto arquivado! Repositório e outros recursos de projeto são somente leitura" +msgid "Archived projects" +msgstr "Projetos arquivados" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Tem certeza que deseja excluir este agendamento de pipeline?" @@ -756,7 +760,7 @@ msgid "Ascending" msgstr "Ascendente" msgid "Ask your group maintainer to set up a group Runner." -msgstr "Solicite a um mantenedor do grupo para configurar um Runner de grupo." +msgstr "" msgid "Assertion consumer service URL" msgstr "URL de serviço do consumidor de asserção" @@ -816,7 +820,7 @@ msgid "Authentication log" msgstr "Log de autenticação" msgid "Authentication method" -msgstr "" +msgstr "Método de autenticação" msgid "Author" msgstr "Autor" @@ -878,6 +882,9 @@ msgstr "Ele gerará a build, testará e fará deploy de sua aplicação automati msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "Saiba mais em %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "Você pode automaticamente construir e testar sua aplicação, se você %{link_to_auto_devops_settings} para este projeto. Você pode também fazer o deploy automaticamente, se você %{link_to_add_kubernetes_cluster}." @@ -914,9 +921,6 @@ msgstr "Tarefas em Segundo Plano" msgid "Background color" msgstr "Cor do plano de fundo" -msgid "Background jobs" -msgstr "Tarefas em segundo plano" - msgid "Badges" msgstr "Selos" @@ -957,7 +961,7 @@ msgid "Badges|No image to preview" msgstr "Sem imagem para pré-visualizar" msgid "Badges|Please fill in a valid URL" -msgstr "" +msgstr "Por favor, preencha um URL válido" msgid "Badges|Project Badge" msgstr "Selo de projeto" @@ -987,13 +991,13 @@ msgid "Badges|This project has no badges" msgstr "Esse projeto não tem selos" msgid "Badges|You are going to delete this badge. Deleted badges cannot be restored." -msgstr "" +msgstr "Você está prestes a excluir este selo. Selos excluídos não podem ser restaurados." msgid "Badges|Your badges" msgstr "Seus selos" msgid "Badges|e.g. %{exampleUrl}" -msgstr "" +msgstr "por exemplo, %{exampleUrl}" msgid "Begin with the selected commit" msgstr "Comece com o commit selecionado" @@ -1080,7 +1084,7 @@ msgid "Blog" msgstr "Blog" msgid "Boards" -msgstr "Boards" +msgstr "Painéis" msgid "Branch %{branchName} was not found in this project's repository." msgstr "O branch %{branchName} não foi encontrado no repositório deste projeto." @@ -1340,7 +1344,7 @@ msgid "Change Weight" msgstr "Alterar Peso" msgid "Change template" -msgstr "" +msgstr "Mudar modelo" msgid "Change this value to influence how frequently the GitLab UI polls for updates." msgstr "Altere esse valor para influenciar com que frequência a interface do usuário do GitLab pesquisa atualizações." @@ -1399,6 +1403,12 @@ msgstr "Escolha o arquivo ..." msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "Escolha a branch/tag (ex: %{master}) ou número do commit (ex: %{sha}) para ver o que mudou ou para criar um merge request." +msgid "Choose a template..." +msgstr "Escolha um modelo..." + +msgid "Choose a type..." +msgstr "Escolha um tipo..." + msgid "Choose any color." msgstr "Escolha qualquer cor." @@ -1561,6 +1571,9 @@ msgstr "Clonar repositório" msgid "Close" msgstr "Fechar" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "Fechado" @@ -1609,11 +1622,11 @@ msgstr "Certificado CA" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "Pacote de autoridade certificadora (Formato PEM)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "Escolha qual dos ambientes do seu projeto usará este cluster Kubernetes." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "Controle como seu cluster Kubernetes se integra com o GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" msgid "ClusterIntegration|Copy API URL" msgstr "Copiar URL da API" @@ -1639,6 +1652,12 @@ msgstr "Integração de Clusters | Criar cluster Kubernetes" msgid "ClusterIntegration|Did you know?" msgstr "Você sabia?" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "Digite detalhes para seu cluster Kubernetes" @@ -1646,7 +1665,7 @@ msgid "ClusterIntegration|Environment scope" msgstr "Escopo de ambiente" msgid "ClusterIntegration|Every new Google Cloud Platform (GCP) account receives $300 in credit upon %{sign_up_link}. In partnership with Google, GitLab is able to offer an additional $200 for both new and existing GCP accounts to get started with GitLab's Google Kubernetes Engine Integration." -msgstr "Cada nova conta no Google Cloud Plataform (GCP) recebe US$300 em créditos por se %{sign_up_link}. Em parceria com o Google, o GitLab pode oferecer um adicional de US$200 para novas contas do GCP para começar a usar a integração GKE do GitLab." +msgstr "Cada nova conta no Google Cloud Plataform (GCP) recebe US$300 em créditos por se %{sign_up_link}. Em parceria com o Google, o Gitlab pode oferecer um adicional de US$200 para novas contas do GCP para começar a usar a integração GKE do GitLab." msgid "ClusterIntegration|Fetching machine types" msgstr "Recuperando tipos de máquina" @@ -1661,7 +1680,7 @@ msgid "ClusterIntegration|GitLab Integration" msgstr "Integração GitLab" msgid "ClusterIntegration|GitLab Runner" -msgstr "GitLab Runner" +msgstr "Gitlab Runner" msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." msgstr "" @@ -1705,9 +1724,6 @@ msgstr "Instalar" msgid "ClusterIntegration|Install Prometheus" msgstr "Instalar Prometheus" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "Instalado" @@ -1741,15 +1757,6 @@ msgstr "Saúde do cluster Kubernetes" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Integração com o cluster Kubernetes" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "Integração com o cluster Kubernetes está desabilitada para esse projeto." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "Integração com o cluster Kubernetes está ativada para esse projeto." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "Integração com cluster Kubernetes está ativada para esse projeto. Desabilitar essa integração não afetará seu cluster Kubernetes, somente desligará a conexão do GitLab com o mesmo." - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "O cluster Kubernetes está sendo criado no Google Kubernetes Engine..." @@ -1774,12 +1781,6 @@ msgstr "Saiba mais sobre os %{help_link_start}Kubernetes%{help_link_end}." msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "Saiba mais sobre as %{help_link_start}zonas%{help_link_end}." -msgid "ClusterIntegration|Learn more about environments" -msgstr "Ler mais sobre ambientes" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "Ler mais sobre configurações de segurança" - msgid "ClusterIntegration|Machine type" msgstr "Tipo de máquina" @@ -1837,6 +1838,9 @@ msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "Leia nosso %{link_to_help_page} em integração de cluter Kubernetes." @@ -1850,7 +1854,7 @@ msgid "ClusterIntegration|Remove this Kubernetes cluster's configuration from th msgstr "Remover configuração desse cluster Kubernetes para esse projeto. Isso não apagará seu cluster Kubernetes atual." msgid "ClusterIntegration|Replace this with your own hostname if you want. If you do so, point hostname to Ingress IP Address from above." -msgstr "" +msgstr "Substitua isso por seu próprio nome de host, se desejar. Se você fizer isso, aponte o nome do host para o endereço IP de entrada acima." msgid "ClusterIntegration|Request to begin installing failed" msgstr "Solicitação para início de instalação falhou" @@ -1867,9 +1871,6 @@ msgstr "Pesquisar projetos" msgid "ClusterIntegration|Search zones" msgstr "Pesquisar zonas" -msgid "ClusterIntegration|Security" -msgstr "Segurança" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Veja e edite os detalhes de seus cluster Kubernates" @@ -1907,14 +1908,17 @@ msgid "ClusterIntegration|Something went wrong while installing %{title}" msgstr "Algo deu errado ao instalar %{title}" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." -msgstr "" +msgstr "O endereço IP está em processo de atribuição. Verifique seu cluster ou cotas do Kubernetes no Google Kubernetes Engine se demorar muito." -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "O configuração de cluster padrão permite acesso a uma gama de funcionalidades necessárias para gerar build e publicar aplicações em container." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "Essa conta precisa de permissões para criar um cluster Kubernetes no %{link_to_container_project} especificado" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "Alternar cluster Kubernetes" @@ -1928,11 +1932,14 @@ msgid "ClusterIntegration|Validating project billing status" msgstr "Validando status de faturamento do projeto" msgid "ClusterIntegration|We could not verify that one of your projects on GCP has billing enabled. Please try again." -msgstr "" +msgstr "Não foi possível verificar se um dos seus projetos no GCP possui o faturamento ativado. Por favor, tente novamente." msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "Com um cluster Kubernetes associado a esse projeto, você pode utilizar apps de revisão, publicar suas aplicações, executar suas pipelines e muito mais de um jeito simples." +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "Sua conta precisa de %{link_to_kubernetes_engine}" @@ -1951,9 +1958,6 @@ msgstr "documentação" msgid "ClusterIntegration|help page" msgstr "ajuda" -msgid "ClusterIntegration|installing applications" -msgstr "Instalando aplicações" - msgid "ClusterIntegration|meets the requirements" msgstr "atende aos requisitos" @@ -1963,6 +1967,9 @@ msgstr "configurado corretamente" msgid "ClusterIntegration|sign up" msgstr "cadastrar" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "Cohorts" @@ -2012,6 +2019,9 @@ msgstr "Commit" msgid "CommitMessage|Add %{file_name}" msgstr "Adicionar %{file_name}" +msgid "CommitWidget|authored" +msgstr "Escrito" + msgid "Commits" msgstr "Commits" @@ -2084,24 +2094,18 @@ msgstr "Confidencialidade" msgid "Configure Gitaly timeouts." msgstr "Configurar timeouts do Gitaly." -msgid "Configure Sidekiq job throttling." -msgstr "Configurar otimização de jobs no Sidekiq." - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "Configurar housekeeping e checagens do git nos repositórios." msgid "Configure limits for web and API requests." msgstr "Configurar limites para web e requisições para API." -msgid "Configure push and pull mirrors." -msgstr "Configurar push e pull de espelhamentos." +msgid "Configure push mirrors." +msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "Configurar caminho de armazenamento e circuit breaker." -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "Configurar a forma como o usuário cria uma nova conta." @@ -2127,10 +2131,10 @@ msgid "ContainerRegistry|Created" msgstr "Criado" msgid "ContainerRegistry|First log in to GitLab’s Container Registry using your GitLab username and password. If you have %{link_2fa} you need to use a %{link_token}:" -msgstr "Primeiro faça login no Container Registry do GitLab usando seu nome de usuário e senha. Se você tiver %{link_2fa}, será necessário usar um %{link_token}:" +msgstr "Primeiro faça login no Container Registry do Gitlab usando seu nome de usuário e senha. Se você tiver %{link_2fa}, será necessário usar um %{link_token}:" msgid "ContainerRegistry|GitLab supports up to 3 levels of image names. The following examples of images are valid for your project:" -msgstr "GitLab suporta até três níveis de nomes de imagens. Os exemplos a seguir são de imagens válidas para seu projeto:" +msgstr "Gitlab suporta até três níveis de nomes de imagens. Os exemplos a seguir são de imagens válidas para seu projeto:" msgid "ContainerRegistry|How to use the Container Registry" msgstr "Como usar o Container Registry" @@ -2163,7 +2167,7 @@ msgid "ContainerRegistry|Use different image names" msgstr "Use nomes de imagem diferentes" msgid "ContainerRegistry|With the Docker Container Registry integrated into GitLab, every project can have its own space to store its Docker images." -msgstr "Com o Container Registry do Docker integrado ao GitLab, todo projeto pode ter seu próprio espaço para guardar suas imagens." +msgstr "Com o Container Registry do Docker integrado ao Gitlab, todo projeto pode ter seu próprio espaço para guardar suas imagens." msgid "ContainerRegistry|You can also use a %{deploy_token} for read-only access to the registry images." msgstr "Você pode usar também um %{deploy_token} para acesso somente-leitura às imagens do registry." @@ -2186,6 +2190,9 @@ msgstr "Contribuições" msgid "Contribution guide" msgstr "Guia de contribuição" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "Contribuições por membro do grupo" @@ -2219,6 +2226,15 @@ msgstr "Controlar a concorrência máxima de operações de verificação para e msgid "ConvDev Index" msgstr "Índice ConvDev" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "Copiar chave pública SSH para área de transferência" @@ -2324,9 +2340,6 @@ msgstr "Criar novo..." msgid "Create project label" msgstr "Criar etiqueta de projeto" -msgid "CreateNewFork|Fork" -msgstr "Fork" - msgid "CreateTag|Tag" msgstr "Tag" @@ -2343,7 +2356,7 @@ msgid "Created by me" msgstr "Criado por mim" msgid "Created on" -msgstr "" +msgstr "Criado em" msgid "Created on:" msgstr "Criado em:" @@ -2358,7 +2371,7 @@ msgid "Cron syntax" msgstr "Sintaxe do cron" msgid "Current Branch" -msgstr "" +msgstr "Branch atual" msgid "Current node" msgstr "Nó atual" @@ -2444,6 +2457,9 @@ msgstr "Dezembro" msgid "Decline and sign out" msgstr "Recusar e sair" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "Etiqueta de classificação padrão" @@ -2647,9 +2663,21 @@ msgstr "Desativar para este projeto" msgid "Disable group Runners" msgstr "Desabilitar runners de grupo" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "Rejeitar alterações" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "Descartar rascunho" @@ -2809,6 +2837,12 @@ msgstr "Ativar reCAPTCHA ou Akismet e definir seus limites de IP." msgid "Enable the Performance Bar for a given group." msgstr "Ative a barra de desempenho para um determinado grupo." +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "Habilitado" @@ -2819,16 +2853,16 @@ msgid "Enter in your Bitbucket Server URL and personal access token below" msgstr "" msgid "Enter the issue description" -msgstr "" +msgstr "Digite a descrição da issue" msgid "Enter the issue title" -msgstr "" +msgstr "Digite o título da issue" msgid "Enter the merge request description" -msgstr "" +msgstr "Digite a descrição do merge request" msgid "Enter the merge request title" -msgstr "" +msgstr "Digite o título do merge request" msgid "Environments" msgstr "Ambientes" @@ -2915,7 +2949,7 @@ msgid "Environments|You don't have any environments right now." msgstr "Você não tem nenhum ambiente." msgid "Environments|protected" -msgstr "" +msgstr "protegido" msgid "Epic" msgstr "Epic" @@ -2936,25 +2970,25 @@ msgid "Epics|An error occurred while saving %{epicDateType} date" msgstr "" msgid "Epics|How can I solve this?" -msgstr "" +msgstr "Como posso resolver isso?" msgid "Epics|More information" -msgstr "" +msgstr "Mais informações" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" msgstr "" msgid "Error" -msgstr "" +msgstr "Erro" msgid "Error Reporting and Logging" msgstr "Relatório e registro de erros" @@ -3058,6 +3092,9 @@ msgstr "Expandir tudo" msgid "Expand sidebar" msgstr "Expandir barra lateral" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "Explorar" @@ -3113,7 +3150,7 @@ msgid "Failed to check related branches." msgstr "Falha ao procurar por branches relacionadas." msgid "Failed to remove issue from board, please try again." -msgstr "Falha ao remover issue do board, por favor, tente novamente." +msgstr "Falha ao remover issue do painel, por favor, tente novamente." msgid "Failed to remove mirror." msgstr "" @@ -3139,6 +3176,9 @@ msgstr "Fevereiro" msgid "Fields on this page are now uneditable, you can configure" msgstr "Campos nessa página não são mais editáveis, você pode configurar" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Arquivos" @@ -3151,9 +3191,18 @@ msgstr "Preencha nos campos abaixo, ative o %{enable_label} e p msgid "Filter" msgstr "Filtro" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Filtrar por mensagem de commit" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Localizar por caminho" @@ -3167,7 +3216,7 @@ msgid "Find the newly extracted Takeout/Google Code Project Hosting/Google msgstr "Encontre o arquivo recém-extraído Takeout/Google Code Project Hosting/GoogleCodeProjectHosting.json." msgid "Fingerprints" -msgstr "" +msgstr "Impressões digitais" msgid "Finished" msgstr "Finalizado" @@ -3181,7 +3230,7 @@ msgstr "publicado por" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3218,6 +3267,9 @@ msgid "For internal projects, any logged in user can view pipelines and access j msgstr "Para projetos internos, qualquer usuário conectado pode visualizar pipelines e acessar detalhes do job (logs de saída e artefatos)" msgid "For more information, go to the " +msgstr "Para mais informações, vá para o " + +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." msgstr "" msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" @@ -3226,11 +3278,6 @@ msgstr "Para projetos privados, qualquer membro (guest ou superior) pode visuali msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "Para projetos públicos, qualquer pessoa pode visualizar pipelines e acessar detalhes do trabalho (logs de saída e artefatos)" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Fork" -msgstr[1] "Forks" - msgid "ForkedFromProjectPath|Forked from" msgstr "Fork criado a partir de" @@ -3253,7 +3300,7 @@ msgid "From Bitbucket" msgstr "Do Bitbucket" msgid "From Bitbucket Server" -msgstr "" +msgstr "Do servidor do Bitbucket" msgid "From FogBugz" msgstr "Do FogBugz" @@ -3288,6 +3335,9 @@ msgstr "Pipelines Gerais" msgid "Generate a default set of labels" msgstr "Gerar etiquetas padrão" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "Nós do Geo" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "Todos os projetos" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3478,7 +3531,7 @@ msgid "Geo|Groups to synchronize" msgstr "Grupos para sincronizar" msgid "Geo|In sync" -msgstr "" +msgstr "Em sincronia" msgid "Geo|Last successful sync" msgstr "" @@ -3487,24 +3540,27 @@ msgid "Geo|Last sync attempt" msgstr "" msgid "Geo|Last time verified" -msgstr "" +msgstr "Última vez verificada" msgid "Geo|Never" -msgstr "" +msgstr "Nunca" msgid "Geo|Next sync scheduled at" msgstr "" msgid "Geo|No errors" -msgstr "" +msgstr "Sem erros" msgid "Geo|Pending" -msgstr "" +msgstr "Pendente" msgid "Geo|Pending synchronization" -msgstr "" +msgstr "Sincronização pendente" msgid "Geo|Pending verification" +msgstr "Verificação pendente" + +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." msgstr "" msgid "Geo|Projects in certain groups" @@ -3514,9 +3570,12 @@ msgid "Geo|Projects in certain storage shards" msgstr "Projetos em certos pedaços de armazenamento" msgid "Geo|Recheck" -msgstr "" +msgstr "Verificar novamente" msgid "Geo|Redownload" +msgstr "Baixar novamente" + +msgid "Geo|Remove" msgstr "" msgid "Geo|Repository sync capacity" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "Git" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "Ir para %{link_to_google_takeout}." -msgid "Go to your fork" -msgstr "Ir para seu fork" - -msgid "GoToYourFork|Fork" -msgstr "Fork" - msgid "Google Code import" msgstr "Importação do Google Code" @@ -3652,7 +3714,7 @@ msgid "Google Takeout" msgstr "Google Takeout" msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service." -msgstr "Autenticação do Google não está %{link_to_documentation}. Peça ao administrador do GitLab se você deseja usar esse serviço." +msgstr "Autenticação do Google não está %{link_to_documentation}. Peça ao administrador do Gitlab se você deseja usar esse serviço." msgid "Got it!" msgstr "Entendi!" @@ -3705,14 +3767,14 @@ msgstr "Desculpe, nenhum epic corresponde à sua pesquisa" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "O roadmap mostra o progresso de seus epics ao longo de uma linha do tempo" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." -msgstr "Para visualizar o roadmap, adicione uma data de início ou término planejada a um dos seus epics nesse grupo ou em seus subgrupos. Na visão mensal, apenas epics no mês passado, no mês atual e nos próximos 5 meses são exibidos – de %{startDate} a %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." -msgstr "Para visualizar o roadmap, adicione uma data de início ou término planejada a um dos seus epics nesse grupo ou em seus subgrupos. Na visão trimestral, apenas epics no trimestre passado, no trimestre atual e nos próximos 4 trimestres são exibidos – de %{startDate} a %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." -msgstr "Para visualizar o roadmap, adicione uma data de início ou término planejada a um dos seus epics nesse grupo ou em seus subgrupos. Na visão semanal, apenas epics na semana passada, na semana atual e nas próximas 4 semanas são exibidos – de %{startDate} a %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "Para ampliar sua pesquisa, alterar ou remover filtros. Na visão mensal, apenas epics no mês passado, no mês atual e nos próximos 5 meses são exibidos – de %{startDate} a %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "Nenhum grupo encontrado" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Você pode gerenciar permissões de membros e acesso do seu grupo para cada projeto no grupo." +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "Criar um projeto nesse grupo." @@ -3810,20 +3875,20 @@ msgstr "Editar grupo" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "Falha ao deixar o grupo. Por favor, verifique se você é o único dono." -msgid "GroupsTree|Filter by name..." -msgstr "Filtrar por nome..." - msgid "GroupsTree|Leave this group" msgstr "Deixar o grupo" msgid "GroupsTree|Loading groups" msgstr "Carregando grupos" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "Desculpe, nenhum grupo corresponde à sua pesquisa" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "Desculpe, nenhum grupo ou projeto correspondem à sua pesquisa" +msgid "GroupsTree|Search by name" +msgstr "" msgid "Have your users email" msgstr "Tem o e-mail de seus usuários" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "Ocultar valor" @@ -4020,7 +4088,7 @@ msgid "ImportButtons|Connect repositories from" msgstr "Conectar repositórios de" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "Melhore os quadros de issues com GitLab Enterprise Edition." +msgstr "Melhore os painéis com GitLab Enterprise Edition." msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." msgstr "Melhore o gerenciamento de issues com o peso de issues e GitLab Enterprise Edition." @@ -4028,6 +4096,9 @@ msgstr "Melhore o gerenciamento de issues com o peso de issues e GitLab Enterpri msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." msgstr "Melhore a pesquisa com Advanced Global Search e GitLab Enterprise Edition." +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 the next step, you'll be able to select the projects you want to import." msgstr "Na próxima etapa, você poderá selecionar os projetos que deseja importar." @@ -4088,7 +4159,7 @@ msgid "Internal - The project can be accessed by any logged in user." msgstr "Interno - O projeto pode ser acessado por qualquer usuário autenticado." msgid "Internal users" -msgstr "" +msgstr "Usuários internos" msgid "Interval Pattern" msgstr "Padrão de intervalo" @@ -4096,20 +4167,26 @@ msgstr "Padrão de intervalo" msgid "Introducing Cycle Analytics" msgstr "Apresentando a Análise de Ciclo" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" -msgstr "Quadros de issues" +msgstr "Painéis" msgid "Issue board focus mode" -msgstr "Modo de foco no quadro de issues" +msgstr "Modo de foco nos painéis" msgid "Issue events" msgstr "Eventos de issue" msgid "IssueBoards|Board" -msgstr "Board" +msgstr "Painel" msgid "IssueBoards|Boards" -msgstr "Quadros" +msgstr "Painéis" msgid "Issues" msgstr "Issues" @@ -4135,46 +4212,43 @@ msgstr "O job foi apagado" msgid "Jobs" msgstr "Jobs" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" -msgstr "" +msgstr "Navegar" msgid "Job|Complete Raw" -msgstr "" +msgstr "Raw completo" msgid "Job|Download" -msgstr "" +msgstr "Baixar" msgid "Job|Erase job log" -msgstr "" +msgstr "Apagar log da tarefa" msgid "Job|Job artifacts" msgstr "" msgid "Job|Job has been erased" -msgstr "" +msgstr "A tarefa foi apagada" msgid "Job|Job has been erased by" -msgstr "" +msgstr "A tarefa foi apagada por" msgid "Job|Keep" -msgstr "" +msgstr "Manter" msgid "Job|Scroll to bottom" -msgstr "" +msgstr "Rolar para baixo" msgid "Job|Scroll to top" -msgstr "" +msgstr "Rolar para o topo" msgid "Job|Show complete raw" -msgstr "" +msgstr "Mostrar raw completo" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4268,7 +4342,7 @@ msgid "Labels|Promote Label" msgstr "Promover etiqueta" 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 "" +msgstr "Promover %{labelTitle} irá disponibilizá-la para todos os projetos dentro de %{groupName}. Etiquetas de projetos existentes com o mesmo título serão mescladas. Esta ação não pode ser revertida." msgid "Last %d day" msgid_plural "Last %d days" @@ -4281,6 +4355,9 @@ msgstr "Último Pipeline" msgid "Last commit" msgstr "Último commit" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "Última edição em %{date}" @@ -4306,7 +4383,7 @@ msgid "Learn more" msgstr "Saiba mais" 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 "" +msgstr "Saiba mais sobre %{issue_boards_url}, para acompanhar issues em diversas listas, usando etiquetas, atribuições e milestones. Se você notar algo faltando nos painéis, por favor, crie uma issue em %{gitlab_issues_url}." msgid "Learn more about Kubernetes" msgstr "Saiba mais sobre o Kubernetes" @@ -4336,55 +4413,55 @@ msgid "License" msgstr "Licença" msgid "LicenseManagement|Approve license" -msgstr "" +msgstr "Aprovar licença" msgid "LicenseManagement|Approve license?" -msgstr "" +msgstr "Aprovar licença?" msgid "LicenseManagement|Approved" -msgstr "" +msgstr "Aprovada" msgid "LicenseManagement|Blacklist license" msgstr "" msgid "LicenseManagement|Blacklist license?" -msgstr "" +msgstr "Adicionar licença à lista negra?" msgid "LicenseManagement|Blacklisted" -msgstr "" +msgstr "Na lista negra" msgid "LicenseManagement|License" -msgstr "" +msgstr "Licença" msgid "LicenseManagement|License Management" -msgstr "" +msgstr "Gerenciamento de Licenças" msgid "LicenseManagement|License details" -msgstr "" +msgstr "Detalhes da licença" msgid "LicenseManagement|Manage approved and blacklisted licenses for this project." msgstr "" msgid "LicenseManagement|Packages" -msgstr "" +msgstr "Pacotes" msgid "LicenseManagement|Remove license" -msgstr "" +msgstr "Remover licença" msgid "LicenseManagement|Remove license?" -msgstr "" +msgstr "Remover licença?" msgid "LicenseManagement|There are currently no approved or blacklisted licenses in this project." msgstr "" msgid "LicenseManagement|URL" -msgstr "" +msgstr "URL" msgid "LicenseManagement|You are about to remove the license, %{name}, from this project." msgstr "" msgid "Licenses" -msgstr "" +msgstr "Licenças" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "Máximo de falhas do git storage" @@ -4577,9 +4657,6 @@ msgstr "Falha ao salvar comentário" msgid "MergeRequests|Toggle comments for this file" msgstr "Ativar/desativar comentários para este arquivo" -msgid "MergeRequests|Updating discussions failed" -msgstr "A atualização de discussões falhou" - msgid "MergeRequests|View file @ %{commitId}" msgstr "Visualizar o arquivo @ %{commitId}" @@ -4604,6 +4681,9 @@ msgstr "Métricas - Influx" msgid "Metrics - Prometheus" msgstr "Métricas - Prometheus" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "Negócios" @@ -4784,9 +4864,6 @@ msgstr "Meses" msgid "More" msgstr "Mais" -msgid "More actions" -msgstr "Mais ações" - msgid "More info" msgstr "Mais informações" @@ -4806,7 +4883,7 @@ msgid "Move issue" msgstr "Mover issue" msgid "Multiple issue boards" -msgstr "Multiplos issue boards" +msgstr "Multiplos painéis" msgid "Name" msgstr "Nome" @@ -4939,6 +5016,9 @@ msgstr "Nenhuma conexão pode ser feita para um servidor Gitaly, por favor check msgid "No container images stored for this project. Add one by following the instructions above." msgstr "" +msgid "No contributions were found" +msgstr "" + msgid "No due date" msgstr "Sem validade" @@ -4960,6 +5040,9 @@ msgstr "Sem issues para o período de tempo selecionado." msgid "No labels with such name or description" msgstr "Sem etiquetas com esse nome ou descrição" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "Sem merge requests para o período de tempo selecionado." @@ -4987,6 +5070,9 @@ msgstr "Nenhum push para o período de tempo selecionado." msgid "No repository" msgstr "Nenhum repositório" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Nenhum agendamento" @@ -5023,6 +5109,9 @@ msgstr "Não confidencial" msgid "Not enough data" msgstr "Dados insuficientes" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "Observe que o branch master é automaticamente protegido. %{link_to_protected_branches}" @@ -5224,13 +5313,13 @@ msgid "Owner" msgstr "Proprietário" msgid "Package information" -msgstr "" +msgstr "Informações do pacote" msgid "Package was removed" -msgstr "" +msgstr "O pacote foi removido" msgid "Packages" -msgstr "" +msgstr "Pacotes" msgid "Pages" msgstr "Páginas" @@ -5454,12 +5543,6 @@ msgstr "com etapas" msgid "Plain diff" msgstr "Diff simples" -msgid "Planned finish date" -msgstr "Data de término planejada" - -msgid "Planned start date" -msgstr "Data de início planejada" - msgid "PlantUML" msgstr "PlantUML" @@ -5499,7 +5582,13 @@ msgstr "Preferências" msgid "Preferences|Navigation theme" msgstr "Tema de navegação" +msgid "Press Enter or click to search" +msgstr "Pressione Enter ou clique para pesquisar" + msgid "Preview" +msgstr "Pré-visualizar" + +msgid "Preview payload" msgstr "" msgid "Primary" @@ -5533,9 +5622,12 @@ msgid "Profile Settings" msgstr "Configurações do perfil" msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered." -msgstr "" +msgstr "Você está prestes a excluir permanentemente a %{yourAccount}, e todas as issues, merge requests e grupos vinculados a sua conta. Depois de confirmar clicando em %{deleteAccount}, isso não poderá ser desfeito ou recuperado." msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." +msgstr "Você vai alterar o nome de usuário %{currentUsernameBold} para %{newUsernameBold}. O perfil e os projetos serão redirecionados para %{newUsername} mas esse redirecionamento expirará quando %{currentUsername} for registrado por outro usuário ou grupo. Por favor, atualize seus repositórios remotos Git o mais rápido possível." + +msgid "Profiles|%{author_name} made a private contribution" msgstr "" msgid "Profiles|Account scheduled for removal." @@ -5545,17 +5637,32 @@ msgid "Profiles|Add key" msgstr "Adicionar chave" msgid "Profiles|Add status emoji" +msgstr "Adicionar emoji de status" + +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" msgstr "" msgid "Profiles|Change username" msgstr "Alterar nome de usuário" -msgid "Profiles|Clear status" +msgid "Profiles|Choose file..." +msgstr "Escolher arquivo..." + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." msgstr "" +msgid "Profiles|Clear status" +msgstr "Limpar status" + msgid "Profiles|Current path: %{path}" msgstr "Caminho atual: %{path}" +msgid "Profiles|Current status" +msgstr "Status atual" + msgid "Profiles|Delete Account" msgstr "Excluir conta" @@ -5568,37 +5675,106 @@ msgstr "Deseja apagar sua conta?" msgid "Profiles|Deleting an account has the following effects:" msgstr "Apagando conta tem os seguintes efeitos:" +msgid "Profiles|Do not show on profile" +msgstr "Não mostrar no perfil" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "Não exibir informações pessoais relacionadas à atividade em seus perfis" + +msgid "Profiles|Edit Profile" +msgstr "Editar perfil" + msgid "Profiles|Invalid password" msgstr "Senha inválida" msgid "Profiles|Invalid username" msgstr "Nome de usuário inválido" +msgid "Profiles|Main settings" +msgstr "Configurações principais" + +msgid "Profiles|No file chosen" +msgstr "Nenhum arquivo escolhido" + msgid "Profiles|Path" msgstr "Caminho" +msgid "Profiles|Position and size your new avatar" +msgstr "Posicione e dimensione seu novo avatar" + +msgid "Profiles|Private contributions" +msgstr "Contribuições privadas" + +msgid "Profiles|Public Avatar" +msgstr "Avatar público" + +msgid "Profiles|Remove avatar" +msgstr "Remover avatar" + +msgid "Profiles|Set new profile picture" +msgstr "Definir nova foto de perfil" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "Conte-nos sobre você em menos de 250 caracteres." + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "O tamanho máximo de arquivo permitido é de 200KB." + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "Isso não se parece com uma chave pública SSH, você tem certeza que gostaria de adicioná-la?" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "Este e-mail será exibido no seu perfil público." + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." +msgstr "Este emoji e mensagem aparecerão no seu perfil e em toda a interface." + +msgid "Profiles|This feature is experimental and translations are not complete yet." msgstr "" +msgid "Profiles|This information will appear on your profile." +msgstr "Esta informação aparecerá no seu perfil." + msgid "Profiles|Type your %{confirmationValue} to confirm:" -msgstr "Escreva %{confirmationValue} para confirmar:" +msgstr "Escreva sua %{confirmationValue} para confirmar:" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "Geralmente se inicia com \"ssh-rsa …\"" +msgid "Profiles|Update profile settings" +msgstr "Atualizar configurações do perfil" + msgid "Profiles|Update username" msgstr "Atualizar nome de usuário" +msgid "Profiles|Upload new avatar" +msgstr "Enviar novo avatar" + msgid "Profiles|Username change failed - %{message}" msgstr "Falha na alteração de nome de usuário - %{message}" msgid "Profiles|Username successfully changed" msgstr "Alteração de nome de usuário realizada com sucesso" +msgid "Profiles|Website" +msgstr "Website" + msgid "Profiles|What's your status?" +msgstr "Qual é o seu status?" + +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" msgstr "" msgid "Profiles|You don't have access to delete this user." @@ -5610,9 +5786,18 @@ msgstr "Você precisa delegar outro usuário para ser dono ou apagar esses grupo msgid "Profiles|Your account is currently an owner in these groups:" msgstr "Sua conta é atualmente proprietária dos seguintes grupos:" -msgid "Profiles|Your status" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." msgstr "" +msgid "Profiles|Your status" +msgstr "Seu status" + msgid "Profiles|e.g. My MacBook key" msgstr "por exemplo, Chave do meu MacBook" @@ -5646,6 +5831,9 @@ msgstr "Projeto '%{project_name}' atualizado com sucesso." msgid "Project Badges" msgstr "Selos de projeto" +msgid "Project URL" +msgstr "URL do projeto" + msgid "Project access must be granted explicitly to each user." msgstr "Acesso ao projeto deve ser concedido explicitamente para cada usuário." @@ -5673,6 +5861,9 @@ msgstr "Exportação do projeto iniciada. Um link para baixá-la será enviado p msgid "Project name" msgstr "Nome do projeto" +msgid "Project slug" +msgstr "Slug do projeto" + msgid "ProjectActivityRSS|Subscribe" msgstr "Inscreva-se" @@ -5700,17 +5891,38 @@ msgstr "Nunca" msgid "ProjectLifecycle|Stage" msgstr "Etapa" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "ID do Projeto: %{project_id}" msgid "ProjectSettings|Badges" -msgstr "" +msgstr "Selos" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "Contate um administrador para alterar essa configuração." msgid "ProjectSettings|Customize your project badges." -msgstr "" +msgstr "Personalize os selos do seu projeto." msgid "ProjectSettings|Failed to protect the tag" msgstr "Falha ao proteger a tag" @@ -5719,7 +5931,7 @@ msgid "ProjectSettings|Failed to update tag!" msgstr "Falha ao atualizar a tag!" msgid "ProjectSettings|Learn more about badges." -msgstr "" +msgstr "Saiba mais sobre os selos." msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "Apenas para commits assinados pode-se fazer push para este repositório." @@ -5812,7 +6024,7 @@ msgid "PrometheusService|Automatically deploy and configure Prometheus on your c msgstr "Fazer deploy automático e configurar o Prometheus nos seus clusters para monitorar o ambiente do seu projeto" msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." -msgstr "Por padrão, Prometheus escuta em 'http://localhost:9090'. Não é recomendado mudar o endereço padrão e sua porta, porque pode conflitar com outros serviços que estão executando no sevidor do GitLab." +msgstr "Por padrão, Prometheus escuta em 'http://localhost:9090'. Não é recomendado mudar o endereço padrão e sua porta, porque pode conflitar com outros serviços que estão executando no sevidor do Gitlab." msgid "PrometheusService|Common metrics" msgstr "Métricas comuns" @@ -5896,10 +6108,10 @@ msgid "Promotions|Upgrade plan" msgstr "Aprimorar plano" msgid "Protected" -msgstr "" +msgstr "Protegido" msgid "Protected Environments" -msgstr "" +msgstr "Ambientes Protegidos" msgid "ProtectedEnvironment|%{environment_name} will be writable for developers. Are you sure?" msgstr "" @@ -5911,10 +6123,10 @@ msgid "ProtectedEnvironment|Choose who is allowed to deploy" msgstr "" msgid "ProtectedEnvironment|Environment" -msgstr "" +msgstr "Ambiente" msgid "ProtectedEnvironment|Protect" -msgstr "" +msgstr "Proteger" msgid "ProtectedEnvironment|Protect Environments in order to restrict who can execute deployments." msgstr "" @@ -5932,7 +6144,7 @@ msgid "ProtectedEnvironment|There are currently no protected environments, prote msgstr "" msgid "ProtectedEnvironment|Unprotect" -msgstr "" +msgstr "Desproteger" msgid "ProtectedEnvironment|Your environment can't be unprotected" msgstr "" @@ -5962,10 +6174,10 @@ msgid "Public pipelines" msgstr "Pipelines públicos" msgid "Pull" -msgstr "" +msgstr "Pull" msgid "Push" -msgstr "" +msgstr "Push" msgid "Push Rules" msgstr "Regras de push" @@ -6006,6 +6218,9 @@ msgstr "Leia-me" msgid "Real-time features" msgstr "Recursos em tempo real" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "Referência:" @@ -6018,7 +6233,7 @@ msgstr[0] "" msgstr[1] "" msgid "Regenerate key" -msgstr "" +msgstr "Gerar uma nova chave" msgid "Regex pattern" msgstr "" @@ -6075,12 +6290,15 @@ msgid "Remove project" msgstr "Remover projeto" msgid "Rename" -msgstr "" +msgstr "Renomear" msgid "Rename file" -msgstr "" +msgstr "Renomear arquivo" msgid "Rename folder" +msgstr "Renomear pasta" + +msgid "Reopen epic" msgstr "" msgid "Repair authentication" @@ -6092,28 +6310,49 @@ msgstr "Responda a este e-mail diretamente ou %{view_it_on_gitlab}." msgid "Repo by URL" msgstr "Repositório por URL" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" +msgstr "Classe" + +msgid "Reports|Confidence" msgstr "" -msgid "Reports|Execution time" +msgid "Reports|Dismiss Vulnerability" msgstr "" +msgid "Reports|Execution time" +msgstr "Tempo de execução" + msgid "Reports|Failure" +msgstr "Falha" + +msgid "Reports|More info" +msgstr "Mais informações" + +msgid "Reports|New Issue" msgstr "" +msgid "Reports|Severity" +msgstr "Gravidade" + msgid "Reports|System output" -msgstr "" +msgstr "Saída do sistema" msgid "Reports|Test summary" -msgstr "" +msgstr "Resumo do teste" msgid "Reports|Test summary failed loading results" -msgstr "" +msgstr "Resumo do teste falhou ao carregar os resultados" msgid "Reports|Test summary results are being parsed" +msgstr "Os resultados do resumo de teste estão sendo analisados" + +msgid "Reports|Vulnerability" msgstr "" msgid "Reports|no changed test results" @@ -6170,9 +6409,21 @@ msgstr "Resolver conflitos na branch de origem" msgid "Resolve discussion" msgstr "Resolver discussão" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "Métricas de resposta (personalizadas)" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "Continuar" @@ -6186,7 +6437,7 @@ msgid "Retry verification" msgstr "Tentar novamente a verificação" msgid "Reveal Variables" -msgstr "" +msgstr "Revelar variáveis" msgid "Reveal value" msgid_plural "Reveal values" @@ -6223,9 +6474,24 @@ msgstr "Executar pipelines CI/CD para repositórios externos" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "Token de runner" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "Runners" @@ -6235,6 +6501,12 @@ msgstr "Runners de API" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "Os corredores podem ser colocados em usuários, servidores e até mesmo em sua máquina local." +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "SAML Single Sign On" msgid "SAML Single Sign On Settings" msgstr "Configurações de SAML Single Sign On" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "Impressão digital SHA1 do certificado de assinatura de token SAML. Obtenha isso do seu provedor de identidade, onde ele também pode ser chamado de \"Thumbprint\"." @@ -6269,7 +6544,7 @@ msgid "SSH host keys" msgstr "" msgid "SSH public key" -msgstr "" +msgstr "Chave SSH pública" msgid "SSL Verification" msgstr "Verificação SSL" @@ -6305,7 +6580,7 @@ msgid "Scope" msgstr "Escopo" msgid "Scoped issue boards" -msgstr "Issue boards de escopo" +msgstr "Painéis de escopo" msgid "Scroll down to Google Code Project Hosting and enable the switch on the right." msgstr "Role para baixo até Google Code Project Hosting e ative a opção à direita." @@ -6337,9 +6612,12 @@ msgstr "Pesquisar merge requests" msgid "Search milestones" msgstr "Pesquisar milestones" -msgid "Search or jump to…" +msgid "Search or filter results..." msgstr "" +msgid "Search or jump to…" +msgstr "Pesquise ou pule para…" + msgid "Search project" msgstr "Procurar projeto" @@ -6347,7 +6625,7 @@ msgid "Search users" msgstr "Procurar usuários" msgid "SearchAutocomplete|All GitLab" -msgstr "" +msgstr "Todo o GitLab" msgid "SearchAutocomplete|Issues I've created" msgstr "" @@ -6356,19 +6634,19 @@ msgid "SearchAutocomplete|Issues assigned to me" msgstr "" msgid "SearchAutocomplete|Merge requests I've created" -msgstr "" +msgstr "Merge requests que eu criei" msgid "SearchAutocomplete|Merge requests assigned to me" -msgstr "" +msgstr "Merge requests atribuídas a mim" msgid "SearchAutocomplete|in all GitLab" -msgstr "" +msgstr "em todo o GitLab" msgid "SearchAutocomplete|in this group" -msgstr "" +msgstr "neste grupo" msgid "SearchAutocomplete|in this project" -msgstr "" +msgstr "neste projeto" msgid "Seconds before reseting failure information" msgstr "Segundos antes de redefinir as informações de falha" @@ -6380,19 +6658,11 @@ msgid "Secret:" msgstr "Secreto:" msgid "Security" -msgstr "" +msgstr "Segurança" msgid "Security Dashboard" msgstr "Painel de controle de segurança" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "Selecionar" msgid "Select Archive Format" msgstr "Selecionar Formato do Arquivo" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "Selecione um namespace para realizar o fork do projeto" @@ -6441,6 +6714,9 @@ msgstr "Selecionar branch de origem" msgid "Select target branch" msgstr "Selecionar branch de destino" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "Sincronização seletiva" msgid "Send email" msgstr "Enviar e-mail" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "Set" @@ -6498,6 +6777,12 @@ msgstr "Configurar CI/CD" msgid "Set up Koding" msgstr "Configurar Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "Configurar asserções/atributos/alegações (email, first_name, last_name) e NameID de acordo com %{docsLinkStart}a documentação %{icon}%{docsLinkEnd}" @@ -6510,12 +6795,6 @@ msgstr "defina uma senha" msgid "Settings" msgstr "Configurações" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "Configurar um Runner específico automaticamente" - msgid "Share" msgstr "Compartilhar" @@ -6525,6 +6804,9 @@ msgstr "Compartilhe o %{sso_label} com membros de forma que ele msgid "Shared Runners" msgstr "Runners Compartilhados" +msgid "Shared projects" +msgstr "Projetos compartilhados" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "Ao redefinir os minutos de pipeline para esse espaço de nomes, os minutos atualmente usados serão definido para zero." @@ -6600,7 +6882,7 @@ msgid "Sign-up restrictions" msgstr "Restrições de cadastro" msgid "Size" -msgstr "" +msgstr "Tamanho" msgid "Size and domain settings for static websites" msgstr "Configurações de tamanho e domínio para sites estáticos" @@ -6608,7 +6890,7 @@ msgstr "Configurações de tamanho e domínio para sites estáticos" msgid "Slack application" msgstr "Aplicativo Slack" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "Maior grupo" msgid "SortOptions|Largest repository" msgstr "Maior repositório" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "Últimos criados" @@ -6722,6 +7007,9 @@ msgstr "Mais peso" msgid "SortOptions|Most popular" msgstr "Mais populares" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "Nome" @@ -6752,6 +7040,9 @@ msgstr "Prioridade" msgid "SortOptions|Recent sign in" msgstr "Assinados mais novos" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "Iniciar mais tarde" @@ -6827,6 +7118,9 @@ msgstr "Projetos favoritos" msgid "Start a %{new_merge_request} with these changes" msgstr "Iniciar um %{new_merge_request} a partir dessas alterações" +msgid "Start date" +msgstr "Data de início" + msgid "Start the Runner!" msgstr "Inicie o Runner!" @@ -6860,6 +7154,9 @@ msgstr "Armazenamento:" msgid "Subgroups" msgstr "Subgrupos" +msgid "Subgroups and projects" +msgstr "Subgrupos e projetos" + msgid "Submit as spam" msgstr "Enviar como spam" @@ -6893,6 +7190,9 @@ msgstr "Cabeçalho e rodapé de sistema:" msgid "System metrics (Custom)" msgstr "Métricas de sistema (Personalizado)" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "Tag (%{tag_count})" @@ -6902,7 +7202,7 @@ msgid "Tags" msgstr "Tags" msgid "Tags feed" -msgstr "" +msgstr "Feed de tags" msgid "Tags:" msgstr "Tags:" @@ -6986,10 +7286,10 @@ msgid "Team" msgstr "Equipe" msgid "Template" -msgstr "" +msgstr "Modelo" msgid "Templates" -msgstr "" +msgstr "Modelos" msgid "Terms of Service Agreement and Privacy Policy" msgstr "Contrato de Termos de Serviço e Política de Privacidade" @@ -7040,7 +7340,7 @@ msgid "The import will time out after %{timeout}. For repositories that take lon msgstr "A importação expirará após %{timeout}. Para repositórios que demoram mais tempo, use a combinação clone/push." msgid "The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage." -msgstr "A etapa de planejamento mostra o tempo que se leva desde a criação de uma issue até sua atribuição à um milestone, ou sua adição a uma lista no seu Issue Board. Comece a criar issues para ver dados para esta etapa." +msgstr "A etapa de planejamento mostra o tempo que se leva desde a criação de uma issue até sua atribuição à um milestone, ou sua adição a uma lista no seu painel. Comece a criar issues para ver dados para esta etapa." msgid "The maximum file size allowed is 200KB." msgstr "O tamanho máximo do arquivo é de 200KB." @@ -7126,6 +7426,9 @@ msgstr "O tempo necessário por cada entrada de dados reunida por essa etapa." msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "O mapa do usuário é um documento JSON que mapeia os usuários do Google Code que participaram de seus projetos para a maneira como seus endereços de e-mail e nomes de usuários são importados para o GitLab. Você pode mudar isso alterando o valor no lado direito de :. Certifique-se de preservar as aspas duplas adjacentes, outros sinais de pontuação e o endereço de e-mail ou nome de usuário no lado esquerdo." @@ -7135,6 +7438,9 @@ msgstr "O mapa do usuário é um mapeamento dos usuários do FogBugz que partici msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "O valor situado no ponto médio de uma série de valores observados. Ex., entre 3, 5, 9, a mediana é 5. Entre 3, 5, 7, 8, a mediana é (5+7)/2 = 6." +msgid "There are no archived projects yet" +msgstr "Ainda não há projetos arquivados" + msgid "There are no issues to show" msgstr "Não há issues para mostrar" @@ -7144,6 +7450,15 @@ msgstr "Ainda não há etiquetas" msgid "There are no merge requests to show" msgstr "Não há merge requests pra mostrar" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "Há problemas para acessar o storage Git: " @@ -7187,15 +7502,18 @@ msgid "This application will be able to:" msgstr "Esse aplicativo será capaz de:" msgid "This board's scope is reduced" -msgstr "" +msgstr "O escopo deste painel está reduzido" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "Para conectar um repositório SVN, confira %{svn_link}." msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "Para começar, insira seu URL do FogBugz e as informações de login abaixo. Nas próximas etapas, você poderá associar usuários e selecionar os projetos que deseja importar." msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "Para começar, insira seu URL de Host do Gitea e um %{link_to_personal_token}." +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "Para importar repositórios do GitHub, você pode usar um %{personal_access_token_link}. Ao criar seu Token de Acesso Pessoal, você precisará selecionar o escopo repo, para que possamos exibir uma lista de seus repositórios públicos e privados que estão disponíveis para importação." @@ -7562,8 +7889,8 @@ msgstr "Para esta instância do GitLab" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "Para validar suas configurações de CI do GitLab, vá para 'CI/CD → Pipelines' dentro do seu projeto e clique no botão 'CI Lint'." -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." -msgstr "Para visualizar o roadmap, adicione uma data de início ou término planejada a um dos seus épicos nesse grupo ou em seus subgrupos. Apenas épicos nos últimos 3 meses e nos próximos 3 meses são mostrados." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "" msgid "To widen your search, change or remove filters." msgstr "Para ampliar sua pesquisa, alterar ou remover filtros." @@ -7577,6 +7904,9 @@ msgstr "Afazeres" msgid "Toggle Sidebar" msgstr "Alternar barra lateral" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "Alternar discussão" @@ -7593,7 +7923,7 @@ msgid "ToggleButton|Toggle Status: ON" msgstr "Mudar Status: Ligado" msgid "Token" -msgstr "" +msgstr "Token" msgid "Too many changes to show." msgstr "Alterações demais para mostrar." @@ -7647,7 +7977,7 @@ msgid "Twitter" msgstr "Twitter" msgid "Type" -msgstr "" +msgstr "Tipo" msgid "Unable to load the diff. %{button_try_again}" msgstr "Não é possível carregar o diff. %{button_try_again}" @@ -7655,6 +7985,12 @@ msgstr "Não é possível carregar o diff. %{button_try_again}" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "Não é possível inscrever você no grupo com SAML devido a \"%{reason}\"" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "Desfazer" + msgid "Unknown" msgstr "Desconhecido" @@ -7670,6 +8006,9 @@ msgstr "Desbloqueado" msgid "Unresolve discussion" msgstr "Reabrir discussão" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "Retirar tudo da lista para commit" @@ -7707,13 +8046,13 @@ msgid "Update" msgstr "Atualizar" msgid "Update now" -msgstr "" +msgstr "Atualizar agora" msgid "Update your group name, description, avatar, and other general settings." msgstr "Atualize o nome do seu grupo, descrição, avatar e outras configurações gerais." msgid "Updating" -msgstr "" +msgstr "Atualizando" msgid "Upgrade your plan to activate Advanced Global Search." msgstr "Aprimore seu plano para ativar a Pesquisa Global Avançada." @@ -7728,7 +8067,7 @@ msgid "Upgrade your plan to activate Issue weight." msgstr "Faça upgrade de plano para ativar o peso nas Issues." msgid "Upgrade your plan to improve Issue boards." -msgstr "Faça upgrade de plano para melhorar o Issue boards." +msgstr "Faça upgrade de plano para melhorar os painéis." msgid "Upload GoogleCodeProjectHosting.json here:" msgstr "Envie o GoogleCodeProjectHosting.json aqui:" @@ -7739,15 +8078,15 @@ msgstr "Enviar Novo Arquivo" msgid "Upload file" msgstr "Enviar arquivo" -msgid "Upload new avatar" -msgstr "Fazer upload de nova imagem" - msgid "UploadLink|click to upload" msgstr "clique para fazer upload" msgid "Upvotes" msgstr "Votos positivos" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "Estatísticas de uso" @@ -7764,7 +8103,7 @@ msgid "Use one line per URI" msgstr "Use uma linha por URI" msgid "Use template" -msgstr "" +msgstr "Utilizar modelo" msgid "Use the following registration token during setup:" msgstr "Use o seguinte token de registro durante a configuração:" @@ -7775,6 +8114,9 @@ msgstr "Utilizar configuração de notificação global" msgid "Used by members to sign in to your group in GitLab" msgstr "Utilizado pelos membros para entrar em seu grupo no GitLab" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "Configurações do Usuário" @@ -7787,9 +8129,6 @@ msgstr "Mapa do usuário" msgid "Users" msgstr "Usuários" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "Variáveis" @@ -7812,7 +8151,7 @@ msgid "Verified" msgstr "Verificado" msgid "Version" -msgstr "" +msgstr "Versão" msgid "View epics list" msgstr "Ve lista de épicos" @@ -8105,6 +8444,9 @@ msgstr "Você somente pode adicionar arquivos quando estiver em um branch" msgid "You can only edit files when you are on a branch" msgstr "Você só pode editar arquivos quando estiver em um branch" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "Você pode resolver o conflito de merge usando o modo Interativo, escolhendo os botões %{use_ours} ou %{use_theirs} ou editando os arquivos diretamente. Confirme essas alterações em %{branch_name}" @@ -8138,9 +8480,6 @@ msgstr "Você deve aceitar nossos Termos de Serviço e política de privacidade msgid "You must have maintainer access to force delete a lock" msgstr "Você deve ter o acesso de mantenedor para apagar um bloqueio" -msgid "You must sign in to star a project" -msgstr "Você deve estar autenticado para marcar um projeto" - msgid "You need a different license to enable FileLocks feature" msgstr "Você precisa de uma licença diferente para ativar o recurso FileLocks" @@ -8150,6 +8489,12 @@ msgstr "Você precisa do git-lfs na versão %{min_git_lfs_version} (ou maior) pa msgid "You need permission." msgstr "Você precisa de permissão." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "Você não será notificado por email" @@ -8229,7 +8574,7 @@ msgid "Your projects" msgstr "Seus projetos" msgid "a deleted user" -msgstr "" +msgstr "um usuário excluído" msgid "ago" msgstr "atrás" @@ -8237,16 +8582,6 @@ msgstr "atrás" msgid "among other things" msgstr "entre outras coisas" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "e 1 vulnerabilidade corrigida" -msgstr[1] "e %d vulnerabilidades corrigidas" - msgid "assign yourself" msgstr "atribuir a si mesmo" @@ -8274,20 +8609,55 @@ msgstr "%{namespace} é afetado por %{vulnerability}." msgid "ciReport|%{remainingPackagesCount} more" msgstr "mais %{remainingPackagesCount}" -msgid "ciReport|%{reportName} is loading" -msgstr "%{reportName} está carregando" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" + +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" -msgid "ciReport|%{reportName} resulted in error while loading results" -msgstr "%{reportName} resultou em erro ao carregar os resultados" +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} is loading" +msgstr "" + +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" -msgstr "%{type} não detectou novas vulnerabilidades de segurança" +msgid "ciReport|(errors when loading results)" +msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" -msgstr "%{type} não detectou vulnerabilidades de segurança" +msgid "ciReport|(is loading)" +msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" -msgstr "%{type} não detectou vulnerabilidades" +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" msgid "ciReport|Class" msgstr "Classe" @@ -8298,39 +8668,30 @@ msgstr "Qualidade do código" msgid "ciReport|Confidence" msgstr "Confiança" +msgid "ciReport|Container scanning" +msgstr "" + msgid "ciReport|Container scanning detected" msgstr "Verificação de contêiner detectada" msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "A varredura de contêiner detectou vulnerabilidades conhecidas em suas imagens docker." -msgid "ciReport|Container scanning is loading" -msgstr "A verificação do container está carregando" - -msgid "ciReport|Container scanning resulted in error while loading results" -msgstr "Verificação do container resultou em erro ao carregar os resultados" +msgid "ciReport|DAST" +msgstr "" msgid "ciReport|DAST detected" msgstr "DAST detectado" -msgid "ciReport|DAST is loading" -msgstr "DAST está carregando" - -msgid "ciReport|DAST resulted in error while loading results" -msgstr "DAST resultou em erro ao carregar os resultados" - msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" +msgid "ciReport|Dependency scanning" +msgstr "" + msgid "ciReport|Dependency scanning detected" msgstr "Verificação de dependência detectada" -msgid "ciReport|Dependency scanning is loading" -msgstr "A verificação de dependência está carregando" - -msgid "ciReport|Dependency scanning resulted in error while loading results" -msgstr "Verificação de dependência resultou em erro ao carregar os resultados" - msgid "ciReport|Description" msgstr "Descrição" @@ -8361,9 +8722,6 @@ msgstr "Instâncias" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "Saiba mais sobre como interagir com relatórios de segurança (Alpha)." -msgid "ciReport|Learn more about whitelisting" -msgstr "Saiba mais sobre whitelist" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,24 +8762,18 @@ msgstr "Métricas de desempenho" msgid "ciReport|Revert dismissal" msgstr "Reverter ignorar" +msgid "ciReport|SAST" +msgstr "" + msgid "ciReport|SAST detected" msgstr "SAST detectado" -msgid "ciReport|SAST is loading" -msgstr "SAST está carregando" - -msgid "ciReport|SAST resulted in error while loading results" -msgstr "SAST resultou em erro ao carregar os resultados" - msgid "ciReport|Security scanning" msgstr "Verificação de segurança" msgid "ciReport|Security scanning failed loading any results" msgstr "A verificação de segurança falhou ao carregar resultados" -msgid "ciReport|Security scanning is loading" -msgstr "A verificação de segurança está carregando" - msgid "ciReport|Severity" msgstr "Severidade" @@ -8452,16 +8804,13 @@ msgstr "Ocorreu um erro ao carregar o relatório de verificação de dependênci msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "Houve um erro ao reverter o descarte. Por favor, tente novamente." -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "Vulnerabilidades não aprovadas (vermelho) podem ser marcadas como aprovadas." - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "Atualizar %{name} de %{version} para %{fixed}." msgid "ciReport|Used by %{packagesString}" msgid_plural "ciReport|Used by %{packagesString}, and %{lastPackage}" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Usado por %{packagesString}" +msgstr[1] "Usado por %{packagesString} e %{lastPackage}" msgid "ciReport|View full report" msgstr "Visualizar relatório completo" @@ -8498,19 +8847,6 @@ msgstr[1] "dias" msgid "deploy token" msgstr "token de deploy" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "detectada %d vulnerabilidade corrigida" -msgstr[1] "detectada %d vulnerabilidades corrigidas" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "detectada %d nova vulnerabilidade" -msgstr[1] "detectadas %d novas vulnerabilidades" - -msgid "detected no vulnerabilities" -msgstr "nenhuma vulnerabilidade detectada" - msgid "disabled" msgstr "desabilitado" @@ -8530,7 +8866,7 @@ msgid "here" msgstr "aqui" msgid "https://your-bitbucket-server" -msgstr "" +msgstr "https://seu-servidor-do-bitbucket" msgid "import flow" msgstr "fluxo de importação" @@ -8553,13 +8889,13 @@ msgid "is not a valid X509 certificate." msgstr "não é um certificado X509 válido." msgid "issue boards" -msgstr "" +msgstr "painéis" msgid "latest version" msgstr "versão mais recente" msgid "license management" -msgstr "" +msgstr "gerenciamento de licenças" msgid "locked by %{path_lock_user_name} %{created_at}" msgstr "bloqueador por %{path_lock_user_name} %{created_at}" @@ -8783,6 +9119,9 @@ msgstr "Esse merge request está em processamento" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "Este projeto está arquivado, a escrita foi desativada" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "Você pode fazer merge manualmente usando o" @@ -8801,6 +9140,9 @@ msgstr "para" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "para ser realizado merge automaticamente quando o pipeline for bem sucedido" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "novo merge request" @@ -8833,7 +9175,7 @@ msgid "remaining" msgstr "restante" msgid "remove" -msgstr "" +msgstr "remover" msgid "remove due date" msgstr "remover a data de vencimento" @@ -8856,6 +9198,9 @@ msgstr "este documento" msgid "to help your contributors communicate effectively!" msgstr "para ajudar seus contribuintes à se comunicar de maneira eficaz!" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "nome do usuário" diff --git a/locale/ro_RO/gitlab.po b/locale/ro_RO/gitlab.po index f333a5aeba1..3fb198ae037 100644 --- a/locale/ro_RO/gitlab.po +++ b/locale/ro_RO/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:27\n" msgid " Status" msgstr "" @@ -141,6 +141,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -186,31 +189,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -348,6 +333,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -390,6 +381,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -429,15 +423,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -456,6 +450,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -753,6 +750,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -912,6 +912,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -948,9 +951,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1434,6 +1434,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1596,6 +1602,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1644,10 +1653,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1674,6 +1683,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1740,9 +1755,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1776,15 +1788,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1809,12 +1812,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1872,6 +1869,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1902,9 +1902,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1944,12 +1941,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1968,6 +1968,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1986,9 +1989,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1998,6 +1998,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2049,6 +2052,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2121,24 +2127,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2223,6 +2223,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2256,6 +2259,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2361,9 +2373,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2481,6 +2490,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2685,9 +2697,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2847,6 +2871,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2982,10 +3012,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3096,6 +3126,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3177,6 +3210,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3189,9 +3225,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3219,7 +3264,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3258,18 +3303,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3327,6 +3369,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3504,6 +3549,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3546,6 +3594,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3558,6 +3609,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3585,6 +3639,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3600,6 +3660,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3678,12 +3741,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3744,13 +3801,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3837,6 +3894,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3849,19 +3909,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3903,6 +3963,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4068,6 +4131,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4137,6 +4203,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4176,9 +4248,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4215,7 +4284,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4323,6 +4392,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4566,6 +4638,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4620,9 +4695,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4647,6 +4719,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4827,9 +4902,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4983,6 +5055,9 @@ 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 due date" msgstr "" @@ -5004,6 +5079,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -5031,6 +5109,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5067,6 +5148,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5499,12 +5583,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5544,9 +5622,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5583,6 +5667,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5592,15 +5679,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5613,39 +5715,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5655,6 +5826,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5691,6 +5871,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5718,6 +5901,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5745,6 +5931,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6051,6 +6258,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6129,6 +6339,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6138,18 +6351,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6162,6 +6393,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6216,9 +6450,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6270,9 +6516,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6282,6 +6543,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6306,6 +6573,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6384,6 +6654,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6432,15 +6705,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6456,6 +6720,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6489,6 +6756,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6501,6 +6771,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6546,22 +6819,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6573,6 +6846,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6657,7 +6933,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6741,6 +7017,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6771,6 +7050,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6801,6 +7083,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6876,6 +7161,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6909,6 +7197,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6942,6 +7233,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7176,6 +7470,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7185,6 +7482,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7194,6 +7494,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7242,10 +7551,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7581,12 +7893,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7614,7 +7935,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7629,6 +7950,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7707,6 +8031,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7722,6 +8052,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7791,15 +8124,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7827,6 +8160,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7839,9 +8175,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8157,6 +8490,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8190,9 +8526,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8202,6 +8535,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8289,18 +8628,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - msgid "assign yourself" msgstr "" @@ -8328,61 +8655,91 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8415,9 +8772,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8460,13 +8814,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8475,9 +8826,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8508,9 +8856,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8556,21 +8901,6 @@ msgstr[2] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8847,6 +9177,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8865,6 +9198,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8922,6 +9258,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/ru/gitlab.po b/locale/ru/gitlab.po index 75a291be637..dc7a0fc9f51 100644 --- a/locale/ru/gitlab.po +++ b/locale/ru/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:26\n" msgid " Status" msgstr "" @@ -114,7 +114,7 @@ msgstr[3] "%d записанных изменений" msgid "%d unstaged change" msgid_plural "%d unstaged changes" -msgstr[0] "%d не записанное изменение" +msgstr[0] "%d незаписанных изменений" msgstr[1] "%d не записанных изменений" msgstr[2] "%d не записанных изменений" msgstr[3] "%d не записанных изменений" @@ -158,6 +158,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} Запущено" @@ -205,37 +208,15 @@ msgstr "%{text} доступен" msgid "%{title} changes" msgstr "Изменения в %{title}" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged} не зафиксированных и %{staged} зафиксированных изменений" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + msgid "+ %{moreCount} more" msgstr "+ ещё %{moreCount}" @@ -377,11 +358,17 @@ msgid "Removes source branch" msgstr "Удаляет исходную ветку" msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." -msgstr "«Runner» - это процесс, который выполняет задание (обработчиков заданий). Вы можете настроить столько таких процессов, сколько вам нужно." +msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "Графики непрерывной интеграции (CI)" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -424,6 +411,9 @@ msgstr "Токены Доступа" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -463,15 +453,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "Добавить Kubernetes кластер" -msgid "Add License" -msgstr "Добавить Лицензию" - msgid "Add Readme" msgstr "Добавить Информацию" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -490,6 +480,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -787,6 +780,9 @@ msgstr "Апрель" msgid "Archived project! Repository and other project resources are read-only" msgstr "Архивный проект! Репозиторий и другие ресурсы проекта доступны только для чтения" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Вы действительно хотите удалить это расписание сборочной линии?" @@ -946,6 +942,9 @@ msgstr "Для этого проекта может быть активиров msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "Подробнее по ссылке %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "Вы можете автоматически собирать и тестировать свое приложение, если для этого проекта %{link_to_auto_devops_settings}. Вы также можете автоматически развернуть свое приложение, если вы %{link_to_add_kubernetes_cluster}." @@ -982,9 +981,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "Фоновые задания" - msgid "Badges" msgstr "Значки" @@ -1469,6 +1465,12 @@ msgstr "Выберите Файл..." msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "Выберите ветку/тег (например, %{master}) или введите коммит (например, %{sha}), чтобы увидеть, что изменилось или создать запрос на слияние." +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "Выберите любой цвет." @@ -1631,6 +1633,9 @@ msgstr "Клонировать репозиторий" msgid "Close" msgstr "Закрыть" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1679,11 +1684,11 @@ msgstr "Сертификат удостоверяющего центра" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "Комплект сертификатов удостоверяющего центра (формат PEM)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "Выберите, какие среды вашего проекта будут использовать этот кластер Kubernetes." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "Управляйте тем, как ваш кластер Kubernetes интегрируется с GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" msgid "ClusterIntegration|Copy API URL" msgstr "Скопировать адрес API" @@ -1709,6 +1714,12 @@ msgstr "Создать кластер Kubernetes" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "Введите сведения о вашем кластере Kubernetes" @@ -1775,9 +1786,6 @@ msgstr "Установить" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "Установлен" @@ -1811,15 +1819,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Интеграция кластера Kubernetes" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "Интеграция кластера Kubernetes для этого проекта отключена." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "Интеграция кластера Kubernetes для этого проекта включена." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "Для этого проекта включена интеграция кластера Kubernetes. Отключение интеграции не повлияет на кластер Kubernetes, но соединение с GitLab будет временно отключено." - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "Кластер Kubernetes создаётся в Google Kubernetes Engine..." @@ -1844,12 +1843,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "Узнайте больше о средах" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "Узнайте больше о настройке безопасности" - msgid "ClusterIntegration|Machine type" msgstr "Тип машины" @@ -1907,6 +1900,9 @@ msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "Прочтите нашу документацию %{link_to_help_page} по интеграции кластера Kubernetes." @@ -1937,9 +1933,6 @@ msgstr "Поиск проектов" msgid "ClusterIntegration|Search zones" msgstr "Поиск зон" -msgid "ClusterIntegration|Security" -msgstr "Безопасность" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Просмотр и редактирование информации о вашем кластере Kubernetes" @@ -1979,12 +1972,15 @@ msgstr "Произошли ошибки во время установки %{tit msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "По умолчанию конфигурация кластера предоставляет доступ к широкому набору функциональных возможностей, необходимых для успешного создания и развертывания приложений в контейнерах." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr " У этой учетной записи должны быть разрешения на создание кластера Kubernetes в %{link_to_container_project} указанных ниже" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "Переключить Кластер Kubernetes" @@ -2003,6 +1999,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "Если привязать кластер Kubernetes к этому проекту, вы с лёгкостью сможете использовать приложения для ревью, развертывать ваши приложения, запускать сборочные линии и многое другое." +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "Ваша учетная запись должна иметь %{link_to_kubernetes_engine}" @@ -2021,9 +2020,6 @@ msgstr "документация" msgid "ClusterIntegration|help page" msgstr "страница справки" -msgid "ClusterIntegration|installing applications" -msgstr "ClusterIntegration | установка приложений" - msgid "ClusterIntegration|meets the requirements" msgstr "отвечает требованиям" @@ -2033,6 +2029,9 @@ msgstr "правильно настроен" msgid "ClusterIntegration|sign up" msgstr "зарегистрироваться" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2086,6 +2085,9 @@ msgstr "Коммит" msgid "CommitMessage|Add %{file_name}" msgstr "Добавить %{file_name}" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Коммиты" @@ -2158,24 +2160,18 @@ msgstr "Конфиденциальность" msgid "Configure Gitaly timeouts." msgstr "Настройка таймаутов Gitaly." -msgid "Configure Sidekiq job throttling." -msgstr "Настройте фактор ускорения обработки очереди исполнителей фоновых заданий Sidekiq." - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "Настройка ограничений для Web и API запросов." -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2260,6 +2256,9 @@ msgstr "Участие" msgid "Contribution guide" msgstr "Руководство участника" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2293,6 +2292,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2398,9 +2406,6 @@ msgstr "Новый" msgid "Create project label" msgstr "Создать метку проекта" -msgid "CreateNewFork|Fork" -msgstr "Ответвить" - msgid "CreateTag|Tag" msgstr "Тег" @@ -2518,6 +2523,9 @@ msgstr "Декабрь" msgid "Decline and sign out" msgstr "Отклонить и выйти" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2723,9 +2731,21 @@ msgstr "Отключить для этого проекта" msgid "Disable group Runners" msgstr "Выключить групповые обработчиков заданий" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "Отменить изменения" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "Удалить черновик" @@ -2885,6 +2905,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "Включите панель производительности для данной группы." +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -3020,10 +3046,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3134,6 +3160,9 @@ msgstr "Развернуть все" msgid "Expand sidebar" msgstr "Развернуть боковую панель" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3215,6 +3244,9 @@ msgstr "Февраль" msgid "Fields on this page are now uneditable, you can configure" msgstr "Поля на этой странице сейчас недоступны для редактирования, вы можете настроить" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "Файлы" @@ -3227,9 +3259,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "Фильтр по комментариями к коммитам" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "Поиск по пути" @@ -3257,7 +3298,7 @@ msgstr "отправлено автором" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3296,19 +3337,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Ответвление" -msgstr[1] "Ответвления" -msgstr[2] "Ответвлений" -msgstr[3] "Ответвления" - msgid "ForkedFromProjectPath|Forked from" msgstr "Ответвлено от" @@ -3366,6 +3403,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "Создать стандартный набор меток" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3543,6 +3583,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3585,6 +3628,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3597,6 +3643,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3624,6 +3673,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3639,6 +3694,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3717,12 +3775,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "Перейти к вашему ответвлению" - -msgid "GoToYourFork|Fork" -msgstr "Ответвление" - msgid "Google Code import" msgstr "" @@ -3783,13 +3835,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3876,6 +3928,9 @@ msgstr "Группы не найдены" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Вы можете управлять правами и доступом участников вашей группы к каждому проекту в группе." +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "Создать проект в этой группе." @@ -3888,20 +3943,20 @@ msgstr "Редактировать группу" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "Не удалось покинуть группу. Пожалуйста, убедитесь, что вы не единственный владелец." -msgid "GroupsTree|Filter by name..." -msgstr "Фильтр по имени..." - msgid "GroupsTree|Leave this group" msgstr "Покинуть эту группу" msgid "GroupsTree|Loading groups" msgstr "Загрузка групп" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "К сожалению, по вашему запросу групп не найдено" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "К сожалению, по вашему запросу групп или проектов не найдено" +msgid "GroupsTree|Search by name" +msgstr "" msgid "Have your users email" msgstr "" @@ -3942,6 +3997,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "Скрыть значение" @@ -4108,6 +4166,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4178,6 +4239,12 @@ msgstr "Шаблон интервала" msgid "Introducing Cycle Analytics" msgstr "Внедрение Цикла Аналитик" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4217,9 +4284,6 @@ msgstr "Фоновое задание было удалено" msgid "Jobs" msgstr "Задания" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4256,7 +4320,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4365,6 +4429,9 @@ msgstr "Последняя Сборочная Линия" msgid "Last commit" msgstr "Последний коммит" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "Дата последнего изменения: %{date}" @@ -4609,6 +4676,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "Максимальное количество сбоев хранилища git" @@ -4663,9 +4733,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4690,6 +4757,9 @@ msgstr "Метрики - Influx" msgid "Metrics - Prometheus" msgstr "Метрики - Prometheus" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4870,9 +4940,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -5027,6 +5094,9 @@ 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 due date" msgstr "Плановый срок не указан" @@ -5048,6 +5118,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -5075,6 +5148,9 @@ msgstr "" msgid "No repository" msgstr "Нет репозитория" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Нет расписаний" @@ -5111,6 +5187,9 @@ msgstr "Не конфиденциально" msgid "Not enough data" msgstr "Недостаточно данных" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "Обратите внимание, что мастер ветка автоматически защищена. %{link_to_protected_branches}" @@ -5544,12 +5623,6 @@ msgstr "со стадиями" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "PlantUML" @@ -5589,9 +5662,15 @@ msgstr "Предпочтения" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5628,6 +5707,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "Учетная запись запланирована к удалению." @@ -5637,15 +5719,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "Изменить имя пользователя" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "Текущий путь: %{path}" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "Удалить Учетную запись" @@ -5658,39 +5755,108 @@ msgstr "Удалить свою учетную запись?" msgid "Profiles|Deleting an account has the following effects:" msgstr "Удаление учетной записи приведет к следующим последствиям:" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "Неверный пароль" msgid "Profiles|Invalid username" msgstr "Неверное имя пользователя" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "Путь" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "Введите значение %{confirmationValue} для подтверждения:" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "Обновить имя пользователя" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "Ошибка изменения имени пользователя - %{message}" msgid "Profiles|Username successfully changed" msgstr "Имя пользователя успешно изменено" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "У вас нет прав на удаление этого пользователя." @@ -5700,6 +5866,15 @@ msgstr "Перед удалением учётной записи, вам нео msgid "Profiles|Your account is currently an owner in these groups:" msgstr "Ваша учетная запись в настоящее время является владельцем следующих групп:" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5736,6 +5911,9 @@ msgstr "Проект '%{project_name}' успешно обновлен." msgid "Project Badges" msgstr "Значки Проекта" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "Доступ к проекту должен предоставляться явно каждому пользователю." @@ -5763,6 +5941,9 @@ msgstr "Начат экспорт проекта. Ссылка для скачи msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "Подписаться" @@ -5790,6 +5971,27 @@ msgstr "Никогда" msgid "ProjectLifecycle|Stage" msgstr "Этап" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6096,6 +6298,9 @@ msgstr "Инструкция" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "Ссылка:" @@ -6175,6 +6380,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6184,18 +6392,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6208,6 +6434,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6262,9 +6491,21 @@ msgstr "" msgid "Resolve discussion" msgstr "Закрыть дискуссию" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6317,9 +6558,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "Обработчики заданий" @@ -6329,6 +6585,12 @@ msgstr "API обработчиков заданий" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "Обработчики заданий могут запускаться у отдельных пользователей, серверах и даже на вашей локальной машине." +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6353,6 +6615,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6431,6 +6696,9 @@ msgstr "" msgid "Search milestones" msgstr "Поиск этапов" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6479,16 +6747,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6504,6 +6762,9 @@ msgstr "" msgid "Select Archive Format" msgstr "Выбрать формат архива" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6537,6 +6798,9 @@ msgstr "" msgid "Select target branch" msgstr "Выбор целевой ветки" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6549,6 +6813,9 @@ msgstr "" msgid "Send email" msgstr "Отправить электронное письмо" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "Сент." @@ -6594,6 +6861,12 @@ msgstr "Настройка CI/CD" msgid "Set up Koding" msgstr "Настройка Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6606,12 +6879,6 @@ msgstr "установите пароль" msgid "Settings" msgstr "Настройки" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "Настроить конкретный обработчик заданий автоматически" - msgid "Share" msgstr "Поделиться" @@ -6621,6 +6888,9 @@ msgstr "" msgid "Shared Runners" msgstr "Общие обработчики заданий" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6706,7 +6976,7 @@ msgstr "Настройки размера и доменных имён для с msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6790,6 +7060,9 @@ msgstr "Крупнейшая группа" msgid "SortOptions|Largest repository" msgstr "Крупнейший репозиторий" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "Последние созданные" @@ -6820,6 +7093,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "Наиболее популярный" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "Имя" @@ -6850,6 +7126,9 @@ msgstr "Приоритет" msgid "SortOptions|Recent sign in" msgstr "Недавно заходившие" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "Начатые позже" @@ -6884,7 +7163,7 @@ msgid "Specify an e-mail address regex pattern to identify default internal user msgstr "" msgid "Specify the following URL during the Runner setup:" -msgstr "Укажите следующий URL во время настройки GitLab Runner:" +msgstr "Укажите следующий URL во время настройки Gitlab Runner:" msgid "Squash commits" msgstr "" @@ -6911,7 +7190,7 @@ msgid "Star a label to make it a priority label. Order the prioritized labels to msgstr "" msgid "StarProject|Star" -msgstr "Отметить" +msgstr "В избранное" msgid "Starred Projects" msgstr "Избранные проекты" @@ -6920,11 +7199,14 @@ msgid "Starred Projects' Activity" msgstr "Активность в избранных проектах" msgid "Starred projects" -msgstr "Отмеченные проекты" +msgstr "Избранные проекты" msgid "Start a %{new_merge_request} with these changes" msgstr "Начать %{new_merge_request} с этих изменений" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "Запустить GitLab Runner!" @@ -6958,6 +7240,9 @@ msgstr "" msgid "Subgroups" msgstr "Подгруппы" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6991,6 +7276,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "Тег (%{tag_count})" @@ -7226,6 +7514,9 @@ msgstr "Время, затраченное каждым элементом, со msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7235,6 +7526,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "Среднее значение в ряду. Пример: между 3, 5, 9, среднее 5, между 3, 5, 7, 8, среднее (5+7)/2 = 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "Нет обсуждений, которые можно показать" @@ -7244,6 +7538,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "Проблемы с доступом к Git хранилищу: " @@ -7292,10 +7595,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7633,12 +7939,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7666,7 +7981,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7681,6 +7996,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7759,6 +8077,12 @@ msgstr "Не удается загрузить отличия. %{button_try_agai msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7774,6 +8098,9 @@ msgstr "Разблокировано" msgid "Unresolve discussion" msgstr "Переоткрыть дискуссию" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7790,7 +8117,7 @@ msgid "Unstaged and staged %{type}" msgstr "" msgid "Unstar" -msgstr "Снять отметку" +msgstr "Убрать из избранного" msgid "Unsubscribe" msgstr "" @@ -7843,15 +8170,15 @@ msgstr "Загрузить новый файл" msgid "Upload file" msgstr "Загрузить файл" -msgid "Upload new avatar" -msgstr "Загрузить аватар" - msgid "UploadLink|click to upload" msgstr "кликните для загрузки" msgid "Upvotes" msgstr "Голоса \"за\"" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "Статистика использования" @@ -7879,6 +8206,9 @@ msgstr "Используются глобальный настройки уве msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7891,9 +8221,6 @@ msgstr "" msgid "Users" msgstr "Пользователи" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "Переменные" @@ -8209,6 +8536,9 @@ msgstr "Вы можете добавлять только файлы, когда msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8242,9 +8572,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "Необходимо войти, чтобы оценить проект" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8254,6 +8581,12 @@ msgstr "" msgid "You need permission." msgstr "Вам нужно разрешение." +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "Вы не получите никаких уведомлений по электронной почте" @@ -8341,20 +8674,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "assign yourself" msgstr "назначить себя" @@ -8382,61 +8701,95 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" +msgstr "" + +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8469,9 +8822,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8516,13 +8866,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST is loading" -msgstr "" - -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8531,9 +8878,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8564,9 +8908,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8614,23 +8955,6 @@ msgstr[3] "дней" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "отключено" @@ -8911,6 +9235,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8929,6 +9256,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "новый запрос на слияние" @@ -8988,6 +9318,9 @@ msgstr "этот документ" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "имя пользователя" diff --git a/locale/sq_AL/gitlab.po b/locale/sq_AL/gitlab.po index 762d4ef53a7..681827065da 100644 --- a/locale/sq_AL/gitlab.po +++ b/locale/sq_AL/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: sq\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:30\n" +"PO-Revision-Date: 2018-10-02 09:26\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|DAST" msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning" +msgstr "" + +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/tr_TR/gitlab.po b/locale/tr_TR/gitlab.po index e7e44caf077..cb77032cc50 100644 --- a/locale/tr_TR/gitlab.po +++ b/locale/tr_TR/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:31\n" +"PO-Revision-Date: 2018-10-02 09:26\n" msgid " Status" msgstr "" @@ -124,6 +124,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -167,27 +170,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" -msgstr[1] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -314,6 +303,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -356,6 +351,9 @@ msgstr "Erişim anahtarları" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -395,15 +393,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "Lisans Ekle" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -422,6 +420,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -719,6 +720,9 @@ msgstr "Nisan" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "" @@ -878,6 +882,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -914,9 +921,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1399,6 +1403,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1561,6 +1571,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1609,10 +1622,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1639,6 +1652,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1705,9 +1724,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1741,15 +1757,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1774,12 +1781,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1837,6 +1838,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1867,9 +1871,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1909,12 +1910,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1933,6 +1937,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1951,9 +1958,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1963,6 +1967,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -2012,6 +2019,9 @@ msgstr "" msgid "CommitMessage|Add %{file_name}" msgstr "" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "" @@ -2084,24 +2094,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2186,6 +2190,9 @@ msgstr "" msgid "Contribution guide" msgstr "" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2219,6 +2226,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2324,9 +2340,6 @@ msgstr "" msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "" - msgid "CreateTag|Tag" msgstr "" @@ -2444,6 +2457,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2647,9 +2663,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2809,6 +2837,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2944,10 +2978,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3058,6 +3092,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3139,6 +3176,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "" @@ -3151,9 +3191,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "" @@ -3181,7 +3230,7 @@ msgstr "" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3220,17 +3269,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" - msgid "ForkedFromProjectPath|Forked from" msgstr "" @@ -3288,6 +3335,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3465,6 +3515,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3507,6 +3560,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3519,6 +3575,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3546,6 +3605,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3561,6 +3626,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3639,12 +3707,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "" - -msgid "GoToYourFork|Fork" -msgstr "" - msgid "Google Code import" msgstr "" @@ -3705,13 +3767,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3798,6 +3860,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3810,19 +3875,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3864,6 +3929,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -4028,6 +4096,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4096,6 +4167,12 @@ msgstr "" msgid "Introducing Cycle Analytics" msgstr "" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4135,9 +4212,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4174,7 +4248,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4281,6 +4355,9 @@ msgstr "" msgid "Last commit" msgstr "" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4523,6 +4600,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4577,9 +4657,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4604,6 +4681,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4784,9 +4864,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4939,6 +5016,9 @@ 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 due date" msgstr "" @@ -4960,6 +5040,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4987,6 +5070,9 @@ msgstr "" msgid "No repository" msgstr "" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "" @@ -5023,6 +5109,9 @@ msgstr "" msgid "Not enough data" msgstr "" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5454,12 +5543,6 @@ msgstr "" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5499,9 +5582,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5538,6 +5627,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5547,15 +5639,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5568,39 +5675,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5610,6 +5786,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5646,6 +5831,9 @@ msgstr "" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "" @@ -5673,6 +5861,9 @@ msgstr "" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "" @@ -5700,6 +5891,27 @@ msgstr "" msgid "ProjectLifecycle|Stage" msgstr "" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -6006,6 +6218,9 @@ msgstr "" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6083,6 +6298,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6092,18 +6310,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6116,6 +6352,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6170,9 +6409,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6223,9 +6474,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6235,6 +6501,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6259,6 +6531,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6337,6 +6612,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6385,14 +6663,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6408,6 +6678,9 @@ msgstr "" msgid "Select Archive Format" msgstr "" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6441,6 +6714,9 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6453,6 +6729,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6498,22 +6777,22 @@ msgstr "" msgid "Set up Koding" msgstr "" -msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" +msgid "Set up a %{type} Runner manually" msgstr "" -msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." +msgid "Set up a specific Runner automatically" msgstr "" -msgid "SetPasswordToCloneLink|set a password" +msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" -msgid "Settings" +msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." msgstr "" -msgid "Set up a %{type} Runner manually" +msgid "SetPasswordToCloneLink|set a password" msgstr "" -msgid "Set up a specific Runner automatically" +msgid "Settings" msgstr "" msgid "Share" @@ -6525,6 +6804,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6608,7 +6890,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6692,6 +6974,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6722,6 +7007,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6752,6 +7040,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6827,6 +7118,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "" @@ -6860,6 +7154,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6893,6 +7190,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7126,6 +7426,9 @@ msgstr "" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7135,6 +7438,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7144,6 +7450,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "" @@ -7192,10 +7507,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7529,12 +7847,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7562,7 +7889,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7577,6 +7904,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7655,6 +7985,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7670,6 +8006,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7739,15 +8078,15 @@ msgstr "" msgid "Upload file" msgstr "" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7775,6 +8114,9 @@ msgstr "" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7787,9 +8129,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8105,6 +8444,9 @@ msgstr "" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8138,9 +8480,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8150,6 +8489,12 @@ msgstr "" msgid "You need permission." msgstr "" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" @@ -8237,16 +8582,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - msgid "assign yourself" msgstr "" @@ -8274,61 +8609,87 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" +msgstr "" + +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8361,9 +8722,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8404,13 +8762,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" -msgstr "" - -msgid "ciReport|SAST is loading" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8419,9 +8774,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8452,9 +8804,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8498,19 +8847,6 @@ msgstr[1] "" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" -msgstr[1] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8783,6 +9119,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8801,6 +9140,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "" @@ -8856,6 +9198,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/uk/gitlab.po b/locale/uk/gitlab.po index 7757f421b1f..57a131c4ee6 100644 --- a/locale/uk/gitlab.po +++ b/locale/uk/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: uk\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:33\n" +"PO-Revision-Date: 2018-10-02 09:31\n" msgid " Status" msgstr " Статус" @@ -65,17 +65,17 @@ msgstr[3] "%d експортерів" msgid "%d failed test result" msgid_plural "%d failed test results" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d невдалий результат тесту" +msgstr[1] "%d невдалі результати тестів" +msgstr[2] "%d невдалих результатів тестів" +msgstr[3] "%d невдалих результатів тестів" msgid "%d fixed test result" msgid_plural "%d fixed test results" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d виправлений результат тесту" +msgstr[1] "%d виправлені результати тесту" +msgstr[2] "%d виправлених результатів тесту" +msgstr[3] "%d виправлених результатів тесту" msgid "%d issue" msgid_plural "%d issues" @@ -153,11 +153,14 @@ msgid "%{filePath} deleted" msgstr "%{filePath} видалено" msgid "%{firstLabel} +%{labelCount} more" -msgstr "" +msgstr "%{firstLabel} +%{labelCount} більше" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "%{group_docs_link_start}Групи%{group_docs_link_end} дозволяють вам керувати і взаємодіяти між кількома проектами. Члени групи мають доступ до усіх її проектів." +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "%{issuableType} буде видалено! Ви впевнені?" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} Початок" @@ -205,37 +208,15 @@ msgstr "%{text} доступний" msgid "%{title} changes" msgstr "%{title} зміни" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type} виявило 1 вразливість" -msgstr[1] "%{type} виявило %{vulnerabilityCount} вразливостей" -msgstr[2] "%{type} виявило %{vulnerabilityCount} вразливостей" -msgstr[3] "%{type} виявило %{vulnerabilityCount} вразливостей" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged} неіндексованих та %{staged} проіндексованих змін" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "%{usage_ping_link_start}Довідатись більше%{usage_ping_link_end} про те, якою інформацією Ви ділитесь із GitLab Inc." + +msgid "+ %{count} more" +msgstr "+ ще %{count}" + msgid "+ %{moreCount} more" msgstr "+ ще %{moreCount}" @@ -359,7 +340,7 @@ msgid "\"johnsmith@example.com\": \"johnsmith@example.com\" will ad msgstr "\"johnsmith@example.com\": \"johnsmith@example.com\" додасть \"johnsmith@example.com\" до всіх проблем та коментарів, які були створені johnsmith@example.com. За замовчуванням ім’я користувача та його електронна адреса заблоковані для забезпечення конфіденційності. Використовуйте цю опцію, якщо ви хочете показувати електронну адресу повністю." msgid "%{changedFilesLength} unstaged and %{stagedFilesLength} staged changes" -msgstr "" +msgstr "%{changedFilesLength} неіндексованих та %{stagedFilesLength} індексованих змін" msgid "%{created_count} created, %{accepted_count} accepted." msgstr "%{created_count} створено, %{accepted_count} прийнято." @@ -382,6 +363,12 @@ msgstr "'Runner' — це процес, який виконує завдання msgid "A collection of graphs regarding Continuous Integration" msgstr "Набір графіків відносно безперервної інтеграції" +msgid "A default branch cannot be chosen for an empty project." +msgstr "Гілку за замовчуванням не може бути обрано для порожнього проекту." + +msgid "A deleted user" +msgstr "Видалений користувач" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "У вашому форку буде створено нову гілку, а також буде ініційований новий запит на злиття." @@ -424,6 +411,9 @@ msgstr "Токени доступу" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "Доступ заборонено! Будь-ласка, перевірте, чи ви можете додавати ключі для розгортування до цього сховища." +msgid "Access expiration date" +msgstr "Дата припинення доступу" + msgid "Access to '%{classification_label}' not allowed" msgstr "Доступ до \"%{classification_label}\" заборонено" @@ -431,7 +421,7 @@ msgid "Access to failing storages has been temporarily disabled to allow the mou msgstr "Доступ до сховищ, що вийшли з ладу, тимчасово прибраний задля відновлення монтування. Після вирішення проблеми обнуліть інформацію сховища для відновлення доступу." msgid "Access your runner token, customize your pipeline configuration, and view your pipeline status and coverage report." -msgstr "Отримайте доступ до GitLab Runner токену, налаштуйте конфігурацію конвеєра та перегляньте його статус, а також звіт про покриття." +msgstr "Отримайте доступ до Gitlab Runner токену, налаштуйте конфігурацію конвеєра та перегляньте його статус, а також звіт про покриття." msgid "Account" msgstr "Обліковий запис" @@ -463,15 +453,15 @@ msgstr "Додайте групові веб-гуки та GitLab Enterprise Edi msgid "Add Kubernetes cluster" msgstr "Додати Kubernetes-кластер" -msgid "Add License" -msgstr "Додати ліцензію" - msgid "Add Readme" msgstr "Додати інструкцію" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "Створіть додатковий текст, який буде присутній у всіх повідомленнях електронної пошти. Максимальна кількість символів — %{character_limit}" +msgid "Add license" +msgstr "Додати ліцензію" + msgid "Add new application" msgstr "Додати новий додаток" @@ -490,6 +480,9 @@ msgstr "Додати користувачів до групу:" msgid "Add users to group" msgstr "Додати користувача до групи" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "Додавання нових проектів для вашого інстансу GitLab заборонено. Зверніться до свого адміністратора GitLab, щоб отримати дозвіл" + msgid "Additional text" msgstr "Додатковий текст" @@ -614,7 +607,7 @@ msgid "An application called %{link_to_client} is requesting access to your GitL msgstr "Додаток під назвою %{link_to_client} запитує доступ до вашого GitLab аккаунту." msgid "An empty GitLab User field will add the FogBugz user's full name (e.g. \"By John Smith\") in the description of all issues and comments. It will also associate and/or assign these issues and comments with the project creator." -msgstr "Порожнє поле GitLab-користувача буде заповнено іменем користувача з FogBugz (наприклад \"John Smith\") в описі всіх проблем та коментарів. Крім того ці проблеми та коментарі будуть асоційовані з та/або призначені на автора проекту." +msgstr "Порожнє поле Gitlab-користувача буде заповнено іменем користувача з FogBugz (наприклад \"John Smith\") в описі всіх проблем та коментарів. Крім того ці проблеми та коментарі будуть асоційовані з та/або призначені на автора проекту." msgid "An error accured whilst committing your changes." msgstr "Трапилася помилка при коміті ваших змін." @@ -680,16 +673,16 @@ msgid "An error occurred while fetching sidebar data" msgstr "Виникла помилка під час завантаження даних для бічної панелі" msgid "An error occurred while fetching stages." -msgstr "" +msgstr "Помилка при отриманні стадій." msgid "An error occurred while fetching the job log." -msgstr "" +msgstr "Помилка при отриманні логів завдання." msgid "An error occurred while fetching the job." -msgstr "" +msgstr "Помилка при отриманні завдання." msgid "An error occurred while fetching the jobs." -msgstr "" +msgstr "Помилка при отриманні завдань." msgid "An error occurred while fetching the pipeline." msgstr "Помилка при отриманні данних конвеєра." @@ -787,6 +780,9 @@ msgstr "квітень" msgid "Archived project! Repository and other project resources are read-only" msgstr "Архівований проект! Репозиторій та інші ресурси проекту доступні лише для читання" +msgid "Archived projects" +msgstr "Заархівовані проекти" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Ви впевнені, що хочете видалити цей розклад для конвеєра?" @@ -824,7 +820,7 @@ msgid "Ascending" msgstr "За зростанням" msgid "Ask your group maintainer to set up a group Runner." -msgstr "Попросіть керівника групи, щоб налаштувати груповий Runner." +msgstr "Зверніться до керівника групи, щоб налаштувати груповий Runner." msgid "Assertion consumer service URL" msgstr "URL-адреса служби обробника тверджень" @@ -857,7 +853,7 @@ msgid "Assignee" msgstr "Виконавець" msgid "Assignee lists not available with your current license" -msgstr "" +msgstr "Списки виконавців не доступні з вашою поточною ліцензією" msgid "Assignee lists show all issues assigned to the selected user." msgstr "Списки виконавців показують усі проблеми, призначені вибраному користувачу." @@ -946,6 +942,9 @@ msgstr "AutoDevOps буде автоматично збирати, тестув msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "Дізнайтеся більше в %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "Ви можете автоматично збирати й тестувати ваш застосунок, якщо %{link_to_auto_devops_settings} для цього проекту. Ви також можете його автоматично розгортати, якщо %{link_to_add_kubernetes_cluster}." @@ -956,7 +955,7 @@ msgid "AutoDevOps|enable Auto DevOps" msgstr "Увімкнути Auto DevOps" msgid "Automatically marked as default internal user" -msgstr "" +msgstr "Автоматично позначено як внутрішній користувач за замовчуванням" msgid "Available" msgstr "Доступно" @@ -982,9 +981,6 @@ msgstr "Фонові завдання" msgid "Background color" msgstr "Колір фону" -msgid "Background jobs" -msgstr "Фонові завдання" - msgid "Badges" msgstr "Значки" @@ -1025,7 +1021,7 @@ msgid "Badges|No image to preview" msgstr "Немає зображення для попереднього перегляду" msgid "Badges|Please fill in a valid URL" -msgstr "" +msgstr "Будь ласка, введіть дійсну URL-адресу" msgid "Badges|Project Badge" msgstr "Значок проекту" @@ -1055,13 +1051,13 @@ msgid "Badges|This project has no badges" msgstr "У цього проекту немає значків" msgid "Badges|You are going to delete this badge. Deleted badges cannot be restored." -msgstr "" +msgstr "Ви збираєтеся видалити цей значок. Вилучені значки не можуть бути відновлені." msgid "Badges|Your badges" msgstr "Ваші значки" msgid "Badges|e.g. %{exampleUrl}" -msgstr "" +msgstr "напр. %{exampleUrl}" msgid "Begin with the selected commit" msgstr "Почати із виділеного коміту" @@ -1329,7 +1325,7 @@ msgid "CI / CD Settings" msgstr "Налаштування CI/CD" msgid "CI will run using the credentials assigned above." -msgstr "" +msgstr "CI буде працювати з використанням облікових даних, визначених вище." msgid "CI/CD" msgstr "CI/CD" @@ -1469,6 +1465,12 @@ msgstr "Виберіть файл ..." msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "Виберіть гілку чи тег (напр. %{master}) або введіть коміт (напр. %{sha}) для перегляду змін або для створення запиту на злиття." +msgid "Choose a template..." +msgstr "Виберіть тему-шаблон..." + +msgid "Choose a type..." +msgstr "Виберіть тип..." + msgid "Choose any color." msgstr "Вибрати будь-який колір." @@ -1631,6 +1633,9 @@ msgstr "Клонувати репозиторій" msgid "Close" msgstr "Закрити" +msgid "Close epic" +msgstr "Закрити епік" + msgid "Closed" msgstr "Закрито" @@ -1679,11 +1684,11 @@ msgstr "Сертифікат центру сертифікації" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "Набір сертифікатів (формат PEM)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "Виберіть які з середовищ вашого проекту використовуватимуть цей Kubernetes-кластер." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "Керуйте способом інтеграції вашого Kubernetes-кластера з GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" msgid "ClusterIntegration|Copy API URL" msgstr "Скопіювати API URL" @@ -1709,6 +1714,12 @@ msgstr "Створити Kubernetes-кластер" msgid "ClusterIntegration|Did you know?" msgstr "Чи знаєте ви?" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "Введіть параметри вашого Kubernetes-кластера" @@ -1775,9 +1786,6 @@ msgstr "Встановити" msgid "ClusterIntegration|Install Prometheus" msgstr "Встановити Prometheus" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "Встановіть застосунки у ваш Kubernetes кластер. Докладніше про %{helpLink}" - msgid "ClusterIntegration|Installed" msgstr "Встановлений" @@ -1811,15 +1819,6 @@ msgstr "Стан Kubernetes-кластера" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Інтеграція із Kubernetes-кластером" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "Інтеграція із Kubernetes-кластером вимкнена для цього проекту." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "Інтеграція із Kubernetes-кластером увімкнена для цього проекту." - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "Інтеграція із Kubernetes-кластером увімкнена для цього проекту. Вимкнення цієї інтеграції не вплине на кластер, а лише тимчасово перерве з’єднання з GitLab." - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "Kubernetes-кластер створюється на Google Kubernetes Engine..." @@ -1844,12 +1843,6 @@ msgstr "Дізнайтеся більше про %{help_link_start}Kubernetes%{h msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "Дізнайтеся більше про %{help_link_start}зони%{help_link_end}." -msgid "ClusterIntegration|Learn more about environments" -msgstr "Дізнайтеся більше про середовища" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "Дізнайтеся більше про конфігурацію безпеки" - msgid "ClusterIntegration|Machine type" msgstr "Тип машини" @@ -1907,6 +1900,9 @@ msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "Перегляньте нашу %{link_to_help_page} про інтеграцію із Kubernetes." @@ -1937,9 +1933,6 @@ msgstr "Пошук проектів" msgid "ClusterIntegration|Search zones" msgstr "Пошук зон" -msgid "ClusterIntegration|Security" -msgstr "Безпека" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Переглянути та редагувати параметри вашого Kubernetes-кластера" @@ -1979,12 +1972,15 @@ msgstr "Під час встановлення %{title} сталася поми msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "Стандартна конфігурація кластера надає доступ до широкого набору функцій, необхідних для успішного створення та розгортання застосунків-контейнерів." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "Цей обліковий запис повинен мати наступні права для створення Kubernetes-кластера в %{link_to_container_project}" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "Увімкнути/вимкнути Kubernetes-кластер" @@ -2003,6 +1999,9 @@ msgstr "Ми не змогли перевірити, що один із ваши msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "За допомогою підключеного до цього проекту Kubernetes-кластера, ви можете використовувати Review Apps, розгортати ваші проекти, запускати конвеєри збірки тощо." +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "Ваш обліковий запис повинен мати %{link_to_kubernetes_engine}" @@ -2021,9 +2020,6 @@ msgstr "документації" msgid "ClusterIntegration|help page" msgstr "сторінка допомоги" -msgid "ClusterIntegration|installing applications" -msgstr "встановлення застосунків" - msgid "ClusterIntegration|meets the requirements" msgstr "задовольняє вимогам" @@ -2033,6 +2029,9 @@ msgstr "правильно налаштований" msgid "ClusterIntegration|sign up" msgstr "зареєструвати" +msgid "Code owners" +msgstr "Власники коду" + msgid "Cohorts" msgstr "Когорти" @@ -2086,6 +2085,9 @@ msgstr "Коміт" msgid "CommitMessage|Add %{file_name}" msgstr "Додавання %{file_name}" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "Коміти" @@ -2158,24 +2160,18 @@ msgstr "Конфіденційність" msgid "Configure Gitaly timeouts." msgstr "Налаштувати таймаути Gitaly." -msgid "Configure Sidekiq job throttling." -msgstr "Налаштувати частоту завдань Sidekiq." - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "Налаштувати автоматичні перевірки git і очищення в репозиторіях." msgid "Configure limits for web and API requests." msgstr "Налаштуйте обмеження для веб та API запитів." -msgid "Configure push and pull mirrors." -msgstr "Налаштуйте вхідні та вихідні дзеркала." +msgid "Configure push mirrors." +msgstr "Налаштуйте вихідні дзеркала." msgid "Configure storage path and circuit breaker settings." msgstr "Налаштуйте шлях до сховищ та circuit breaker." -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "Налаштувати спосіб створення користувачем нового облікового запису." @@ -2260,6 +2256,9 @@ msgstr "Внесок" msgid "Contribution guide" msgstr "Інструкція для учасників" +msgid "Contributions for %{calendar_date}" +msgstr "Внески за %{calendar_date}" + msgid "Contributions per group member" msgstr "Кількість внесків на кожного учасника групи" @@ -2293,6 +2292,15 @@ msgstr "Встановіть максимальну кількість пара msgid "ConvDev Index" msgstr "Індекс ConvDev" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "Скопіюйте відкритий SSH-ключ в буфер обміну" @@ -2398,9 +2406,6 @@ msgstr "Створити..." msgid "Create project label" msgstr "Створити мітку проекту" -msgid "CreateNewFork|Fork" -msgstr "Форк" - msgid "CreateTag|Tag" msgstr "Тег" @@ -2504,7 +2509,7 @@ msgid "DashboardProjects|Personal" msgstr "Особисті" msgid "Date picker" -msgstr "" +msgstr "Вибір дати" msgid "Debug" msgstr "Відладка" @@ -2518,6 +2523,9 @@ msgstr "грудень" msgid "Decline and sign out" msgstr "Відхити та вийти" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "Мітка класифікації за замовчуванням" @@ -2534,7 +2542,7 @@ msgid "Delete" msgstr "Видалити" msgid "Delete Package" -msgstr "" +msgstr "Видалити пакет" msgid "Delete Snippet" msgstr "Видалити сніпет" @@ -2592,7 +2600,7 @@ msgid "DeployKeys|Privately accessible deploy keys" msgstr "Приватні ключі розгортання" msgid "DeployKeys|Project usage" -msgstr "Використання у проектах" +msgstr "Використовується у проектах" msgid "DeployKeys|Publicly accessible deploy keys" msgstr "Публічні колючі розгортання" @@ -2723,9 +2731,21 @@ msgstr "Вимкнути для цього проекту" msgid "Disable group Runners" msgstr "Вимкнути групові Runner'и" +msgid "Discard" +msgstr "Скасувати" + +msgid "Discard all changes" +msgstr "Скасувати всі зміни" + +msgid "Discard all unstaged changes?" +msgstr "Скасувати всі неіндексовані зміни?" + msgid "Discard changes" msgstr "Відхилити зміни" +msgid "Discard changes to %{path}?" +msgstr "Скасувати зміни до %{path}?" + msgid "Discard draft" msgstr "Видалити чернетку" @@ -2885,6 +2905,12 @@ msgstr "Увімкнути reCAPTCHA або Akismet та встановити о msgid "Enable the Performance Bar for a given group." msgstr "Увімкнути панель продуктивності для даної групи." +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "Увімкнено" @@ -3009,10 +3035,10 @@ msgid "Epics let you manage your portfolio of projects more efficiently and with msgstr "Епіки дозволяють керувати вашим портфелем проектів ефективніше та з меншими зусиллями" msgid "Epics|An error occurred while saving %{epicDateType} date" -msgstr "" +msgstr "Сталася помилка при збереженні дати %{epicDateType}" msgid "Epics|How can I solve this?" -msgstr "" +msgstr "Як я можу це вирішити?" msgid "Epics|More information" msgstr "Детальніше" @@ -3020,10 +3046,10 @@ msgstr "Детальніше" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3072,10 +3098,10 @@ msgid "Error loading project data. Please try again." msgstr "Помилка при завантаженні даних проекту. Будь ласка, спробуйте знову." msgid "Error loading template types." -msgstr "" +msgstr "Помилка при завантаженні типів шаблонів." msgid "Error loading template." -msgstr "" +msgstr "Помилка при завантаженні шаблону." msgid "Error occurred when toggling the notification subscription" msgstr "Сталася помилка під час підключення підписки на сповіщення" @@ -3090,7 +3116,7 @@ msgid "Error updating todo status." msgstr "Помилка при оновленні статусу задачі." msgid "Error while loading the merge request. Please try again." -msgstr "" +msgstr "Помилка при завантаженні запита на злиття. Будь ласка, спробуйте знову." msgid "Estimated" msgstr "За оцінками" @@ -3134,6 +3160,9 @@ msgstr "Розгорнути все" msgid "Expand sidebar" msgstr "Розгорніть бічну панель" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "Огляд" @@ -3192,7 +3221,7 @@ msgid "Failed to remove issue from board, please try again." msgstr "Не вдалося видалити проблему з дошки, будь ласка, спробуйте ще раз." msgid "Failed to remove mirror." -msgstr "" +msgstr "Не вдалося видалити дзеркало." msgid "Failed to remove the pipeline schedule" msgstr "Не вдалося видалити розклад конвеєра" @@ -3215,6 +3244,9 @@ msgstr "лютий" msgid "Fields on this page are now uneditable, you can configure" msgstr "Поля на цій сторінці зараз недоступні для редагування, ви можете налаштувати" +msgid "File templates" +msgstr "Шаблони файлів" + msgid "Files" msgstr "Файли" @@ -3227,9 +3259,18 @@ msgstr "Заповніть поля нижче, увімкніть %{ena msgid "Filter" msgstr "Фільтр" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "Фільтрувати закриті за %{issuable_type}." + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "Фільтрувати відкриті за %{issuable_type}." + msgid "Filter by commit message" msgstr "Фільтрувати за коміт-повідомленням" +msgid "Filter..." +msgstr "Фільтр..." + msgid "Find by path" msgstr "Пошук по шляху" @@ -3257,11 +3298,11 @@ msgstr "відправлено" msgid "Fixed date" msgstr "Дата виправлення" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" -msgstr "" +msgstr "Виправлена дата початку" msgid "Fixed:" msgstr "Виправлено:" @@ -3294,7 +3335,10 @@ msgid "For internal projects, any logged in user can view pipelines and access j msgstr "Для внутрішніх проектів будь-який зареєстрований користувач може переглядати конвеєри та отримати доступ до інформації про роботу (логи та артефакти)" msgid "For more information, go to the " -msgstr "" +msgstr "Для отримання додаткової інформації, відвідайте " + +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "Для отримання додаткової інформації, перегляньте документацію по %{deactivating_usage_ping_link_start}деактивації даних про використання%{deactivating_usage_ping_link_end}." msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "Для приватних проектів будь-який користувач (гість або вище) може переглядати конвеєри та отримати доступ до інформації про роботу (логи та артефакти)" @@ -3302,13 +3346,6 @@ msgstr "Для приватних проектів будь-який корис msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "Для публічних проектів будь-який зареєстрований користувач може переглядати конвеєри та отримати доступ до інформації про роботу (логи та артефакти)" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "Форк" -msgstr[1] "Форки" -msgstr[2] "Форків" -msgstr[3] "Форків" - msgid "ForkedFromProjectPath|Forked from" msgstr "Форк від" @@ -3331,7 +3368,7 @@ msgid "From Bitbucket" msgstr "З Bitbucket" msgid "From Bitbucket Server" -msgstr "" +msgstr "З Bitbucket Server" msgid "From FogBugz" msgstr "З FogBugz" @@ -3349,7 +3386,7 @@ msgid "From merge request merge until deploy to production" msgstr "Від виконання запиту на злиття до розгортання на production" msgid "From milestones:" -msgstr "" +msgstr "З етапів:" msgid "From the Kubernetes cluster details view, install Runner from the applications list" msgstr "Із сторінки деталей Kubernetes-кластера, встановіть runner зі списку застосунків" @@ -3366,6 +3403,9 @@ msgstr "Загальні конвеєри" msgid "Generate a default set of labels" msgstr "Створити стандартний набір міток" +msgid "Geo" +msgstr "Geo" + msgid "Geo Nodes" msgstr "Гео-Вузли" @@ -3532,17 +3572,20 @@ msgid "GeoNodes|You have configured Geo nodes using an insecure HTTP connection. msgstr "Ви налаштували Geo-вузли через незахищене HTTP-з’єднання. Ми рекомендуємо використовувати HTTPS." msgid "Geo|%{name} is scheduled for forced re-download" -msgstr "" +msgstr "%{name} заплановано для примусового повторного завантаження" msgid "Geo|%{name} is scheduled for re-check" -msgstr "" +msgstr "%{name} заплановано для повторної перевірки" msgid "Geo|%{name} is scheduled for re-sync" -msgstr "" +msgstr "%{name} заплановано для повторної синхронізації" msgid "Geo|All projects" msgstr "Всі проекти" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "Повідомлення про помилку" @@ -3559,19 +3602,19 @@ msgid "Geo|In sync" msgstr "Синхронізовано" msgid "Geo|Last successful sync" -msgstr "" +msgstr "Остання успішна синхронізація" msgid "Geo|Last sync attempt" -msgstr "" +msgstr "Остання спроба синхронізації" msgid "Geo|Last time verified" -msgstr "" +msgstr "Останній час перевірки" msgid "Geo|Never" msgstr "Ніколи" msgid "Geo|Next sync scheduled at" -msgstr "" +msgstr "Наступна синхронізація запланована на" msgid "Geo|No errors" msgstr "Без помилок" @@ -3585,6 +3628,9 @@ msgstr "Очікування синхронізації" msgid "Geo|Pending verification" msgstr "Очікування перевірки" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "Проекти в певних групах" @@ -3592,22 +3638,25 @@ msgid "Geo|Projects in certain storage shards" msgstr "Проекти в певних сегментах сховищ" msgid "Geo|Recheck" -msgstr "" +msgstr "Повторна перевірка" msgid "Geo|Redownload" msgstr "Повторне завантаження" +msgid "Geo|Remove" +msgstr "Видалити" + msgid "Geo|Repository sync capacity" msgstr "Пропускна здатність синхронізації репозиторіїв" msgid "Geo|Resync" -msgstr "" +msgstr "Повторна синхронізація" msgid "Geo|Retry count" -msgstr "" +msgstr "Кількість спроб" msgid "Geo|Retry counts" -msgstr "" +msgstr "Кількості спроб" msgid "Geo|Select groups to replicate." msgstr "Виберіть групи для реплікації." @@ -3622,21 +3671,30 @@ msgid "Geo|Synced" msgstr "Синхронізовано" msgid "Geo|Synchronization failed - %{error}" +msgstr "Синхронізація невдала: %{error}" + +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." msgstr "" -msgid "Geo|Unknown state" +msgid "Geo|Tracking entry will be removed. Are you sure?" msgstr "" +msgid "Geo|Unknown state" +msgstr "Невідомий стан" + msgid "Geo|Verification capacity" msgstr "Пропускна здатність перевірки" msgid "Geo|Verification failed - %{error}" -msgstr "" +msgstr "Перевірка невдала: %{error}" msgid "Geo|Waiting for scheduler" -msgstr "" +msgstr "Очікування планувальника" msgid "Geo|You need a different license to use Geo replication" +msgstr "Вам потрібна інша ліцензія на використання географічної реплікації" + +msgid "Get a free instance review" msgstr "" msgid "Git" @@ -3667,7 +3725,7 @@ msgid "GitLab Geo" msgstr "GitLab Geo" msgid "GitLab Group Runners can execute code for all the projects in this group." -msgstr "Групові Runner'и GitLab можуть виконувати код для усіх проектів у цій групі." +msgstr "Групові Runner'и Gitlab можуть виконувати код для усіх проектів у цій групі." msgid "GitLab Import" msgstr "Імпорт з GitLab" @@ -3717,12 +3775,6 @@ msgstr "Перейти до" msgid "Go to %{link_to_google_takeout}." msgstr "Перейти до %{link_to_google_takeout}." -msgid "Go to your fork" -msgstr "Перейти до вашого форку" - -msgid "GoToYourFork|Fork" -msgstr "Форк" - msgid "Google Code import" msgstr "Імпорт з Google Code" @@ -3783,14 +3835,14 @@ msgstr "Вибачте, жоден епік не задовольняє крит msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "План-графік епіків відображає стан ваших епіків у часі" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." -msgstr "Для перегляду плану-графіку додайте заплановані дати початку та завершення до одного з ваших епіків у цій групі або її підгрупах. При помісячному перегляді показуються лише епіки за попередній, поточний та наступні 5 місяців: від %{startDate} до %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." -msgstr "Для перегляду плану-графіку додайте заплановані дати початку та завершення до одного з ваших епіків у цій групі або її підгрупах. При поквартальному перегляді показуються лише епіки за попередній, поточний та наступні 4 квартали: від %{startDate} до %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." -msgstr "Для перегляду плану-графіку додайте заплановані дати початку та завершення до одного з ваших епіків у цій групі або її підгрупах. При потижневому перегляді показуються лише епіки за попередній, поточний та наступні 4 тижні: – від %{startDate} до %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "Для розширення пошуку змініть або видаліть фільтри. При помісячному перегляді показуються епіки лише за попередній, поточний та наступні 5 місяців: – від %{startDate} до %{endDate}." @@ -3805,13 +3857,13 @@ msgid "GroupRoadmap|Until %{dateWord}" msgstr "До %{dateWord}" msgid "GroupSettings|Badges" -msgstr "" +msgstr "Значки" msgid "GroupSettings|Customize your group badges." -msgstr "" +msgstr "Налаштувати значки групи." msgid "GroupSettings|Learn more about badges." -msgstr "" +msgstr "Дізнайтеся більше про значки." msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" msgstr "Заборонити спільний доступ до проекту в рамках %{group} з іншими групами" @@ -3876,6 +3928,9 @@ msgstr "Групи не знайдені" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Ви можете керувати правами доступу членів групи мати доступ до кожного проекту в ній." +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "Ви впевнені, що хочете залишити групу \"%{fullName}\"?" + msgid "GroupsTree|Create a project in this group." msgstr "Створити проект у групі." @@ -3888,20 +3943,20 @@ msgstr "Редагувати групу" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "Не вдалося залишити групу. Будь-ласка впевніться, що ви не єдитий власник." -msgid "GroupsTree|Filter by name..." -msgstr "Фільтрувати за іменем…" - msgid "GroupsTree|Leave this group" msgstr "Залишити цю группу" msgid "GroupsTree|Loading groups" msgstr "Завантаження груп" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "На жаль жодна группа не задовольняє параметрам вашого запиту" +msgid "GroupsTree|No groups matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "На жаль жодна группа чи проект не задовольняє параметрам вашого запиту" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" +msgstr "Пошук за іменем" msgid "Have your users email" msgstr "Електронна пошта для звертань користувачів" @@ -3937,11 +3992,14 @@ msgid "Help page text and support page url." msgstr "Текст сторінки довідки та url-адреса сторінки підтримки." 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 "" +msgstr "Це відкритий (публічний) SSH ключ, який потрібно додати на віддалений сервер. Для отримання додаткової інформації, зверніться до документації." msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "Сховати значення" @@ -3983,7 +4041,7 @@ msgid "IDE|Edit" msgstr "Редагувати" msgid "IDE|Get started with Live Preview" -msgstr "" +msgstr "Розпочати роботу із попереднім переглядом" msgid "IDE|Go to project" msgstr "Перейти до проекту" @@ -3998,7 +4056,7 @@ msgid "IDE|Preview your web application using Web IDE client-side evaluation." msgstr "" msgid "IDE|Refresh preview" -msgstr "" +msgstr "Оновити попередній перегляд" msgid "IDE|Review" msgstr "Огляд" @@ -4108,6 +4166,9 @@ msgstr "Покращити управління проблемами з можл msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." msgstr "Покращити пошук за допомогою розширеного глобального пошук в версії GitLab Enterprise Edition." +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 the next step, you'll be able to select the projects you want to import." msgstr "На наступному кроці ви зможете вибрати проекти, які хочете імпортувати." @@ -4146,7 +4207,7 @@ msgstr[2] "Інстансів" msgstr[3] "Інстансів" msgid "Instance Statistics" -msgstr "" +msgstr "Статистика інстанса" msgid "Instance Statistics visibility" msgstr "" @@ -4178,6 +4239,12 @@ msgstr "Шаблон інтервалу" msgid "Introducing Cycle Analytics" msgstr "Представляємо аналітику циклу" +msgid "Invite" +msgstr "Запрошення" + +msgid "Issue" +msgstr "Проблема" + msgid "Issue Boards" msgstr "Дошки обговорення проблем" @@ -4217,11 +4284,8 @@ msgstr "Завдання було стерте" msgid "Jobs" msgstr "Завдання" -msgid "Job|Are you sure you want to erase this job?" -msgstr "Ви дійсно хочете видалити це завдання?" - msgid "Job|Browse" -msgstr "" +msgstr "Переглянути" msgid "Job|Complete Raw" msgstr "" @@ -4239,10 +4303,10 @@ msgid "Job|Job has been erased" msgstr "Завдання було стерте" msgid "Job|Job has been erased by" -msgstr "" +msgstr "Завдання було стерте" msgid "Job|Keep" -msgstr "" +msgstr "Залишити" msgid "Job|Scroll to bottom" msgstr "Прокрутити вниз" @@ -4256,7 +4320,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4365,6 +4429,9 @@ msgstr "Останній Конвеєр" msgid "Last commit" msgstr "Останній коміт" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "Останні зміни %{date}" @@ -4420,22 +4487,22 @@ msgid "License" msgstr "Ліцензія" msgid "LicenseManagement|Approve license" -msgstr "" +msgstr "Затвердити ліцензію" msgid "LicenseManagement|Approve license?" -msgstr "" +msgstr "Затвердити ліцензію?" msgid "LicenseManagement|Approved" -msgstr "" +msgstr "Затверджено" msgid "LicenseManagement|Blacklist license" -msgstr "" +msgstr "Занести ліцензію в чорний список" msgid "LicenseManagement|Blacklist license?" -msgstr "" +msgstr "Занести ліцензію в чорний список?" msgid "LicenseManagement|Blacklisted" -msgstr "" +msgstr "В чорному списку" msgid "LicenseManagement|License" msgstr "Ліцензія" @@ -4447,10 +4514,10 @@ msgid "LicenseManagement|License details" msgstr "Деталі ліцензії" msgid "LicenseManagement|Manage approved and blacklisted licenses for this project." -msgstr "" +msgstr "Управління затвердженими ліцензіями та чорним списком ліцензій для цього проекту." msgid "LicenseManagement|Packages" -msgstr "" +msgstr "Пакети" msgid "LicenseManagement|Remove license" msgstr "Видалити ліцензію" @@ -4459,13 +4526,13 @@ msgid "LicenseManagement|Remove license?" msgstr "Видалити ліцензію?" msgid "LicenseManagement|There are currently no approved or blacklisted licenses in this project." -msgstr "" +msgstr "Наразі немає затверджених ліцензій чи ліцензій в чорному списку для цього проекту." msgid "LicenseManagement|URL" msgstr "URL" msgid "LicenseManagement|You are about to remove the license, %{name}, from this project." -msgstr "" +msgstr "Ви збираєтеся видалити ліцензію %{name} із цього проекту." msgid "Licenses" msgstr "Ліцензії" @@ -4547,7 +4614,7 @@ msgid "Manage Git repositories with fine-grained access controls that keep your msgstr "Керування репозиторіями Git за допомогою детального контролю доступу збереже ваш код в безпеці. Виконуйте перегляд коду та покращуйте співпрацю за допомогою запитів на злиття. Кожен проект може також мати трекер проблем та вікі." msgid "Manage Web IDE features" -msgstr "" +msgstr "Керування функціями веб-IDE" msgid "Manage access" msgstr "Керувати доступом" @@ -4607,6 +4674,9 @@ msgid "Maven Metadata" msgstr "" msgid "Maven package" +msgstr "Пакет Maven" + +msgid "Max access level" msgstr "" msgid "Maximum git storage failures" @@ -4663,9 +4733,6 @@ msgstr "Помилка при збереженні коментаря" msgid "MergeRequests|Toggle comments for this file" msgstr "Увімкнути або вимкнути коментарі для цього файлу" -msgid "MergeRequests|Updating discussions failed" -msgstr "Помилка при оновленні обговорень" - msgid "MergeRequests|View file @ %{commitId}" msgstr "Переглянути файл @ %{commitId}" @@ -4690,6 +4757,9 @@ msgstr "Метрики - Influx" msgid "Metrics - Prometheus" msgstr "Метрики - Prometheus" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "Бізнес" @@ -4870,9 +4940,6 @@ msgstr "Місяці" msgid "More" msgstr "Більше" -msgid "More actions" -msgstr "Додаткові дії" - msgid "More info" msgstr "Детальніше" @@ -5016,7 +5083,7 @@ msgid "No assignee" msgstr "Немає виконавця" msgid "No branches found" -msgstr "" +msgstr "Гілок не знайдено" msgid "No changes" msgstr "Немає змін" @@ -5027,6 +5094,9 @@ msgstr "Неможливо з'єднатись із сервером Gitaly, б msgid "No container images stored for this project. Add one by following the instructions above." msgstr "В цьому проекті немає жодного образа контейнера. Додайте його за інструкціями вище." +msgid "No contributions were found" +msgstr "" + msgid "No due date" msgstr "Немає" @@ -5048,6 +5118,9 @@ msgstr "Немає проблем за вибраний період часу." msgid "No labels with such name or description" msgstr "Немає міток з таким іменем або описом" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "Немає запитів на злиття за вибраний період часу." @@ -5061,7 +5134,7 @@ msgid "No other labels with such name or description" msgstr "Немає інших міток з таким іменем або описом" msgid "No packages stored for this project." -msgstr "" +msgstr "В цьому проекті немає пакетів." msgid "No prioritised labels with such name or description" msgstr "Немає пріоритетних міток з таким іменем або описом" @@ -5075,6 +5148,9 @@ msgstr "Немає відправок (push) за вказаний період msgid "No repository" msgstr "Немає репозиторію" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "Немає розкладів" @@ -5111,6 +5187,9 @@ msgstr "Не конфіденційно" msgid "Not enough data" msgstr "Недостатньо даних" +msgid "Not now" +msgstr "Пізніше" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "Майте на увазі, що гілка master захищена автоматично. %{link_to_protected_branches}" @@ -5145,7 +5224,7 @@ msgid "NotificationEvent|Merge merge request" msgstr "Запит на злиття виконано" msgid "NotificationEvent|New epic" -msgstr "" +msgstr "Новий епік" msgid "NotificationEvent|New issue" msgstr "Нова проблема" @@ -5251,7 +5330,7 @@ msgid "Oops, are you sure?" msgstr "Ой, а ви впевнені?" msgid "Open" -msgstr "Відкрити" +msgstr "Відкриті" msgid "Open in Xcode" msgstr "Відкрити в Xcode" @@ -5314,13 +5393,13 @@ msgid "Owner" msgstr "Власник" msgid "Package information" -msgstr "" +msgstr "Інформація про пакет" msgid "Package was removed" -msgstr "" +msgstr "Пакет був видалений" msgid "Packages" -msgstr "" +msgstr "Пакети" msgid "Pages" msgstr "Сторінки" @@ -5544,12 +5623,6 @@ msgstr "зі стадіями" msgid "Plain diff" msgstr "Просте порівняння" -msgid "Planned finish date" -msgstr "Запланована дата завершення" - -msgid "Planned start date" -msgstr "Запланована дата початку" - msgid "PlantUML" msgstr "PlantUML" @@ -5589,9 +5662,15 @@ msgstr "Налаштування" msgid "Preferences|Navigation theme" msgstr "Тема навігації" +msgid "Press Enter or click to search" +msgstr "Для пошуку натисніть Enter або клікніть" + msgid "Preview" msgstr "Попередній перегляд" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "Головний" @@ -5623,10 +5702,13 @@ msgid "Profile Settings" msgstr "Налаштування профілю" msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered." -msgstr "" +msgstr "Ви збираєтеся остаточно видалити %{yourAccount}, а також всі проблеми, запити на злиття та групи, пов'язані з вашим обліковим записом. Після підтвердження %{deleteAccount}, його неможливо буде відновити." msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." -msgstr "" +msgstr "Ви збираєтеся змінити ім'я користувача %{currentUsernameBold} на %{newUsernameBold}. Профіль та проекти будуть перенаправлятися на простір імен %{newUsername}, але таке перенаправлення закінчиться, коли простір імен %{currentUsername} буде зареєстровано на іншого користувача або групу. Будь ласка, оновіть віддалені адреси в репозиторіях Git якомога швидше." + +msgid "Profiles|%{author_name} made a private contribution" +msgstr "%{author_name} створив приватний внесок" msgid "Profiles|Account scheduled for removal." msgstr "Обліковий запис запланований для видалення." @@ -5635,17 +5717,32 @@ msgid "Profiles|Add key" msgstr "Додати ключ" msgid "Profiles|Add status emoji" -msgstr "" +msgstr "Додати смайлик-статус" + +msgid "Profiles|Avatar cropper" +msgstr "Обрізка аватарів" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "Аватар буде видалено. Ви впевнені?" msgid "Profiles|Change username" msgstr "Змінити ім'я користувача" +msgid "Profiles|Choose file..." +msgstr "Вибрати файл..." + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "Виберіть для показу внесків до приватних репозиторіїв у вашому публічному профілі без інформації про проекти, репозиторії або організації." + msgid "Profiles|Clear status" msgstr "Очистити статус" msgid "Profiles|Current path: %{path}" msgstr "Поточний шлях: %{path}" +msgid "Profiles|Current status" +msgstr "Поточний стан" + msgid "Profiles|Delete Account" msgstr "Видалити обліковий запис" @@ -5658,20 +5755,68 @@ msgstr "Видалити ваш обліковий запис?" msgid "Profiles|Deleting an account has the following effects:" msgstr "Видалення облікового запису несе наступні наслідки:" +msgid "Profiles|Do not show on profile" +msgstr "Не відображати у профілі" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "Не відображати особисту інформацію, пов’язану із активностями, у ваших профілях" + +msgid "Profiles|Edit Profile" +msgstr "Редагувати профіль" + msgid "Profiles|Invalid password" msgstr "Неправильний пароль" msgid "Profiles|Invalid username" msgstr "Неправильне ім'я користувача" +msgid "Profiles|Main settings" +msgstr "Головні налаштування" + +msgid "Profiles|No file chosen" +msgstr "Файл не вибрано" + msgid "Profiles|Path" msgstr "Шлях" +msgid "Profiles|Position and size your new avatar" +msgstr "Спозиціонуйте ваш аватар та задайте його розмір" + +msgid "Profiles|Private contributions" +msgstr "Приватні внески" + +msgid "Profiles|Public Avatar" +msgstr "Публічний аватар" + +msgid "Profiles|Remove avatar" +msgstr "Видалити аватар" + +msgid "Profiles|Set new profile picture" +msgstr "Встановити нове зображення для профілю" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "Деякі параметри недоступні для облікових записів LDAP" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "Розкажіть про себе в межах 250 символів." + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "Максимальний розмір файлу 200КБ." + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "Це не схоже на публічниц ключ SSH. Ви впевнені, що хочете його додати?" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "Ця електронна адреса буде відображатися у вашому публічному профілі." + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." -msgstr "" +msgstr "Цей смайлик та повідомлення будуть показані у вашому профілі та в інтерфейсі." + +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "Ця функція є експериментальною і переклади ще не завершені." + +msgid "Profiles|This information will appear on your profile." +msgstr "Ця інформація буде відображатися у вашому профілі." msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "Введіть ваш %{confirmationValue} для підтвердження:" @@ -5679,18 +5824,39 @@ msgstr "Введіть ваш %{confirmationValue} для підтверджен msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "Зазвичай починається з \"ssh-rsa ...\"" +msgid "Profiles|Update profile settings" +msgstr "Оновити налаштування профілю" + msgid "Profiles|Update username" msgstr "Оновити ім'я користувача" +msgid "Profiles|Upload new avatar" +msgstr "Завантажити новий аватар" + msgid "Profiles|Username change failed - %{message}" msgstr "Помилка при збереженні імені користувача - %{message}" msgid "Profiles|Username successfully changed" msgstr "Ім’я користувача успішно збережено" +msgid "Profiles|Website" +msgstr "Вебсайт" + msgid "Profiles|What's your status?" msgstr "Який ваш статус?" +msgid "Profiles|You can change your avatar here" +msgstr "Тут ви можете змінити свій аватар" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "Тут ви можете змінити свій аватар або видалити його та повернутися до %{gravatar_link}" + +msgid "Profiles|You can upload your avatar here" +msgstr "Тут ви можете завантажити свій аватар" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "Тут ви можете завантажити свій аватар або змінити його на %{gravatar_link}" + msgid "Profiles|You don't have access to delete this user." msgstr "У вас немає доступу для видалення цього користувача." @@ -5700,6 +5866,15 @@ msgstr "Вам необхідно змінити власника або вид msgid "Profiles|Your account is currently an owner in these groups:" msgstr "Ваш обліковий запис є власником в цих групах:" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "Ваша адреса електронної пошти була автоматично встановлена на основі вашого облікового запису %{provider_label}." + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "Ваше місцезнаходження було автоматично встановлено на основі вашого облікового запису %{provider_label}." + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "Ваше ім’я було автоматично встановлено на основі вашого облікового запису %{provider_label} щоб люди могли вас впізнати." + msgid "Profiles|Your status" msgstr "Ваш статус" @@ -5736,6 +5911,9 @@ msgstr "Проект '%{project_name}' успішно оновлено." msgid "Project Badges" msgstr "Значки проекту" +msgid "Project URL" +msgstr "URL-адреса проекту" + msgid "Project access must be granted explicitly to each user." msgstr "Доступ до проекту повинен надаватися кожному користувачеві." @@ -5763,6 +5941,9 @@ msgstr "Розпочато експорт проекту. Посилання д msgid "Project name" msgstr "Назва проекту" +msgid "Project slug" +msgstr "Шлях проекту" + msgid "ProjectActivityRSS|Subscribe" msgstr "Підписатися" @@ -5790,17 +5971,38 @@ msgstr "Ніколи" msgid "ProjectLifecycle|Stage" msgstr "Стадія" +msgid "ProjectOverview|Fork" +msgstr "Форк" + +msgid "ProjectOverview|Forks" +msgstr "Форки" + +msgid "ProjectOverview|Go to your fork" +msgstr "Перейти до вашого форку" + +msgid "ProjectOverview|Star" +msgstr "В обрані" + +msgid "ProjectOverview|Unstar" +msgstr "Видалити із обраних" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "ID проекту: %{project_id}" msgid "ProjectSettings|Badges" -msgstr "" +msgstr "Значки" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "Зверніться до адміністратора, щоб змінити це налаштування." msgid "ProjectSettings|Customize your project badges." -msgstr "" +msgstr "Налаштувати значки проекту." msgid "ProjectSettings|Failed to protect the tag" msgstr "Помилка при захисті тегу" @@ -5809,7 +6011,7 @@ msgid "ProjectSettings|Failed to update tag!" msgstr "Помилка при оновленні тегу!" msgid "ProjectSettings|Learn more about badges." -msgstr "" +msgstr "Дізнайтеся більше про значки." msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "Тільки підписані коміти можуть бути надіслані в цей репозиторій." @@ -6001,7 +6203,7 @@ msgid "ProtectedEnvironment|Choose who is allowed to deploy" msgstr "" msgid "ProtectedEnvironment|Environment" -msgstr "" +msgstr "Середовище" msgid "ProtectedEnvironment|Protect" msgstr "" @@ -6016,7 +6218,7 @@ msgid "ProtectedEnvironment|Protected Environment (%{protected_environments_coun msgstr "" msgid "ProtectedEnvironment|Select an environment" -msgstr "" +msgstr "Виберіть середовище" msgid "ProtectedEnvironment|There are currently no protected environments, protect an environment with the form above." msgstr "" @@ -6052,10 +6254,10 @@ msgid "Public pipelines" msgstr "Публічні конвеєри" msgid "Pull" -msgstr "" +msgstr "Отримати (pull)" msgid "Push" -msgstr "" +msgstr "Відправити (push)" msgid "Push Rules" msgstr "Push-правила" @@ -6096,6 +6298,9 @@ msgstr "Інструкція" msgid "Real-time features" msgstr "Фунції реального часу" +msgid "Recent searches" +msgstr "Останні пошукові запити" + msgid "Reference:" msgstr "Посилання:" @@ -6175,6 +6380,9 @@ msgstr "Перейменувати файл" msgid "Rename folder" msgstr "Перейменувати папку" +msgid "Reopen epic" +msgstr "Повторне відкриття епіку" + msgid "Repair authentication" msgstr "Відновити аутентифікацію" @@ -6184,18 +6392,36 @@ msgstr "Відповісти на це електронне повідомлен msgid "Repo by URL" msgstr "Репозиторії по URL" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "%{failedString} та %{resolvedString}" msgid "Reports|Class" msgstr "Клас" +msgid "Reports|Confidence" +msgstr "Впевненість" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "Час виконання" msgid "Reports|Failure" msgstr "Помилка" +msgid "Reports|More info" +msgstr "Детальніше" + +msgid "Reports|New Issue" +msgstr "Нова проблема" + +msgid "Reports|Severity" +msgstr "Серйозність" + msgid "Reports|System output" msgstr "" @@ -6208,6 +6434,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "Вразливість" + msgid "Reports|no changed test results" msgstr "" @@ -6262,9 +6491,21 @@ msgstr "Вирішити конфлікти у гілці-джерелі" msgid "Resolve discussion" msgstr "Завершити обговорення" +msgid "Response metrics (AWS ELB)" +msgstr "Метрики відповідей (AWS ELB)" + msgid "Response metrics (Custom)" msgstr "Метрики відповідей (Власні)" +msgid "Response metrics (HA Proxy)" +msgstr "Метрики відповідей (HA Proxy)" + +msgid "Response metrics (NGINX Ingress)" +msgstr "Метрики відповідей (NGINX Ingress)" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "Продовжити" @@ -6317,9 +6558,24 @@ msgstr "Запустити CI/CD конвеєри для зовнішніх ре msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "Токен Runner'а" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "Runner'и" @@ -6329,6 +6585,12 @@ msgstr "API Runner’ів" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "Runner’и можуть розміщуватися у різних користувачів, на серверах і навіть на вашій локальній машині." +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "Сторінка Runner'ів" @@ -6353,6 +6615,9 @@ msgstr "Єдиний вхід SAML" msgid "SAML Single Sign On Settings" msgstr "Налаштування єдиного входу SAML" +msgid "SAST" +msgstr "SAST" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "Відбиток SHA1 сертифікату для підписування токенів SAML. Отримайте його від провайдера ідентифікації, де він також може називатися \"Thumbprint\"." @@ -6431,6 +6696,9 @@ msgstr "Пошук у запитах на злиття" msgid "Search milestones" msgstr "Пошук етапів" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6459,10 +6727,10 @@ msgid "SearchAutocomplete|in all GitLab" msgstr "" msgid "SearchAutocomplete|in this group" -msgstr "" +msgstr "в цій групі" msgid "SearchAutocomplete|in this project" -msgstr "" +msgstr "в цьому проекті" msgid "Seconds before reseting failure information" msgstr "Кількість секунд до скидання інформації про збої" @@ -6479,16 +6747,6 @@ msgstr "Безпека" msgid "Security Dashboard" msgstr "Панель безпеки" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6504,6 +6762,9 @@ msgstr "Вибрати" msgid "Select Archive Format" msgstr "Виберіть формат архіву" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "Виберіть простір імен для форку проекту" @@ -6537,11 +6798,14 @@ msgstr "Виберіть гілку-джерело" msgid "Select target branch" msgstr "Вибір цільової гілки" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" msgid "Selecting a GitLab user will add a link to the GitLab user in the descriptions of issues and comments (e.g. \"By @johnsmith\"). It will also associate and/or assign these issues and comments with the selected user." -msgstr "При виборі користувача GitLab посилання на нього буде додане до опису проблем та коментарів (напр. \" @johnsmith\"). Також це призведе до асоціації та/або призначення цих проблем та коментарів на вибраного користувача." +msgstr "При виборі користувача Gitlab посилання на нього буде додане до опису проблем та коментарів (напр. \" @johnsmith\"). Також це призведе до асоціації та/або призначення цих проблем та коментарів на вибраного користувача." msgid "Selective synchronization" msgstr "Вибіркова синхронізація" @@ -6549,6 +6813,9 @@ msgstr "Вибіркова синхронізація" msgid "Send email" msgstr "Надіслати листа" +msgid "Send usage data" +msgstr "Відправити дані про використання" + msgid "Sep" msgstr "вер." @@ -6594,6 +6861,12 @@ msgstr "Налаштування CI/CD" msgid "Set up Koding" msgstr "Налаштування Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "Автоматично налаштувати специфічний runner" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "Налаштуйте твердження/атрибути (email, ім'я, прізвище) і NameID відповідно до %{docsLinkStart} документації %{icon}%{docsLinkEnd}" @@ -6606,12 +6879,6 @@ msgstr "встановити пароль" msgid "Settings" msgstr "Налаштування" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "Автоматично налаштувати специфічний runner" - msgid "Share" msgstr "Поділитися" @@ -6621,6 +6888,9 @@ msgstr "Поділіться %{sso_label} із учасника msgid "Shared Runners" msgstr "Загальні Runner'и" +msgid "Shared projects" +msgstr "Спільні проекти" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "При обнуленні хвилин конвеєрів для цього простору імен, кількість вже використаних хвилин буде дорівнювати 0." @@ -6706,7 +6976,7 @@ msgstr "Налаштування розміру та домену для ста msgid "Slack application" msgstr "застосунок Slack" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6728,7 +6998,7 @@ msgid "Something went wrong trying to change the confidentiality of this issue" msgstr "Помилка при зміні конфіденційності цієї проблеми" msgid "Something went wrong trying to change the locked state of this %{issuableDisplayName}" -msgstr "" +msgstr "Щось пішло не так, при спробі зміни стану блокування %{issuableDisplayName}" msgid "Something went wrong when toggling the button" msgstr "Помилка при перемиканні кнопки" @@ -6790,6 +7060,9 @@ msgstr "Найбільша група" msgid "SortOptions|Largest repository" msgstr "Найбільший репозиторій" +msgid "SortOptions|Last Contact" +msgstr "Останній контакт" + msgid "SortOptions|Last created" msgstr "Останній створений" @@ -6820,6 +7093,9 @@ msgstr "Більша вага" msgid "SortOptions|Most popular" msgstr "Найбільш популярний" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "Ім'я" @@ -6850,6 +7126,9 @@ msgstr "Пріоритет" msgid "SortOptions|Recent sign in" msgstr "Нещодавно зареєстровані" +msgid "SortOptions|Start date" +msgstr "Дата початку" + msgid "SortOptions|Start later" msgstr "Розпочатий пізніше" @@ -6925,6 +7204,9 @@ msgstr "Обрані проекти" msgid "Start a %{new_merge_request} with these changes" msgstr "Почати %{new_merge_request} з цими змінами" +msgid "Start date" +msgstr "Дата початку" + msgid "Start the Runner!" msgstr "Запустіть Runner!" @@ -6958,6 +7240,9 @@ msgstr "Сховище:" msgid "Subgroups" msgstr "Підгрупи" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "Позначити як спам" @@ -6991,6 +7276,9 @@ msgstr "Заголовок і футер системи:" msgid "System metrics (Custom)" msgstr "Системні метрики (Власні)" +msgid "System metrics (Kubernetes)" +msgstr "Системні метрики (Kubernetes)" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "Тег (%{tag_count})" @@ -7002,7 +7290,7 @@ msgid "Tags" msgstr "Теги" msgid "Tags feed" -msgstr "" +msgstr "Канал тегів" msgid "Tags:" msgstr "Теги:" @@ -7149,7 +7437,7 @@ msgid "The number of attempts GitLab will make to access a storage." msgstr "Кількість спроб, які зробить GitLab для отримання доступу до сховища даних." msgid "The number of failures after which GitLab will completely prevent access to the storage. The number of failures can be reset in the admin interface: %{link_to_health_page} or using the %{api_documentation_link}." -msgstr "Кількість збоїв після чого GitLab повністю заблокує доступ до сховища данних. Лічильник кількості збоїв може бути скинутий в інтерфейсі адміністратора %{link_to_health_page}, або через %{api_documentation_link}." +msgstr "Кількість збоїв після чого Gitlab повністю заблокує доступ до сховища данних. Лічильник кількості збоїв може бути скинутий в інтерфейсі адміністратора %{link_to_health_page}, або через %{api_documentation_link}." msgid "The passphrase required to decrypt the private key. This is optional and the value is encrypted at rest." msgstr "Пароль, який потрібен для дешифрування приватного ключа. Він є необов’язковим і зберігається у зашифрованому вигляді." @@ -7226,15 +7514,21 @@ msgstr "Час, витрачений на кожен елемент, зібра msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "Мапа користувачів — це JSON-документ, який задає як адреси електронної пошти та імена користувачів Google Code, що приймали участь у ваших проектах будуть імпортовані у GitLab. Ви можете змінити його шляхом зміни значень, що стоять справа від :. Не видаляйте лапки та інші знаки пунктуації, а також не змінюйте адреси електронної пошти чи імена користувачів зліва." msgid "The user map is a mapping of the FogBugz users that participated on your projects to the way their email address and usernames will be imported into GitLab. You can change this by populating the table below." -msgstr "Мапа користувачів — це правила імпортування користувачів FogBugz, які приймали участь у ваших проектах до GitLab (зокрема їх імен та адрес електронної пошти). Ви можете вносити зміни шляхом заповнення таблиці нижче." +msgstr "Мапа користувачів — це правила імпортування користувачів FogBugz, які приймали участь у ваших проектах до Gitlab (зокрема їх імен та адрес електронної пошти). Ви можете вносити зміни шляхом заповнення таблиці нижче." msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "Середнє значення в рядку. Приклад: між 3, 5, 9, середніми 5, між 3, 5, 7, 8, середніми (5 + 7) / 2 = 6." +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "Немає проблем для відображення" @@ -7244,14 +7538,23 @@ msgstr "Тут ще немає міток" msgid "There are no merge requests to show" msgstr "Немає запитів на злиття для відображення" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "Немає індексованих змін" + +msgid "There are no unstaged changes" +msgstr "Немає неіндексованих змін" + msgid "There are problems accessing Git storage: " msgstr "Є проблеми з доступом до сховища git: " msgid "There was an error adding a todo." -msgstr "" +msgstr "Помилка при додаванні задачі." msgid "There was an error deleting the todo." -msgstr "" +msgstr "Помилка при видаленні задачі." msgid "There was an error loading users activity calendar." msgstr "Помилка при завантаженні календаря активності користувачів." @@ -7292,10 +7595,13 @@ msgstr "Видимість цієї дошки обмежена" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "Ця гілка була змінена після того моменту, коли ви почали її редагувати. Ви хотіли б створити нову?" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7625,7 +7931,7 @@ msgid "To connect GitHub repositories, you can use a %{personal_access_token_lin msgstr "Для підключення репозиторіїв з GitHub, ви можете використовувати %{personal_access_token_link}. Коли ви створюватимете ваш персональний токен доступу, вам потрібно буде вибрати область дії repo, щоб ми могли відобразити список ваших публічних та приватних репозиторіїв, доступних для підключення." msgid "To connect GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" -msgstr "Для підключення репозиторіїв з GitHub, ви спочатку повинні дозволити GitLab доступ до списку ваших репозиторіїв на GitHub:" +msgstr "Для підключення репозиторіїв з GitHub, ви спочатку повинні дозволити Gitlab доступ до списку ваших репозиторіїв на GitHub:" msgid "To connect an SVN repository, check out %{svn_link}." msgstr "Для приєднання SVN-репозиторію, перегляньте %{svn_link}." @@ -7633,17 +7939,26 @@ msgstr "Для приєднання SVN-репозиторію, переглян msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "Для початку введіть URL-адресу FogBugz та параметри входу нижче. Далі ви зможете перенести користувачів та вибрати проекти для імпорту." msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "Спочатку введіть адресу сервера Gіtea і %{link_to_personal_token}." +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "Для імпортування репозиторіїв з GitHub, ви можете використовувати %{personal_access_token_link}. Коли ви створюватимете ваш персональний токен доступу, вам потрібно буде вибрати область дії repo, щоб ми могли відобразити список ваших публічних та приватних репозиторіїв, доступних для підключення." msgid "To import GitHub repositories, you first need to authorize GitLab to access the list of your GitHub repositories:" -msgstr "Для імпорту репозиторіїв з GitHub, ви спочатку повинні дозволити GitLab доступ до списку ваших репозиторіїв на GitHub:" +msgstr "Для імпорту репозиторіїв з GitHub, ви спочатку повинні дозволити Gitlab доступ до списку ваших репозиторіїв на GitHub:" msgid "To import an SVN repository, check out %{svn_link}." msgstr "Для імпортування SVN-репозиторію, перегляньте %{svn_link}." @@ -7666,8 +7981,8 @@ msgstr "До цього інстансу GitLab" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "Щоб перевірити налаштування GitLab CI, перейдіть до \"CI / CD → Конвеєри\" у вашому проекті та натисніть кнопку \"Перевірка конфігурації (CI Lint)\"." -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." -msgstr "Для перегляду плану-графіку додайте заплановані дати початку та завершення до одного з ваших епіків у цій групі або її підгрупах. Відображаються лише епіки за попередні та наступні 3 місяці." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "" msgid "To widen your search, change or remove filters." msgstr "Щоб розширити пошук, змініть або видаліть фільтри." @@ -7681,6 +7996,9 @@ msgstr "Задачі" msgid "Toggle Sidebar" msgstr "Перемикач бічної панелі" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "Перемикач дискусії" @@ -7759,6 +8077,12 @@ msgstr "Неможливо завантажити порівняння (diff). % msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "Неможливо увійти до групи за допомогою SAML через \"%{reason}\"" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "Скасувати" + msgid "Unknown" msgstr "Невідомо" @@ -7766,7 +8090,7 @@ msgid "Unlock" msgstr "Розблокувати" msgid "Unlock this %{issuableDisplayName}? Everyone will be able to comment." -msgstr "" +msgstr "Розблокувати %{issuableDisplayName}? Будь-хто зможе залишати коментарі." msgid "Unlocked" msgstr "Розблоковано" @@ -7774,6 +8098,9 @@ msgstr "Розблоковано" msgid "Unresolve discussion" msgstr "Повторно відкрити обговорення" +msgid "Unstage" +msgstr "Не індексувати" + msgid "Unstage all changes" msgstr "Не індексувати всі зміни" @@ -7843,15 +8170,15 @@ msgstr "Надіслати новий файл" msgid "Upload file" msgstr "Надіслати файл" -msgid "Upload new avatar" -msgstr "Надіслати новий аватар" - msgid "UploadLink|click to upload" msgstr "Натисніть, щоб надіслати" msgid "Upvotes" msgstr "Лайки" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "Статистика використання" @@ -7879,6 +8206,9 @@ msgstr "Використовуються глобальні налаштуван msgid "Used by members to sign in to your group in GitLab" msgstr "Використовується учасниками для входу у вашу групу в GitLab" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "Налаштування користувача" @@ -7891,9 +8221,6 @@ msgstr "Мапа користувачів" msgid "Users" msgstr "Користувачі" -msgid "User|Current status" -msgstr "Поточний статус" - msgid "Variables" msgstr "Змінні" @@ -8177,7 +8504,7 @@ msgid "You are going to transfer %{project_full_name} to another owner. Are you msgstr "Ви збираєтеся передати проект %{project_full_name} іншому власнику. Ви АБСОЛЮТНО впевнені?" msgid "You are on a read-only GitLab instance." -msgstr "Ви знаходитеся на інстансі GitLab \"тільки для читання\"." +msgstr "Ви знаходитеся на інстансі Gitlab \"тільки для читання\"." msgid "You are on a secondary, read-only Geo node. If you want to make changes, you must visit this page on the %{primary_node}." msgstr "Ви знаходитесь на вторинному лише для читання Geo-вузлі. Якщо ви хочете внести будь-які зміни, ви повинні відвідати %{primary_node}." @@ -8209,6 +8536,9 @@ msgstr "Ви можете додавати файли тільки коли пе msgid "You can only edit files when you are on a branch" msgstr "Ви можете редагувати файли, лише перебуваючи у якійсь гілці" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "Ви можете розв’язати цей конфлікт злиття за допомогою інтерактивного режиму (використовуючи кнопки %{use_ours} та %{use_theirs}), або безпосередньо редагуючи файли. Закомітити зміни у %{branch_name}" @@ -8242,9 +8572,6 @@ msgstr "Ви повинні прийняти правила користуван msgid "You must have maintainer access to force delete a lock" msgstr "Ви повинні мати доступ керівника для примусового видалення блокування " -msgid "You must sign in to star a project" -msgstr "Необхідно увійти, щоб оцінити проект" - msgid "You need a different license to enable FileLocks feature" msgstr "Для активації функції Блокування Файлів вам потрібна інша ліцензія" @@ -8254,6 +8581,12 @@ msgstr "Вам потрібна версія git-lfs версії %{min_git_lfs_ msgid "You need permission." msgstr "Вам потрібен дозвіл" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "Ви не отримаєте ніяких повідомлень по електронній пошті" @@ -8341,20 +8674,6 @@ msgstr "тому" msgid "among other things" msgstr "тощо" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "і %d виправлену вразливість" -msgstr[1] "і %d виправлені вразливості" -msgstr[2] "і %d виправлених вразливостей" -msgstr[3] "і %d виправлених вразливостей" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "та 1 виправлена вразливість" -msgstr[1] "і %d виправлених вразливостей" -msgstr[2] "і %d виправлених вразливостей" -msgstr[3] "і %d виправлених вразливостей" - msgid "assign yourself" msgstr "призначити себе" @@ -8382,20 +8701,63 @@ msgstr "%{vulnerability} впливає на %{namespace}." msgid "ciReport|%{remainingPackagesCount} more" msgstr "%{remainingPackagesCount} більше" -msgid "ciReport|%{reportName} is loading" -msgstr "%{reportName} завантажується" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" + +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} is loading" +msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" -msgstr "%{reportName} видав помилку при завантаженні результатів" +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" -msgstr "%{type} не виявило нових вразливостей" +msgid "ciReport|(errors when loading results)" +msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" -msgstr "%{type} не виявило вразливостей" +msgid "ciReport|(is loading)" +msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" -msgstr "%{type} не виявив вразливостей" +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" msgid "ciReport|Class" msgstr "Клас" @@ -8406,39 +8768,30 @@ msgstr "Якість коду" msgid "ciReport|Confidence" msgstr "Впевненість" +msgid "ciReport|Container scanning" +msgstr "" + msgid "ciReport|Container scanning detected" msgstr "Сканування контейнерів виявило" msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "Сканування контейнерів виявляє відомі вразливості у ваших Docker образах." -msgid "ciReport|Container scanning is loading" -msgstr "Сканування контейнерів завантажується" - -msgid "ciReport|Container scanning resulted in error while loading results" -msgstr "Сканування контейнерів видало помилку при завантаженні результатів" +msgid "ciReport|DAST" +msgstr "" msgid "ciReport|DAST detected" msgstr "DAST виявив" -msgid "ciReport|DAST is loading" -msgstr "DAST завантажується" - -msgid "ciReport|DAST resulted in error while loading results" -msgstr "DAST видав помилку при завантаженні результатів" - msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "Сканування залежностей виявляє відомі вразливості у залежностях вашого коду." +msgid "ciReport|Dependency scanning" +msgstr "" + msgid "ciReport|Dependency scanning detected" msgstr "Сканування залежностей виявило" -msgid "ciReport|Dependency scanning is loading" -msgstr "Сканування залежностей завантажується" - -msgid "ciReport|Dependency scanning resulted in error while loading results" -msgstr "Сканування залежностей видало помилку при завантаженні результатів" - msgid "ciReport|Description" msgstr "Опис" @@ -8469,9 +8822,6 @@ msgstr "Інстанси" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "Дізнатися більше про взаємодію з звітами безпеки (Альфа)." -msgid "ciReport|Learn more about whitelisting" -msgstr "Дізнайтеся більше про білий список" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8481,10 +8831,10 @@ msgstr[3] "" msgid "ciReport|License management detected %d new license" msgid_plural "ciReport|License management detected %d new licenses" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Керування ліцензіями виявило %d нову ліцензію" +msgstr[1] "Керування ліцензіями виявило %d нові ліцензії" +msgstr[2] "Керування ліцензіями виявило %d нових ліцензій" +msgstr[3] "Керування ліцензіями виявило %d нових ліцензій" msgid "ciReport|License management detected no licenses for the source branch only" msgstr "" @@ -8516,24 +8866,18 @@ msgstr "Показники продуктивності" msgid "ciReport|Revert dismissal" msgstr "Відмінити відхилення" +msgid "ciReport|SAST" +msgstr "" + msgid "ciReport|SAST detected" msgstr "SAST виявив" -msgid "ciReport|SAST is loading" -msgstr "SAST завантажується" - -msgid "ciReport|SAST resulted in error while loading results" -msgstr "SAST видав помилку при завантаженні результатів" - msgid "ciReport|Security scanning" msgstr "Перевірка безпеки" msgid "ciReport|Security scanning failed loading any results" msgstr "Помилка при завантаженні результатів перевірки безпеки" -msgid "ciReport|Security scanning is loading" -msgstr "Сканування безпеки завантажується" - msgid "ciReport|Severity" msgstr "Серйозність" @@ -8564,18 +8908,15 @@ msgstr "Помилка при завантаженні звіту по скан msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "Помилка при відміні відхилення. Будь ласка, спробуйте знову." -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "Незатверджені вразливості (червоні) можуть бути відмічені як затверджені." - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "Оновити %{name} з %{version} до %{fixed}." msgid "ciReport|Used by %{packagesString}" msgid_plural "ciReport|Used by %{packagesString}, and %{lastPackage}" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Використовується %{packagesString}" +msgstr[1] "Використовується %{packagesString} і %{lastPackage}" +msgstr[2] "Використовується %{packagesString} і %{lastPackage}" +msgstr[3] "Використовується %{packagesString} і %{lastPackage}" msgid "ciReport|View full report" msgstr "Переглянути повний звіт" @@ -8593,7 +8934,7 @@ msgid "confidentiality|You are going to turn off the confidentiality. This means msgstr "Ви вимикаєте конфіденційність. Це означає, що будь-хто зможе бачити і залишати коментарі для цієї проблеми." msgid "confidentiality|You are going to turn on the confidentiality. This means that only team members with at least Reporter access are able to see and leave comments on the issue." -msgstr "" +msgstr "Ви вмикаєте конфіденційність. Це означає що лише члени команди рівня репортер або вище матимуть змогу бачити та залишати коментарі для цієї проблеми." msgid "connecting" msgstr "з'єднання" @@ -8614,23 +8955,6 @@ msgstr[3] "днів" msgid "deploy token" msgstr "токен для розгортання" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "виявлено %d виправлену вразливість" -msgstr[1] "виявлено %d виправлених вразливостей" -msgstr[2] "виявлено %d виправлених вразливостей" -msgstr[3] "виявлено %d виправлених вразливостей" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "виявлено %d нову вразливість" -msgstr[1] "виявлено %d нових вразливостей" -msgstr[2] "виявлено %d нових вразливостей" -msgstr[3] "виявлено %d нових вразливостей" - -msgid "detected no vulnerabilities" -msgstr "не виявило вразливостей" - msgid "disabled" msgstr "вимкнено" @@ -8660,10 +8984,10 @@ msgstr "імпорт" msgid "instance completed" msgid_plural "instances completed" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "завершений інстанс" +msgstr[1] "завершені інстанси" +msgstr[2] "завершених інстансів" +msgstr[3] "завершених інстансів" msgid "is invalid because there is downstream lock" msgstr "неправильний через наявність блокувань на нижчих рівнях" @@ -8681,7 +9005,7 @@ msgid "latest version" msgstr "остання версія" msgid "license management" -msgstr "" +msgstr "керувати ліцензіями" msgid "locked by %{path_lock_user_name} %{created_at}" msgstr "заблоковано %{path_lock_user_name} %{created_at}" @@ -8715,7 +9039,7 @@ msgid "mrWidget|An error occured while removing your approval." msgstr "Під час видалення вашого затвердження сталася помилка." msgid "mrWidget|An error occured while retrieving approval data for this merge request." -msgstr "" +msgstr "Помилка при отриманні даних про затвердження для цього запиту на злиття." msgid "mrWidget|An error occurred while submitting your approval." msgstr "Помилка при обробці вашого затвердження." @@ -8911,6 +9235,9 @@ msgstr "Запит на злиття в процесі виконання" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "Цей проект заархівований, доступ до запису було відключено" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "Ви можете прийняти цей запит на злиття вручну за допомогою" @@ -8929,6 +9256,9 @@ msgstr "в" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "буде злито автоматично, коли конвеєр завершиться успішно" +msgid "n/a" +msgstr "н/д" + msgid "new merge request" msgstr "Новий запит на злиття" @@ -8988,6 +9318,9 @@ msgstr "цей документ" msgid "to help your contributors communicate effectively!" msgstr "щоб допомогти вашим контриб’юторам ефективно спілкуватися!" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "ім'я користувача" diff --git a/locale/zh_CN/gitlab.po b/locale/zh_CN/gitlab.po index 5f72eee83d8..9629a63e976 100644 --- a/locale/zh_CN/gitlab.po +++ b/locale/zh_CN/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:33\n" +"PO-Revision-Date: 2018-10-02 11:46\n" msgid " Status" msgstr "状态" @@ -107,6 +107,9 @@ msgstr "%{firstLabel} +%{labelCount} 更多" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "%{group_docs_link_start}群组%{group_docs_link_end} 允许您管理、协作多个项目。群组的成员可以访问群组下的所有项目。" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "%{issuableType} 将被删除!您确定吗?" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} 已开始" @@ -148,25 +151,15 @@ msgstr "%{text}可用" msgid "%{title} changes" msgstr "%{title}更改" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "%{type}检测到 %{vulnerabilityCount} 个已修复的漏洞" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "%{type}检测到 %{vulnerabilityCount} 个新漏洞" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type}检测到%{vulnerabilityCount}个漏洞" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "%{type} 检测到源分支的 %{vulnerabilityCount} 个漏洞" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged}个未暂存的更改及%{staged}个已暂存的更改" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "%{usage_ping_link_start}了解更多%{usage_ping_link_end}关于GitLab Inc.的共享信息。" + +msgid "+ %{count} more" +msgstr "+ 其余 %{count} 项" + msgid "+ %{moreCount} more" msgstr "+ 其余 %{moreCount} 项" @@ -280,6 +273,12 @@ msgstr "Runner是一个执行任务的进程。您可以根据需要配置任意 msgid "A collection of graphs regarding Continuous Integration" msgstr "持续集成数据图" +msgid "A default branch cannot be chosen for an empty project." +msgstr "无法为空项目选择默认分支。" + +msgid "A deleted user" +msgstr "已删除的用户" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "将在派生(fork)项目中中创建一个新的分支, 并开启一个新的合并请求。" @@ -322,6 +321,9 @@ msgstr "访问令牌" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "拒绝访问!请核查您是否有权限将部署密钥添加到此仓库。" +msgid "Access expiration date" +msgstr "访问到期日期" + msgid "Access to '%{classification_label}' not allowed" msgstr "不允许访问%{classification_label}" @@ -361,15 +363,15 @@ msgstr "添加组 Webhooks 和 GitLab 企业版。" msgid "Add Kubernetes cluster" msgstr "添加 Kubernetes 集群" -msgid "Add License" -msgstr "添加许可证" - msgid "Add Readme" msgstr "添加自述文件" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "添加包含在所有电子邮件中的附加文本。 长度不超过%{character_limit} 字符" +msgid "Add license" +msgstr "添加许可证" + msgid "Add new application" msgstr "新建应用" @@ -388,6 +390,9 @@ msgstr "向群组添加用户" msgid "Add users to group" msgstr "将用户加入群组" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "当前GitLab实例禁止添加新应用程序。请联系您的GitLab管理员以获得相关权限。" + msgid "Additional text" msgstr "附加文本" @@ -401,10 +406,10 @@ msgid "Admin area" msgstr "管理中心" msgid "AdminArea| You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." -msgstr "您即将永久删除用户 %{username}。该用户的问题、合并请求以及链接到该用户的群组将被转移到系统的“Ghost用户”。为避免数据丢失,建议您使用 %{strong_start}禁用用户%{strong_end} 功能。一旦您 %{strong_start}删除用户%{strong_end},将无法撤消或恢复。" +msgstr "您即将永久删除用户 %{username}。该用户的议题、合并请求以及链接到该用户的群组将被转移到系统的“Ghost用户”。为避免数据丢失,建议您使用 %{strong_start}禁用用户%{strong_end} 功能。一旦您 %{strong_start}删除用户%{strong_end},将无法撤消或恢复。" msgid "AdminArea| You are about to permanently delete the user %{username}. This will delete all of the issues, merge requests, and groups linked to them. To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered." -msgstr "您即将永久删除用户 %{username}。此操作会删除该用户的所有问题、合并请求以及链接到该用户的群组。为避免数据丢失,建议您使用 %{strong_start}禁用用户%{strong_end} 功能。一旦您 %{strong_start}删除用户%{strong_end},将无法撤消或恢复。" +msgstr "您即将永久删除用户 %{username}。此操作会删除该用户的所有议题、合并请求以及链接到该用户的群组。为避免数据丢失,建议您使用 %{strong_start}禁用用户%{strong_end} 功能。一旦您 %{strong_start}删除用户%{strong_end},将无法撤消或恢复。" msgid "AdminArea|Stop all jobs" msgstr "停止所有作业" @@ -419,7 +424,7 @@ msgid "AdminArea|Stopping jobs failed" msgstr "停止作业失败" msgid "AdminArea|You’re about to stop all jobs.This will halt all current jobs that are running." -msgstr "您即将停止所有作业。所有正在运行的都会被停止。" +msgstr "您即将停止所有作业。这会中断并结束所有正在运行的作业。" msgid "AdminHealthPageLink|health page" msgstr "运行状况页面" @@ -578,19 +583,19 @@ msgid "An error occurred while fetching sidebar data" msgstr "获取侧边栏数据时发生错误" msgid "An error occurred while fetching stages." -msgstr "" +msgstr "获取阶段时发生错误" msgid "An error occurred while fetching the job log." -msgstr "" +msgstr "获取作业日志时发生错误。" msgid "An error occurred while fetching the job." -msgstr "" +msgstr "获取作业详情时发生错误" msgid "An error occurred while fetching the jobs." -msgstr "" +msgstr "获取作业列表时发生错误" msgid "An error occurred while fetching the pipeline." -msgstr "获取流水线时出错" +msgstr "获取流水线时发生错误" msgid "An error occurred while getting projects" msgstr "获取项目时发生错误" @@ -685,6 +690,9 @@ msgstr "四月" msgid "Archived project! Repository and other project resources are read-only" msgstr "已归档项目!仓库和其他项目资源均为只读" +msgid "Archived projects" +msgstr "已存档项目" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "确定要删除此流水线计划吗?" @@ -713,7 +721,7 @@ msgid "Are you sure?" msgstr "确定吗?" msgid "Artifact ID" -msgstr "" +msgstr "作业产物ID" msgid "Artifacts" msgstr "产物" @@ -844,6 +852,9 @@ msgstr "将根据预定义的 CI/CD 配置自动构建、测试和部署应用 msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "想了解更多请访问 %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "Auto DevOps流水线已启用。如果未找到CI配置文件,将使用该流水线。 %{more_information_link}" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "如果当前项目%{link_to_auto_devops_settings}, 可以自动的构建和测试应用。如果已%{link_to_add_kubernetes_cluster},则也可以实现自动部署。" @@ -880,9 +891,6 @@ msgstr "后台作业" msgid "Background color" msgstr "背景颜色" -msgid "Background jobs" -msgstr "后台作业" - msgid "Badges" msgstr "徽章" @@ -923,7 +931,7 @@ msgid "Badges|No image to preview" msgstr "无图像可预览" msgid "Badges|Please fill in a valid URL" -msgstr "" +msgstr "请输入正确的 URL" msgid "Badges|Project Badge" msgstr "项目徽章" @@ -959,7 +967,7 @@ msgid "Badges|Your badges" msgstr "您的徽章" msgid "Badges|e.g. %{exampleUrl}" -msgstr "" +msgstr "例如 %{exampleUrl}" msgid "Begin with the selected commit" msgstr "从选定的提交开始" @@ -1251,7 +1259,7 @@ msgid "CICD|Continuous deployment to production" msgstr "持续部署到生产环境" msgid "CICD|Default to Auto DevOps pipeline" -msgstr "" +msgstr "默认为Auto DevOps流水线" msgid "CICD|Deployment strategy" msgstr "部署策略" @@ -1269,13 +1277,13 @@ msgid "CICD|Learn more about Auto DevOps" msgstr "了解更多Auto DevOps的相关信息" msgid "CICD|The Auto DevOps pipeline will run if no alternative CI configuration file is found." -msgstr "" +msgstr "在未找到备用CI配置文件时使用Auto DevOps流水线。" msgid "CICD|You need to specify a domain if you want to use Auto Review Apps and Auto Deploy stages." msgstr "如需使用自动化应用程序评审和自动部署,请指定域名。" msgid "CICD|instance enabled" -msgstr "" +msgstr "已启用的实例" msgid "Callback URL" msgstr "回调 URL" @@ -1364,6 +1372,12 @@ msgstr "选择文件 ……" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "选择分支/标签(例如%{master})或输入提交(例如%{sha})以查看更改内容或创建合并请求。" +msgid "Choose a template..." +msgstr "选择模板..." + +msgid "Choose a type..." +msgstr "选择类型..." + msgid "Choose any color." msgstr "选择任何颜色。" @@ -1526,6 +1540,9 @@ msgstr "克隆仓库" msgid "Close" msgstr "关闭" +msgid "Close epic" +msgstr "关闭史诗故事" + msgid "Closed" msgstr "已关闭" @@ -1536,7 +1553,7 @@ msgid "ClusterIntegration|%{appList} was successfully installed on your Kubernet msgstr "%{appList} 已成功安装到Kubernetes集群上" msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which may incur additional costs depending on the hosting provider your Kubernetes cluster is installed on. If you are using Google Kubernetes Engine, you can %{pricingLink}." -msgstr "" +msgstr "%{boldNotice} 这将添加一些额外的资源,如负载均衡器,这可能会产生额外的成本,具体取决于您安装Kubernetes集群的托管服务提供商。如果您使用的是Google Kubernetes Engine,则可以 %{pricingLink}。" msgid "ClusterIntegration|API URL" msgstr "API地址" @@ -1548,7 +1565,7 @@ msgid "ClusterIntegration|Advanced options on this Kubernetes cluster's integrat msgstr "Kubernetes集群集成的高级选项" msgid "ClusterIntegration|After installing Ingress, you will need to point your wildcard DNS at the generated external IP address in order to view your app after it is deployed. %{ingressHelpLink}" -msgstr "" +msgstr "安装Ingress后,您需要在生成的外部IP地址上指向DNS,以便在部署后查看您的应用程序。 %{ingressHelpLink}" msgid "ClusterIntegration|An error occured while trying to fetch project zones: %{error}" msgstr "尝试获取项目地域时发生错误:%{error}" @@ -1557,10 +1574,10 @@ msgid "ClusterIntegration|An error occured while trying to fetch your projects: msgstr "尝试获取您的项目时发生错误:%{error}" msgid "ClusterIntegration|An error occured while trying to fetch zone machine types: %{error}" -msgstr "" +msgstr "尝试获取设备类型时发生错误:%{error}" msgid "ClusterIntegration|An error occurred when trying to contact the Google Cloud API. Please try again later." -msgstr "" +msgstr "尝试联系Google Cloud API时发生错误。请稍后再试。" msgid "ClusterIntegration|Applications" msgstr "应用程序" @@ -1574,11 +1591,11 @@ msgstr "CA证书" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "证书授权包(PEM格式)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "请选择使用此Kubernetes集群的环境。" +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "选择要在 Kubernetes 群集上安装的应用程序。安装以下任何一个应用前需要先安装Helm Tiller。" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "控制Kubernetes集群与GitLab集成方式" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "请选择使用此Kubernetes群集的环境。" msgid "ClusterIntegration|Copy API URL" msgstr "复制API地址" @@ -1604,6 +1621,12 @@ msgstr "创建Kubernetes集群" msgid "ClusterIntegration|Did you know?" msgstr "你是否了解?" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "启用或禁用GitLab与Kubernetes群集的连接。" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "如果使用基于角色的访问控制(RBAC),请启用此设置。" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "输入Kubernetes集群的详细信息" @@ -1629,7 +1652,7 @@ msgid "ClusterIntegration|GitLab Runner" msgstr "GitLab Runner" msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." -msgstr "" +msgstr "GitLab Runner连接到该项目的存储库并执行CI / CD作业,将结果推回,并部署应用程序到生产环境。" msgid "ClusterIntegration|Google Cloud Platform project" msgstr "Google 云平台项目" @@ -1644,7 +1667,7 @@ msgid "ClusterIntegration|Helm Tiller" msgstr "Helm Tiller" msgid "ClusterIntegration|Helm streamlines installing and managing Kubernetes applications. Tiller runs inside of your Kubernetes Cluster, and manages releases of your charts." -msgstr "" +msgstr "Helm简化了Kubernetes应用程序的安装和管理。 Tiller在您的Kubernetes集群内部运行,并管理图表的发布。" msgid "ClusterIntegration|Hide" msgstr "隐藏" @@ -1662,7 +1685,7 @@ msgid "ClusterIntegration|Ingress IP Address" msgstr "Ingress IP地址" msgid "ClusterIntegration|Ingress gives you a way to route requests to services based on the request host or path, centralizing a number of services into a single entrypoint." -msgstr "" +msgstr "Ingress为您提供了一种基于请求主机或路径将请求路由到服务的方法,将多个服务集中到一个入口点。" msgid "ClusterIntegration|Install" msgstr "安装" @@ -1670,9 +1693,6 @@ msgstr "安装" msgid "ClusterIntegration|Install Prometheus" msgstr "安装Prometheus" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "已安装" @@ -1692,7 +1712,7 @@ msgid "ClusterIntegration|JupyterHub" msgstr "JupyterHub" msgid "ClusterIntegration|JupyterHub, a multi-user Hub, spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server. JupyterHub can be used to serve notebooks to a class of students, a corporate data science group, or a scientific research group." -msgstr "" +msgstr "JupyterHub是一个多用户Hub,它生成,管理和代理单用户 Jupyter笔记本服务器的多个实例。 JupyterHub可用于为一类学生,企业数据科学小组或科研小组提供笔记本电脑。" msgid "ClusterIntegration|Kubernetes cluster" msgstr "Kubernetes 集群" @@ -1706,15 +1726,6 @@ msgstr "Kubernetes集群运行状况" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Kubernetes集群集成" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "此项目已禁用 Kubernetes 集群集成。" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "此项目已启用 Kubernetes 集群集成。" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "此项目已启用 Kubernetes 集群集成。禁用此集成不会影响 Kubernetes 集群本身, 只会暂时关闭 GitLab 与其连接。" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "正在Google Kubernetes Engine上创建Kubernetes集群..." @@ -1739,12 +1750,6 @@ msgstr "进一步了解 %{help_link_start}Kubernetes%{help_link_end}。" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "进一步了解 %{help_link_start}地域%{help_link_end}。" -msgid "ClusterIntegration|Learn more about environments" -msgstr "进一步了解有关环境的信息" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "进一步了解安全相关配置" - msgid "ClusterIntegration|Machine type" msgstr "机器类型" @@ -1788,7 +1793,7 @@ msgid "ClusterIntegration|Please make sure that your Google account meets the fo msgstr "请确保您的 Google 帐户符合以下要求:" msgid "ClusterIntegration|Point a wildcard DNS to this generated IP address in order to access your application after it has been deployed." -msgstr "" +msgstr "将DNS指向生成的这个IP地址,以便在部署后访问您的应用程序。" msgid "ClusterIntegration|Project namespace" msgstr "项目命名空间" @@ -1800,7 +1805,10 @@ msgid "ClusterIntegration|Prometheus" msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." -msgstr "" +msgstr "Prometheus是一个开源监控系统,其中 %{gitlabIntegrationLink} 用于监控已部署的应用程序。" + +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "启用 RBAC 的群集 (实验功能)" msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "请阅读关于Kubernetes集群集成的%{link_to_help_page}。" @@ -1815,7 +1823,7 @@ msgid "ClusterIntegration|Remove this Kubernetes cluster's configuration from th msgstr "从当前项目中删除此Kubernetes集群的配置。该操作并不会删除实际Kubernetes集群。" msgid "ClusterIntegration|Replace this with your own hostname if you want. If you do so, point hostname to Ingress IP Address from above." -msgstr "" +msgstr "如果需要,可将其替换为您自己的主机名。如果这样做,请将主机名从上级指向Ingress IP地址。" msgid "ClusterIntegration|Request to begin installing failed" msgstr "请求安装失败" @@ -1832,9 +1840,6 @@ msgstr "搜索项目" msgid "ClusterIntegration|Search zones" msgstr "搜索地域" -msgid "ClusterIntegration|Security" -msgstr "安全" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "查看并编辑Kubernetes集群的详细信息" @@ -1872,14 +1877,17 @@ msgid "ClusterIntegration|Something went wrong while installing %{title}" msgstr "安装 %{title} 时发生故障" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." -msgstr "" +msgstr "IP地址正在分配中。如果花费时间过长,请检查您的Kubernetes集群或谷歌Kubernetes引擎(GKE) 上的配额。" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "默认集群配置提供了成功构建和部署容器化应用所需的大量相关功能。" +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "默认集群配置提供了成功构建和部署容器化应用所需的众多相关功能。" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "该帐户需具备在下面指定的%{link_to_container_project}中创建 Kubernetes集群的权限" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "此选项允许您在启用RBAC的群集上安装应用程序。" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "开关Kubernetes 集群" @@ -1898,6 +1906,9 @@ msgstr "无法验证您在 GCP 上的某个项目是否启用了计费。请重 msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "使用与此项目关联的Kubernetes集群,可以方便地使用审阅应用,部署应用程序,运行流水线等等。" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "在安装以下应用程序之前,必须先安装Helm Tiller" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "您的帐户必须拥有%{link_to_kubernetes_engine}" @@ -1916,9 +1927,6 @@ msgstr "文档" msgid "ClusterIntegration|help page" msgstr "帮助页面" -msgid "ClusterIntegration|installing applications" -msgstr "安装应用程序" - msgid "ClusterIntegration|meets the requirements" msgstr "符合要求" @@ -1928,11 +1936,14 @@ msgstr "正确配置" msgid "ClusterIntegration|sign up" msgstr "注册" +msgid "Code owners" +msgstr "代码所有者" + msgid "Cohorts" -msgstr "留存表" +msgstr "世代表" msgid "Collapse" -msgstr "收起" +msgstr "折叠" msgid "Collapse sidebar" msgstr "折叠侧边栏" @@ -1975,6 +1986,9 @@ msgstr "提交" msgid "CommitMessage|Add %{file_name}" msgstr "添加 %{file_name}" +msgid "CommitWidget|authored" +msgstr "作者" + msgid "Commits" msgstr "提交" @@ -2047,24 +2061,18 @@ msgstr "保密性" msgid "Configure Gitaly timeouts." msgstr "配置Gitaly超时时间。" -msgid "Configure Sidekiq job throttling." -msgstr "配置 Sidekiq 作业限制。" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "在仓库上配置自动git检查和仓库整理。" msgid "Configure limits for web and API requests." msgstr "配置 web 和 API 请求限制。" -msgid "Configure push and pull mirrors." -msgstr "配置Push及Pull镜像" +msgid "Configure push mirrors." +msgstr "设置推送的镜像。" msgid "Configure storage path and circuit breaker settings." msgstr "配置存储路径及断路器设置。" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "配置用户创建新帐户的方式。" @@ -2078,7 +2086,7 @@ msgid "Connect repositories from GitHub" msgstr "从 Github 中导入代码仓库" msgid "Connect your external repositories, and CI/CD pipelines will run for new commits. A GitLab project will be created with only CI/CD features enabled." -msgstr "连接外部仓库后,新提交将会启动CI/CD流水线。仅启用CI/CD功能的GitLab项目将会被创建。" +msgstr "连接外部仓库后,新提交将会启动CI/CD流水线。仅启用CI/CD功能的Gitlab项目将会被创建。" msgid "Connecting..." msgstr "正在连接..." @@ -2149,6 +2157,9 @@ msgstr "贡献" msgid "Contribution guide" msgstr "贡献指南" +msgid "Contributions for %{calendar_date}" +msgstr "%{calendar_date}的贡献" + msgid "Contributions per group member" msgstr "每名群组成员的贡献" @@ -2182,6 +2193,15 @@ msgstr "控制此Geo节点的校验操作的最大并发性" msgid "ConvDev Index" msgstr "ConvDev指数" +msgid "Copy %{protocol} clone URL" +msgstr "复制 %{protocol} 克隆URL" + +msgid "Copy HTTPS clone URL" +msgstr "复制HTTPS克隆URL" + +msgid "Copy SSH clone URL" +msgstr "复制SSH克隆URL" + msgid "Copy SSH public key to clipboard" msgstr "将 SSH 公钥复制到剪贴板" @@ -2287,9 +2307,6 @@ msgstr "创建..." msgid "Create project label" msgstr "创建项目标记" -msgid "CreateNewFork|Fork" -msgstr "派生" - msgid "CreateTag|Tag" msgstr "标签" @@ -2407,6 +2424,9 @@ msgstr "十二月" msgid "Decline and sign out" msgstr "拒绝并退出" +msgid "Default Branch" +msgstr "默认分支" + msgid "Default classification label" msgstr "默认分类标记" @@ -2609,9 +2629,21 @@ msgstr "在此项目中禁用" msgid "Disable group Runners" msgstr "禁用群组Runner" +msgid "Discard" +msgstr "放弃" + +msgid "Discard all changes" +msgstr "放弃所有更改" + +msgid "Discard all unstaged changes?" +msgstr "放弃所有未暂存的修改?" + msgid "Discard changes" msgstr "放弃更改" +msgid "Discard changes to %{path}?" +msgstr "放弃对 %{path} 的更改吗?" + msgid "Discard draft" msgstr "取消" @@ -2763,7 +2795,7 @@ msgid "Enable or disable the Pseudonymizer data collection." msgstr "启用或禁用匿名化数据收集." msgid "Enable or disable version check and usage ping." -msgstr "启用或禁用版本检查及使用ping。" +msgstr "启用或禁用版本检查及使用情况检测(usage ping)。" msgid "Enable reCAPTCHA or Akismet and set IP limits." msgstr "启用reCAPTCHA或Akismet并设置IP限制。" @@ -2771,6 +2803,12 @@ msgstr "启用reCAPTCHA或Akismet并设置IP限制。" msgid "Enable the Performance Bar for a given group." msgstr "对指定群组启用性能栏。" +msgid "Enable usage ping" +msgstr "启用使用情况检测(usage ping)" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "启用使用情况检测(usage ping)以从功能角度总体上了解您如何使用GitLab。" + msgid "Enabled" msgstr "已启用" @@ -2778,7 +2816,7 @@ msgid "Ends at (UTC)" msgstr "结束于(UTC)" msgid "Enter in your Bitbucket Server URL and personal access token below" -msgstr "" +msgstr "输入您的Bitbucket服务器URL和个人访问令牌" msgid "Enter the issue description" msgstr "输入议题描述" @@ -2841,7 +2879,7 @@ msgid "Environments|No pod name has been specified" msgstr "未指定pod名称" msgid "Environments|Note that this action will stop the environment, but it will %{emphasisStart}not%{emphasisEnd} have an effect on any existing deployment due to no “stop environment action” being defined in the %{ciConfigLinkStart}.gitlab-ci.yml%{ciConfigLinkEnd} file." -msgstr "" +msgstr "注意:继续操作将终止当前环境!由于未在%{ciConfigLinkStart}.gitlab-ci.yml%{ciConfigLinkEnd}文件中定义“终止环境操作”,因此%{emphasisStart}不会%{emphasisEnd}影响已经存在的部署。" msgid "Environments|Note that this action will stop the environment, but it will %{emphasis_start}not%{emphasis_end} have an effect on any existing deployment due to no “stop environment action” being defined in the %{ci_config_link_start}.gitlab-ci.yml%{ci_config_link_end} file." msgstr "注意:继续操作将终止当前环境!由于未在%{ci_config_link_start}.gitlab-ci.yml%{ci_config_link_end}文件中定义“终止环境操作”,因此%{emphasis_start}不会%{emphasis_end}影响已经存在的部署。" @@ -2877,7 +2915,7 @@ msgid "Environments|You don't have any environments right now." msgstr "当前未设置环境" msgid "Environments|protected" -msgstr "" +msgstr "受保护的" msgid "Epic" msgstr "史诗故事" @@ -2895,7 +2933,7 @@ msgid "Epics let you manage your portfolio of projects more efficiently and with msgstr "利用史诗故事(Epics),产品线管理会变得更轻松且更高效" msgid "Epics|An error occurred while saving %{epicDateType} date" -msgstr "" +msgstr "保存 %{epicDateType} 日期时发生错误" msgid "Epics|How can I solve this?" msgstr "我该如何解决该问题?" @@ -2904,13 +2942,13 @@ msgid "Epics|More information" msgstr "更多信息" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." -msgstr "" +msgstr "这些日期会影响史诗故事在路线图中的显示方式。里程碑日期来自于史诗故事中的议题所属的里程碑。您还可以设置固定日期或完全删除它们。" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." -msgstr "" +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." +msgstr "如需根据里程碑来安排史诗故事的 %{epicDateType} 日期,请为史诗故事中的任一议题指定带有 %{epicDateType} 日期的里程碑。" -msgid "Epics|finish" -msgstr "完成" +msgid "Epics|due" +msgstr "到期" msgid "Epics|start" msgstr "开始" @@ -2937,7 +2975,7 @@ msgid "Error fetching refs" msgstr "获取refs时出错。" msgid "Error fetching usage ping data." -msgstr "获取使用情况(usage ping) 数据时出错。" +msgstr "获取使用情况(usage ping)数据时出错。" msgid "Error loading branch data. Please try again." msgstr "加载分支数据失败,请重试。" @@ -3020,6 +3058,9 @@ msgstr "展开全部" msgid "Expand sidebar" msgstr "展开侧边栏" +msgid "Expiration date" +msgstr "到期时间" + msgid "Explore" msgstr "探索" @@ -3101,6 +3142,9 @@ msgstr "二月" msgid "Fields on this page are now uneditable, you can configure" msgstr "当前页面上的字段不可编辑,可以配置" +msgid "File templates" +msgstr "文件模板" + msgid "Files" msgstr "文件" @@ -3113,9 +3157,18 @@ msgstr "填写下面的字段,启用%{enable_label},然后 msgid "Filter" msgstr "筛选器" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "按提交消息过滤" +msgid "Filter..." +msgstr "过滤..." + msgid "Find by path" msgstr "按路径查找" @@ -3143,8 +3196,8 @@ msgstr "推送者:" msgid "Fixed date" msgstr "修复日期" -msgid "Fixed finish date" -msgstr "修复完成日期" +msgid "Fixed due date" +msgstr "固定截止日期" msgid "Fixed start date" msgstr "修复开始日期" @@ -3182,16 +3235,15 @@ msgstr "对于内部项目,任何已登录的用户都可以查看流水线并 msgid "For more information, go to the " msgstr "如需了解详细信息,请参阅" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "欲了解更多相关信息,请参阅 %{deactivating_usage_ping_link_start}使用情况检测(usage ping)%{deactivating_usage_ping_link_end}的文档。" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "对于私有项目,任何成员(访客或更高级别)都可以查看流水线并访问作业详情(输出日志和工件)" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "对于公共项目,任何人都可以查看流水线并访问作业详情(输出日志和工件)" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "派生" - msgid "ForkedFromProjectPath|Forked from" msgstr "派生自" @@ -3249,6 +3301,9 @@ msgstr "一般流水线" msgid "Generate a default set of labels" msgstr "生成一组默认的标记" +msgid "Geo" +msgstr "Geo" + msgid "Geo Nodes" msgstr "Geo 节点" @@ -3415,17 +3470,20 @@ msgid "GeoNodes|You have configured Geo nodes using an insecure HTTP connection. msgstr "当前Geo节点配置使用不安全的HTTP连接, 建议使用HTTPS。" msgid "Geo|%{name} is scheduled for forced re-download" -msgstr "" +msgstr "%{name} 计划强制重新下载" msgid "Geo|%{name} is scheduled for re-check" -msgstr "" +msgstr "%{name} 计划重新检查" msgid "Geo|%{name} is scheduled for re-sync" -msgstr "" +msgstr "%{name} 已计划重新同步" msgid "Geo|All projects" msgstr "所有项目" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "错误消息" @@ -3439,7 +3497,7 @@ msgid "Geo|Groups to synchronize" msgstr "需同步的群组" msgid "Geo|In sync" -msgstr "" +msgstr "已同步" msgid "Geo|Last successful sync" msgstr "最近一次成功的同步" @@ -3468,6 +3526,9 @@ msgstr "待同步" msgid "Geo|Pending verification" msgstr "待验证" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "指定群组中的项目" @@ -3480,6 +3541,9 @@ msgstr "重新检查" msgid "Geo|Redownload" msgstr "重新下载" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "仓库同步容量" @@ -3507,6 +3571,12 @@ msgstr "同步" msgid "Geo|Synchronization failed - %{error}" msgstr "同步失败 - %{error}" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "未知状态" @@ -3520,6 +3590,9 @@ msgid "Geo|Waiting for scheduler" msgstr "等待调度" msgid "Geo|You need a different license to use Geo replication" +msgstr "您需要不同的许可证才能使用 geo 复制" + +msgid "Get a free instance review" msgstr "" msgid "Git" @@ -3550,7 +3623,7 @@ msgid "GitLab Geo" msgstr "GitLab Geo" msgid "GitLab Group Runners can execute code for all the projects in this group." -msgstr "GitLab群组Runner可以用来运行群组内所有项目的代码。" +msgstr "Gitlab群组Runner可以用来运行群组内所有项目的代码。" msgid "GitLab Import" msgstr "GitLab导入" @@ -3600,12 +3673,6 @@ msgstr "转到" msgid "Go to %{link_to_google_takeout}." msgstr "转至 %{link_to_google_takeout}。" -msgid "Go to your fork" -msgstr "跳转到派生项目" - -msgid "GoToYourFork|Fork" -msgstr "跳转到派生项目" - msgid "Google Code import" msgstr "从Google Code导入" @@ -3666,14 +3733,14 @@ msgstr "对不起,没有搜索到任何符合条件的史诗故事" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "路线图显示了史诗故事沿着时间线的进展情况" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." -msgstr "如需查看路线图,请将计划的开始或结束日期添加到当前群组或其子组中的某个史诗故事。在月视图中,只显示上个月,本月以及接下来5个月的史诗故事– 从 %{startDate} 至 %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "如需查看路线图,请将开始或结束日期添加到当前群组或其子组中的某个史诗故事。在月视图中,只显示上个月,本月以及接下来5个月的史诗故事– 从 %{startDate} 至 %{endDate}." -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." -msgstr "如需查看路线图,请将计划的开始或结束日期添加到当前群组或其子组中的某个史诗故事。在季度视图中,只显示上个季度,本季度以及接下来4个季度的史诗故事– 从 %{startDate} 至 %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "如需查看路线图,请将开始或结束日期添加到当前群组或其子组中的某个史诗故事。在季度视图中,只显示上个季度,本季度以及接下来4个季度的史诗故事– 从 %{startDate} 至 %{endDate}." -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." -msgstr "如需查看路线图,请将计划的开始或结束日期添加到当前群组或其子组中的某个史诗故事。在周视图中,只显示上周,本周以及接下来四周的史诗故事– 从 %{startDate} 至 %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "如需查看路线图,请将开始或结束日期添加到当前群组或其子组中的某个史诗故事。在周视图中,只显示上周,本周以及接下来四周的史诗故事– 从 %{startDate} 至 %{endDate}." msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "要扩大搜索范围,请更改或删除过滤器。在月视图中,只显示上月,本月和接下来的四个月的史诗故事 – 从 %{startDate} 到 %{endDate} 。" @@ -3688,13 +3755,13 @@ msgid "GroupRoadmap|Until %{dateWord}" msgstr "直到 %{dateWord}" msgid "GroupSettings|Badges" -msgstr "" +msgstr "徽章" msgid "GroupSettings|Customize your group badges." -msgstr "" +msgstr "自定义群组徽章。" msgid "GroupSettings|Learn more about badges." -msgstr "" +msgstr "了解有关徽章的更多信息。" msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" msgstr "禁止与其他群组共享 %{group} 中的项目" @@ -3759,6 +3826,9 @@ msgstr "找不到群组" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "您可以管理群组成员的权限并访问群组中的每个项目。" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "您确定要退出群组“%{fullName}”吗?" + msgid "GroupsTree|Create a project in this group." msgstr "在此群组中创建一个项目。" @@ -3771,20 +3841,20 @@ msgstr "编辑群组" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "无法离开群组。请确保您不是唯一的所有者。" -msgid "GroupsTree|Filter by name..." -msgstr "按名称过滤..." - msgid "GroupsTree|Leave this group" msgstr "离开这个群组" msgid "GroupsTree|Loading groups" msgstr "加载群组中" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "对不起,没有搜索到任何符合的群组" +msgid "GroupsTree|No groups matched your search" +msgstr "没有搜索到任何符合的群组" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "没有任何群组或项目符合您的搜索" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "对不起,没有任何群组或项目符合您的搜索" +msgid "GroupsTree|Search by name" +msgstr "按名称搜索" msgid "Have your users email" msgstr "请让用户发送电子邮件至" @@ -3825,6 +3895,9 @@ msgstr "以下是需要添加到远程服务器的SSH公钥。有关更多信息 msgid "Hide host keys manual input" msgstr "手工输入隐藏热键" +msgid "Hide payload" +msgstr "隐藏有效数据" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "隐藏值" @@ -3848,7 +3921,7 @@ msgid "ID" msgstr "ID" msgid "IDE|Allow live previews of JavaScript projects in the Web IDE using CodeSandbox client side evaluation." -msgstr "" +msgstr "允许Web IDE中的JavaScript项目使用CodeSandbox客户端的实时预览。" msgid "IDE|Back" msgstr "返回" @@ -3988,6 +4061,9 @@ msgstr "使用GitLab 企业版议题权重带来的增强议题管理功能。" msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." msgstr "使用GitLab企业版全局搜索带来的增强搜索功能" +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 "要启用实例级分析,请要求管理员启用 %{usage_ping_link_start}使用情况检测(usage ping)%{usage_ping_link_end}。" + msgid "In the next step, you'll be able to select the projects you want to import." msgstr "继续下一步,选择想要导入的项目" @@ -4001,7 +4077,7 @@ msgid "Incompatible Project" msgstr "不兼容的项目" msgid "Indicates whether this runner can pick jobs without tags" -msgstr "" +msgstr "指示此runner是否可以选择没有标记的作业" msgid "Inline" msgstr "内联" @@ -4026,13 +4102,13 @@ msgid "Instance Statistics" msgstr "实例统计" msgid "Instance Statistics visibility" -msgstr "" +msgstr "实例统计信息可见性" msgid "Instance does not support multiple Kubernetes clusters" msgstr "实例不支持多个Kubernetes集群" msgid "Integrations" -msgstr "导入所有仓库" +msgstr "集成" msgid "Integrations Settings" msgstr "集成设置" @@ -4055,6 +4131,12 @@ msgstr "循环周期" msgid "Introducing Cycle Analytics" msgstr "周期分析简介" +msgid "Invite" +msgstr "邀请" + +msgid "Issue" +msgstr "议题" + msgid "Issue Boards" msgstr "议题看板" @@ -4094,9 +4176,6 @@ msgstr "作业已被删除" msgid "Jobs" msgstr "作业" -msgid "Job|Are you sure you want to erase this job?" -msgstr "你确定要删除该作业吗?" - msgid "Job|Browse" msgstr "浏览" @@ -4110,13 +4189,13 @@ msgid "Job|Erase job log" msgstr "删除作业日志" msgid "Job|Job artifacts" -msgstr "" +msgstr "作业产物" msgid "Job|Job has been erased" msgstr "作业已被删除" msgid "Job|Job has been erased by" -msgstr "" +msgstr "作业已被删除" msgid "Job|Keep" msgstr "保持" @@ -4131,13 +4210,13 @@ msgid "Job|Show complete raw" msgstr "显示完整源" msgid "Job|The artifacts were removed" -msgstr "" +msgstr "作业产物已被删除" -msgid "Job|The artifacts will be removed" -msgstr "" +msgid "Job|The artifacts will be removed in" +msgstr "作业产物将被删除于" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." -msgstr "" +msgstr "此作业已停止,因为没有任何在线的runner被分配给该项目。" msgid "Jul" msgstr "七" @@ -4227,7 +4306,7 @@ 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 "" +msgstr "提升 %{labelTitle} 将使其可用于 %{groupName} 内的所有项目。现有的同名项目标记将被合并。该操作不可撤销。" msgid "Last %d day" msgid_plural "Last %d days" @@ -4239,6 +4318,9 @@ msgstr "最新流水线" msgid "Last commit" msgstr "最后提交" +msgid "Last contact" +msgstr "最后联系" + msgid "Last edited %{date}" msgstr "最后修改 %{date}" @@ -4321,7 +4403,7 @@ msgid "LicenseManagement|License details" msgstr "许可证信息" msgid "LicenseManagement|Manage approved and blacklisted licenses for this project." -msgstr "" +msgstr "管理此项目的已批准和列入黑名单的许可证。" msgid "LicenseManagement|Packages" msgstr "包" @@ -4333,7 +4415,7 @@ msgid "LicenseManagement|Remove license?" msgstr "删除许可证?" msgid "LicenseManagement|There are currently no approved or blacklisted licenses in this project." -msgstr "" +msgstr "此项目目前没有已批准或列入黑名单的许可证。" msgid "LicenseManagement|URL" msgstr "URL" @@ -4388,7 +4470,7 @@ msgid "Lock not found" msgstr "未找到锁" msgid "Lock this %{issuableDisplayName}? Only project members will be able to comment." -msgstr "" +msgstr "锁定%{issuableDisplayName}?只有 项目成员 可以发表评论。" msgid "Lock to current projects" msgstr "锁定到当前项目" @@ -4418,7 +4500,7 @@ msgid "Manage Git repositories with fine-grained access controls that keep your msgstr "通过细粒度的访问控制来管理Git存储库,确保您的代码安全。执行代码审查并通过合并请求的实现更紧密的开发协作。每个项目还可以配置议题跟踪和wiki。" msgid "Manage Web IDE features" -msgstr "" +msgstr "管理Web IDE功能" msgid "Manage access" msgstr "管理权限" @@ -4475,16 +4557,19 @@ msgid "Markdown enabled" msgstr "支持Markdown格式" msgid "Maven Metadata" -msgstr "" +msgstr "Maven 元数据" msgid "Maven package" -msgstr "" +msgstr "Maven 包" + +msgid "Max access level" +msgstr "最高访问级别" msgid "Maximum git storage failures" msgstr "最大 git 存储失败次数" msgid "Maximum job timeout" -msgstr "" +msgstr "最大作业超时" msgid "May" msgstr "五" @@ -4534,9 +4619,6 @@ msgstr "保存评论失败" msgid "MergeRequests|Toggle comments for this file" msgstr "切换此文件的讨论" -msgid "MergeRequests|Updating discussions failed" -msgstr "更新讨论失败" - msgid "MergeRequests|View file @ %{commitId}" msgstr "查看文件 @ %{commitId}" @@ -4544,7 +4626,7 @@ msgid "MergeRequests|View replaced file @ %{commitId}" msgstr "查看已替换文件 @ %{commitId}" msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}" -msgstr "" +msgstr " %{paragraphStart}将描述更改为 %{descriptionChangedTimes} 次 %{timeDifferenceMinutes}%{paragraphEnd}" msgid "Merged" msgstr "已合并" @@ -4561,6 +4643,9 @@ msgstr "指标 - Influx" msgid "Metrics - Prometheus" msgstr "指标 - Prometheus" +msgid "Metrics and profiling" +msgstr "指标和分析" + msgid "Metrics|Business" msgstr "业务" @@ -4664,22 +4749,22 @@ msgid "Milestone" msgstr "里程碑" msgid "Milestone lists not available with your current license" -msgstr "" +msgstr "当前许可证无法使用里程碑列表" msgid "Milestone lists show all issues from the selected milestone." -msgstr "" +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 "" +msgstr "您即将永久删除里程碑 %{milestoneTitle} 并将其从 %{issuesWithCount} 和 %{mergeRequestsWithCount} 删除。删除后,无法撤消或恢复。" msgid "Milestones| You’re about to permanently delete the milestone %{milestoneTitle}. This milestone is not currently used in any issues or merge requests." -msgstr "" +msgstr "您即将永久删除里程碑 %{milestoneTitle}。此里程碑当前未用于任何议题或合并请求。" msgid "Milestones|

%{milestonePromotion}

%{finalWarning}" -msgstr "" +msgstr "

%{milestonePromotion}

%{finalWarning}" msgid "Milestones|Delete milestone" msgstr "删除里程碑" @@ -4700,16 +4785,16 @@ 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 "" +msgstr "提升 %{milestone} 将使其可用于 %{groupName} 内的所有项目。现有的同名项目里程碑将被合并。 " msgid "Milestones|This action cannot be reversed." msgstr "该操作无法撤销。" msgid "Mirror a repository" -msgstr "" +msgstr "镜像存储库" msgid "Mirror direction" -msgstr "" +msgstr "镜像方向" msgid "Mirror repository" msgstr "镜像存储库" @@ -4718,10 +4803,10 @@ msgid "Mirror user" msgstr "镜像用户" msgid "Mirrored repositories" -msgstr "" +msgstr "镜像的存储库" msgid "Mirroring repositories" -msgstr "" +msgstr "镜像存储库" msgid "MissingSSHKeyWarningLink|add an SSH key" msgstr "新建 SSH 公钥" @@ -4741,9 +4826,6 @@ msgstr "月" msgid "More" msgstr "更多" -msgid "More actions" -msgstr "更多操作" - msgid "More info" msgstr "更多信息" @@ -4895,6 +4977,9 @@ msgstr "无法连接到Gitaly服务器,请检查相关日志!" msgid "No container images stored for this project. Add one by following the instructions above." msgstr "此项目当前未存储容器镜像。如需使用,请参照上述说明新建容器镜像。" +msgid "No contributions were found" +msgstr "未找到任何贡献者" + msgid "No due date" msgstr "无截止日期" @@ -4916,6 +5001,9 @@ msgstr "所选时间段没有议题。" msgid "No labels with such name or description" msgstr "没有具有此类名称或描述的标记" +msgid "No license. All rights reserved" +msgstr "没有许可证。 所有权保留" + msgid "No merge requests for the selected time period." msgstr "所选时间段没有合并请求。" @@ -4929,7 +5017,7 @@ msgid "No other labels with such name or description" msgstr "没有其他具有此类名称或描述的标记" msgid "No packages stored for this project." -msgstr "" +msgstr "没有为此项目存储的包。" msgid "No prioritised labels with such name or description" msgstr "没有具有此类名称或描述的优先标记" @@ -4943,6 +5031,9 @@ msgstr "所选时间段没有推送。" msgid "No repository" msgstr "没有仓库" +msgid "No runners found" +msgstr "没有发现Runner" + msgid "No schedules" msgstr "没有计划" @@ -4959,7 +5050,7 @@ msgid "Not all comments are displayed because you're comparing two versions of t msgstr "并非所有注释都会显示,因为您正在比较两个版本的差异。" msgid "Not all comments are displayed because you're viewing an old version of the diff." -msgstr "" +msgstr "并非所有注释都显示,因为您正在查看旧版本的差异。" msgid "Not allowed to merge" msgstr "不允许合并" @@ -4979,6 +5070,9 @@ msgstr "非机密" msgid "Not enough data" msgstr "数据不足" +msgid "Not now" +msgstr "暂不" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "请注意,master分支自动受保护。%{link_to_protected_branches}" @@ -5013,7 +5107,7 @@ msgid "NotificationEvent|Merge merge request" msgstr "合并请求被合并" msgid "NotificationEvent|New epic" -msgstr "" +msgstr "新建史诗" msgid "NotificationEvent|New issue" msgstr "新建议题" @@ -5107,7 +5201,7 @@ msgid "Only comments from the following commit are shown below" msgstr "下面仅显示来自以下提交的评论" msgid "Only mirror protected branches" -msgstr "" +msgstr "只镜像受保护的分支" msgid "Only project members can comment." msgstr "只有项目成员可以发表评论。" @@ -5218,13 +5312,13 @@ msgid "Pause" msgstr "暂停" msgid "Paused Runners don't accept new jobs" -msgstr "" +msgstr "暂停的 Runner 不接受新作业" msgid "Pending" msgstr "等待中" msgid "People without permission will never get a notification and won't be able to comment." -msgstr "" +msgstr "未经许可的用户将无法收到通知,也无法评论。" msgid "Per job. If a job passes this threshold, it will be marked as failed" msgstr "每个作业。如果作业超过此阈值,则会将其标记为失败" @@ -5245,7 +5339,7 @@ msgid "Pipeline" msgstr "流水线" msgid "Pipeline %{pipelineLinkStart} #%{pipelineId} %{pipelineLinkEnd} from %{pipelineLinkRefStart} %{pipelineRef} %{pipelineLinkRefEnd}" -msgstr "" +msgstr "流水线 %{pipelineLinkStart} #%{pipelineId} %{pipelineLinkEnd} 来自 %{pipelineLinkRefStart} %{pipelineRef} %{pipelineLinkRefEnd}" msgid "Pipeline Health" msgstr "流水线运行状况指标" @@ -5335,7 +5429,7 @@ msgid "Pipelines|Clear Runner Caches" msgstr "清除Runner缓存" 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." -msgstr "" +msgstr "持续集成可以通过自动运行测试来帮助捕获错误,而持续部署可以帮助您向生产环境交付代码。" msgid "Pipelines|Get started with Pipelines" msgstr "流水线入门" @@ -5359,7 +5453,7 @@ msgid "Pipelines|There are currently no pipelines." msgstr "当前没有流水线。" msgid "Pipelines|There was an error fetching the pipelines. Try again in a few moments or contact your support team." -msgstr "" +msgstr "获取流水线时出现错误。请稍后重试或尝试联系您的支持团队。" msgid "Pipelines|This project is not currently set up to run pipelines." msgstr "此项目当前未配置运行流水线。" @@ -5409,12 +5503,6 @@ msgstr "于阶段" msgid "Plain diff" msgstr "文本差异" -msgid "Planned finish date" -msgstr "计划完成日期" - -msgid "Planned start date" -msgstr "计划开始日期" - msgid "PlantUML" msgstr "PlantUML" @@ -5454,9 +5542,15 @@ msgstr "偏好设置" msgid "Preferences|Navigation theme" msgstr "导航主题" +msgid "Press Enter or click to search" +msgstr "按 回车键或单击以搜索" + msgid "Preview" msgstr "预览" +msgid "Preview payload" +msgstr "预览有效负载" + msgid "Primary" msgstr "主要" @@ -5488,11 +5582,14 @@ msgid "Profile Settings" msgstr "账户设置" msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered." -msgstr "" +msgstr "您即将永久删除 %{yourAccount},以及与您的帐户关联的所有议题,合并请求和群组。一旦确认 %{deleteAccount},此操作便无法撤销和恢复。" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "您将更改用户名 %{currentUsernameBold} 为 %{newUsernameBold}。配置文件和项目将重定向到 %{newUsername} 命名空间,但是一旦 %{currentUsername} 命名空间被另一个用户或组注册,此重定向将过期。请尽快更新您的远端Git仓库。" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "%{author_name} 作出了私有贡献" + msgid "Profiles|Account scheduled for removal." msgstr "帐户已安排被删除。" @@ -5500,17 +5597,32 @@ msgid "Profiles|Add key" msgstr "添加密钥" msgid "Profiles|Add status emoji" -msgstr "" +msgstr "在状态中添加表情符号" + +msgid "Profiles|Avatar cropper" +msgstr "头像裁剪" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "即将删除头像。确定继续吗?" msgid "Profiles|Change username" msgstr "更改用户名" +msgid "Profiles|Choose file..." +msgstr "选择文件..." + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "选择在公开个人资料中显示私有项目的贡献,但不显示任何项目,存储库或组织信息。" + msgid "Profiles|Clear status" -msgstr "" +msgstr "清除状态" msgid "Profiles|Current path: %{path}" msgstr "当前路径: %{path}" +msgid "Profiles|Current status" +msgstr "当前状态" + msgid "Profiles|Delete Account" msgstr "删除帐户" @@ -5523,20 +5635,68 @@ msgstr "删除您的帐户?" msgid "Profiles|Deleting an account has the following effects:" msgstr "删除帐户具有以下效果:" +msgid "Profiles|Do not show on profile" +msgstr "不在个人资料中显示" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "不要在个人资料上显示与活动相关的个人信息" + +msgid "Profiles|Edit Profile" +msgstr "编辑个人资料" + msgid "Profiles|Invalid password" msgstr "密码无效" msgid "Profiles|Invalid username" msgstr "用户名无效" +msgid "Profiles|Main settings" +msgstr "主要设置" + +msgid "Profiles|No file chosen" +msgstr "未选择文件" + msgid "Profiles|Path" msgstr "路径" +msgid "Profiles|Position and size your new avatar" +msgstr "您新头像的位置和大小" + +msgid "Profiles|Private contributions" +msgstr "私人贡献者" + +msgid "Profiles|Public Avatar" +msgstr "公共头像" + +msgid "Profiles|Remove avatar" +msgstr "删除头像" + +msgid "Profiles|Set new profile picture" +msgstr "设置新个人资料图片" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "某些选项对于 LDAP 帐户不可用" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "在少于250个字符的情况下介绍您自己。" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "允许的最大文件大小为200KB。" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "这看起来不像 SSH 公钥,确定要添加它吗?" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "此电子邮件将显示在您的公开个人资料中。" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." -msgstr "" +msgstr "这个表情符号和这条消息会在您的个人资料和整个工作界面中出现。" + +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "此功能是实验性的,翻译尚未完成。" + +msgid "Profiles|This information will appear on your profile." +msgstr "此信息将显示在您的个人资料中。" msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "键入您的 %{confirmationValue} 以确认:" @@ -5544,17 +5704,38 @@ msgstr "键入您的 %{confirmationValue} 以确认:" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "通常以“ssh-rsa ...”开头" +msgid "Profiles|Update profile settings" +msgstr "更新个人资料设置" + msgid "Profiles|Update username" msgstr "更新用户名" +msgid "Profiles|Upload new avatar" +msgstr "上传新头像" + msgid "Profiles|Username change failed - %{message}" msgstr "用户名更改失败 - %{message}" msgid "Profiles|Username successfully changed" msgstr "用户名更改成功" +msgid "Profiles|Website" +msgstr "网站" + msgid "Profiles|What's your status?" -msgstr "你的状况?" +msgstr "你当前的状态?" + +msgid "Profiles|You can change your avatar here" +msgstr "可以在这里修改您的头像" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "您可以在这里修改头像或删除当前头像并恢复为 %{gravatar_link}" + +msgid "Profiles|You can upload your avatar here" +msgstr "可以在这里上传您的头像" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "可以在这里上传您的头像或者从 %{gravatar_link} 修改头像" msgid "Profiles|You don't have access to delete this user." msgstr "您无权删除此用户。" @@ -5565,8 +5746,17 @@ msgstr "您必须转移所有权或删除这些群组,然后才能删除您的 msgid "Profiles|Your account is currently an owner in these groups:" msgstr "您的帐户目前是这些群组的所有者:" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "您的邮件地址是根据您的 %{provider_label} 帐户自动设置的。" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "您的位置是基于您的 %{provider_label} 帐户自动设置的。" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "您的姓名是根据您的 %{provider_label} 帐户自动设置的,因此您认识的人可以识别您。" + msgid "Profiles|Your status" -msgstr "你的状况" +msgstr "你的状态" msgid "Profiles|e.g. My MacBook key" msgstr "例如: My MacBook Key" @@ -5601,6 +5791,9 @@ msgstr "项目 '%{project_name}' 已更新完成。" msgid "Project Badges" msgstr "项目徽章" +msgid "Project URL" +msgstr "项目 URL" + msgid "Project access must be granted explicitly to each user." msgstr "项目访问权限必须明确授权给每个用户。" @@ -5628,6 +5821,9 @@ msgstr "项目导出已开始。下载链接将通过电子邮件发送。" msgid "Project name" msgstr "项目名称" +msgid "Project slug" +msgstr "项目标识串(slug)" + msgid "ProjectActivityRSS|Subscribe" msgstr "订阅" @@ -5655,17 +5851,38 @@ msgstr "从未" msgid "ProjectLifecycle|Stage" msgstr "阶段" +msgid "ProjectOverview|Fork" +msgstr "派生" + +msgid "ProjectOverview|Forks" +msgstr "派生" + +msgid "ProjectOverview|Go to your fork" +msgstr "转至您的派生" + +msgid "ProjectOverview|Star" +msgstr "星标" + +msgid "ProjectOverview|Unstar" +msgstr "取消星标" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "您已达到项目数量限制" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "登录后才能星标项目" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "项目ID:%{project_id}" msgid "ProjectSettings|Badges" -msgstr "" +msgstr "徽章" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "联系管理员更改此设置。" msgid "ProjectSettings|Customize your project badges." -msgstr "" +msgstr "自定义你的项目徽章。" msgid "ProjectSettings|Failed to protect the tag" msgstr "保护标签失败" @@ -5674,7 +5891,7 @@ msgid "ProjectSettings|Failed to update tag!" msgstr "更新标签失败!" msgid "ProjectSettings|Learn more about badges." -msgstr "" +msgstr "了解有关徽章的更多信息。" msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "只有已签署提交才可以推送到此仓库。" @@ -5716,7 +5933,7 @@ msgid "ProjectsDropdown|Sorry, no projects matched your search" msgstr "对不起,没有搜索到符合条件的项目" msgid "ProjectsDropdown|This feature requires browser localStorage support" -msgstr "" +msgstr "此功能需要浏览器支持本地存储" msgid "PrometheusAlerts|Add alert" msgstr "添加警报" @@ -5857,7 +6074,7 @@ msgid "Protected Environments" msgstr "受保护的环境" msgid "ProtectedEnvironment|%{environment_name} will be writable for developers. Are you sure?" -msgstr "" +msgstr "%{environment_name} 对于开发人员来说是可写的。你确定吗?" msgid "ProtectedEnvironment|Allowed to deploy" msgstr "允许部署" @@ -5884,19 +6101,19 @@ msgid "ProtectedEnvironment|Select an environment" msgstr "选择一个环境" msgid "ProtectedEnvironment|There are currently no protected environments, protect an environment with the form above." -msgstr "" +msgstr "目前没有受保护的环境,请使用上述表单保护环境。" msgid "ProtectedEnvironment|Unprotect" -msgstr "" +msgstr "取消保护" msgid "ProtectedEnvironment|Your environment can't be unprotected" -msgstr "" +msgstr "您的环境无法受到保护" msgid "ProtectedEnvironment|Your environment has been protected." -msgstr "" +msgstr "您的环境已受到保护。" msgid "ProtectedEnvironment|Your environment has been unprotected" -msgstr "" +msgstr "环境已经不被保护" msgid "Protip:" msgstr "专家提示:" @@ -5961,6 +6178,9 @@ msgstr "自述文件" msgid "Real-time features" msgstr "实时功能" +msgid "Recent searches" +msgstr "最近的搜索" + msgid "Reference:" msgstr "引用:" @@ -5969,7 +6189,7 @@ msgstr "刷新" msgid "Refreshing in a second to show the updated status..." msgid_plural "Refreshing in %d seconds to show the updated status..." -msgstr[0] "" +msgstr[0] "%d 秒后刷新以显示更新状态..." msgid "Regenerate key" msgstr "重新生成密钥" @@ -6037,6 +6257,9 @@ msgstr "重命名文件" msgid "Rename folder" msgstr "重命名文件夹" +msgid "Reopen epic" +msgstr "重新开启史诗" + msgid "Repair authentication" msgstr "修复认证" @@ -6046,18 +6269,36 @@ msgstr "直接回复此邮件或 %{view_it_on_gitlab}。" msgid "Repo by URL" msgstr "从 URL 导入仓库" +msgid "Reporting" +msgstr "报告" + msgid "Reports|%{failedString} and %{resolvedString}" -msgstr "" +msgstr "%{failedString} 和 %{resolvedString}" msgid "Reports|Class" msgstr "类" +msgid "Reports|Confidence" +msgstr "置信水平" + +msgid "Reports|Dismiss Vulnerability" +msgstr "忽略漏洞" + msgid "Reports|Execution time" msgstr "执行时间" msgid "Reports|Failure" msgstr "失败" +msgid "Reports|More info" +msgstr "更多信息" + +msgid "Reports|New Issue" +msgstr "新建议题" + +msgid "Reports|Severity" +msgstr "严重性" + msgid "Reports|System output" msgstr "系统输出" @@ -6070,8 +6311,11 @@ msgstr "测试摘要加载失败" msgid "Reports|Test summary results are being parsed" msgstr "正在分析测试摘要" +msgid "Reports|Vulnerability" +msgstr "漏洞" + msgid "Reports|no changed test results" -msgstr "" +msgstr "测试结果没有变化" msgid "Repository" msgstr "仓库" @@ -6124,9 +6368,21 @@ msgstr "在源分支上解决冲突" msgid "Resolve discussion" msgstr "解决讨论" +msgid "Response metrics (AWS ELB)" +msgstr "响应指标(AWS ELB)" + msgid "Response metrics (Custom)" msgstr "响应指标(自定义)" +msgid "Response metrics (HA Proxy)" +msgstr "响应指标(HA Proxy)" + +msgid "Response metrics (NGINX Ingress)" +msgstr "响应指标(NGINX Ingress)" + +msgid "Response metrics (NGINX)" +msgstr "响应指标(NGINX)" + msgid "Resume" msgstr "恢复" @@ -6140,7 +6396,7 @@ msgid "Retry verification" msgstr "重试验证" msgid "Reveal Variables" -msgstr "" +msgstr "显示变量" msgid "Reveal value" msgid_plural "Reveal values" @@ -6174,11 +6430,26 @@ msgid "Run CI/CD pipelines for external repositories" msgstr "使用外部仓库的CI/CD流水线" msgid "Run untagged jobs" -msgstr "" +msgstr "运行未标记的作业" + +msgid "Runner cannot be assigned to other projects" +msgstr "无法将Runner分配给其他项目" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "Runner将运行所有未指定的项目的作业" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "Runner将运行群组中所有未指定项目的作业" + +msgid "Runner runs jobs from assigned projects" +msgstr "Runner将运行指定项目的作业" msgid "Runner token" msgstr "Runner 令牌" +msgid "Runner will not receive any new jobs" +msgstr "Runner不会接受新的作业" + msgid "Runners" msgstr "Runner" @@ -6188,6 +6459,12 @@ msgstr "Runners API" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "Runner可以放在不同的用户、服务器,甚至本地机器上。" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "Runner可以放在不同的用户、服务器,甚至本地机器上。" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "当前在线Runner: %{active_runners_count}" + msgid "Runners page" msgstr "运行器页面" @@ -6195,7 +6472,7 @@ msgid "Runners page." msgstr "运行器页面。" msgid "Runners|You have used all your shared Runners pipeline minutes." -msgstr "" +msgstr "您已经使用了所有共享Runner的流水线时间。" msgid "Running" msgstr "运行中" @@ -6212,6 +6489,9 @@ msgstr "SAML 单点登录" msgid "SAML Single Sign On Settings" msgstr "SAML 单点登录设置" +msgid "SAST" +msgstr "SAST" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "SAML令牌签名证书的SHA1指纹。请从身份验证提供商处获取(也可以被称为“指纹”)。" @@ -6290,6 +6570,9 @@ msgstr "搜索合并请求" msgid "Search milestones" msgstr "搜索里程碑" +msgid "Search or filter results..." +msgstr "搜索或过滤结果......" + msgid "Search or jump to…" msgstr "搜索或转到..." @@ -6300,7 +6583,7 @@ msgid "Search users" msgstr "搜索用户" msgid "SearchAutocomplete|All GitLab" -msgstr "所有GitLab" +msgstr "在整个 GitLab" msgid "SearchAutocomplete|Issues I've created" msgstr "我创建的问题" @@ -6315,7 +6598,7 @@ msgid "SearchAutocomplete|Merge requests assigned to me" msgstr "分配给我的合并请求" msgid "SearchAutocomplete|in all GitLab" -msgstr "" +msgstr "在整个 GitLab" msgid "SearchAutocomplete|in this group" msgstr "在此群组" @@ -6338,15 +6621,8 @@ msgstr "安全" msgid "Security Dashboard" msgstr "安全仪表盘" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." -msgstr "" +msgstr "安全仪表板显示最新的安全报告。用它来查找和修复漏洞。" msgid "SecurityDashboard|Monitor vulnerabilities in your code" msgstr "监控代码中的漏洞" @@ -6360,6 +6636,9 @@ msgstr "选择" msgid "Select Archive Format" msgstr "选择下载格式" +msgid "Select a group to invite" +msgstr "选择要邀请的组" + msgid "Select a namespace to fork the project" msgstr "选择一个命名空间来派生项目" @@ -6393,8 +6672,11 @@ msgstr "选择源分支" msgid "Select target branch" msgstr "选择目标分支" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "选择当前项目的默认分支。除非另行指定,否则所有合并请求和提交都将指向此分支。" + msgid "Select the custom project template source group." -msgstr "" +msgstr "选择自定义项目模板源组。" msgid "Selecting a GitLab user will add a link to the GitLab user in the descriptions of issues and comments (e.g. \"By @johnsmith\"). It will also associate and/or assign these issues and comments with the selected user." msgstr "选中GitLab用户将在议题和评论的描述中加入指向该GitLab用户的链接(例如“By @johnsmith”)。它还将与所选用户关联和/或分配这些议题和评论。" @@ -6405,6 +6687,9 @@ msgstr "选择性同步" msgid "Send email" msgstr "发送电子邮件" +msgid "Send usage data" +msgstr "发送的使用情况数据" + msgid "Sep" msgstr "九" @@ -6433,7 +6718,7 @@ msgid "Set default and restrict visibility levels. Configure import sources and msgstr "设定缺省及受限可见性级别。配置导入来源及git访问协议。" msgid "Set instance-wide template repository" -msgstr "" +msgstr "设置实例范围的模板存储库" msgid "Set max session time for web terminal." msgstr "为Web终端设置最长会话时间。" @@ -6450,11 +6735,17 @@ msgstr "配置 CI/CD" msgid "Set up Koding" msgstr "设置 Koding" +msgid "Set up a %{type} Runner manually" +msgstr "手动设置%{type}Runner " + +msgid "Set up a specific Runner automatically" +msgstr "自动创建专用Runner" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "根据%{docsLinkStart}文档%{icon}%{docsLinkEnd}设置断言/属性/声明(email,first_name,last_name)和NameID" msgid "Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically." -msgstr "" +msgstr "设置项目以自动推送和/或从另一个存储库中提取更改。分支,标签和提交将自动同步。" msgid "SetPasswordToCloneLink|set a password" msgstr "设置密码" @@ -6462,12 +6753,6 @@ msgstr "设置密码" msgid "Settings" msgstr "设置" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "自动创建专用Runner" - msgid "Share" msgstr "分享" @@ -6477,6 +6762,9 @@ msgstr "分享%{sso_label} 给组员,以便他们可以通过 msgid "Shared Runners" msgstr "共享Runner" +msgid "Shared projects" +msgstr "已分享项目" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "通过重置此命名空间的流水线分钟数,当前使用的分钟数将被归零。" @@ -6559,8 +6847,8 @@ msgstr "静态网站的大小和域设置" msgid "Slack application" msgstr "Slack应用" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." -msgstr "" +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." +msgstr "Slack集成允许您通过聊天窗口中的shash命令与GitLab交互。" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" msgstr "更慢,但能确保项目工作空间与原始版本一致;因其对每个作业均从头开始克隆仓库" @@ -6578,10 +6866,10 @@ msgid "Something went wrong on our end. Please try again!" msgstr "服务器端出现问题,请重试。" msgid "Something went wrong trying to change the confidentiality of this issue" -msgstr "" +msgstr "试图改变这个议题的私密性时出现错误" msgid "Something went wrong trying to change the locked state of this %{issuableDisplayName}" -msgstr "" +msgstr "试图改变 %{issuableDisplayName} 的锁定状态时出错了" msgid "Something went wrong when toggling the button" msgstr "点击按钮时出错" @@ -6590,7 +6878,7 @@ msgid "Something went wrong while closing the %{issuable}. Please try again late msgstr "关闭 %{issuable} 时出错。请稍后重试" msgid "Something went wrong while fetching %{listType} list" -msgstr "" +msgstr "在获取 %{listType} 列表时出错了" msgid "Something went wrong while fetching group member contributions" msgstr "获取群组成员贡献时出错" @@ -6643,6 +6931,9 @@ msgstr "最大群组" msgid "SortOptions|Largest repository" msgstr "最大仓库" +msgid "SortOptions|Last Contact" +msgstr "最后联系人" + msgid "SortOptions|Last created" msgstr "最近创建" @@ -6673,6 +6964,9 @@ msgstr "增加权重" msgid "SortOptions|Most popular" msgstr "最受欢迎" +msgid "SortOptions|Most stars" +msgstr "最多星标" + msgid "SortOptions|Name" msgstr "名称" @@ -6703,6 +6997,9 @@ msgstr "优先" msgid "SortOptions|Recent sign in" msgstr "最近登录" +msgid "SortOptions|Start date" +msgstr "开始日期" + msgid "SortOptions|Start later" msgstr "稍后开始" @@ -6734,7 +7031,7 @@ msgid "Specific Runners" msgstr "专用Runner" msgid "Specify an e-mail address regex pattern to identify default internal users." -msgstr "" +msgstr "指定电子邮件地址正则表达式模式以标识默认内部用户。" msgid "Specify the following URL during the Runner setup:" msgstr "在 Runner 设置时指定以下 URL:" @@ -6778,6 +7075,9 @@ msgstr "已星标项目" msgid "Start a %{new_merge_request} with these changes" msgstr "由此更改 %{new_merge_request}" +msgid "Start date" +msgstr "开始日期" + msgid "Start the Runner!" msgstr "启动 Runner!" @@ -6811,6 +7111,9 @@ msgstr "存储:" msgid "Subgroups" msgstr "子群组" +msgid "Subgroups and projects" +msgstr "子组和项目" + msgid "Submit as spam" msgstr "垃圾信息举报" @@ -6844,6 +7147,9 @@ msgstr "系统页头和页尾:" msgid "System metrics (Custom)" msgstr "系统指标(自定义)" +msgid "System metrics (Kubernetes)" +msgstr "系统指标(Kubernetes)" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "标签(%{tag_count})" @@ -6852,7 +7158,7 @@ msgid "Tags" msgstr "标签" msgid "Tags feed" -msgstr "" +msgstr "标签动态" msgid "Tags:" msgstr "标签:" @@ -6957,7 +7263,7 @@ msgid "The Advanced Global Search in GitLab is a powerful search service that sa msgstr "GitLab 中的高级全局搜索功能是一个强大且节省您的时间的搜索服务。您可以搜索其他团队的代码以帮助您完善自己项目中的代码。从而避免创建重复的代码或浪费时间。" msgid "The Git LFS objects will not be synced." -msgstr "" +msgstr "Git LFS对象将不会被同步。" msgid "The Issue Tracker is the place to add things that need to be improved or solved in a project" msgstr "议题跟踪用于管理需求改进或者解决的问题" @@ -6969,7 +7275,7 @@ msgid "The X509 Certificate to use when mutual TLS is required to communicate wi msgstr "在需要相互 TLS 与外部授权服务通信时使用的 X509 证书。如果保留为空, 则在访问 HTTPS 时仍然验证服务器证书。" msgid "The character highlighter helps you keep the subject line to %{titleLength} characters and wrap the body at %{bodyLength} so they are readable in git." -msgstr "" +msgstr "字符突出显示器帮助您将主题行保持为 %{titleLength} 字符并将正文包装为 %{bodyLength} 以便它们在git中可读。" msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request." msgstr "编码阶段概述了从第一次提交到创建合并请求的时间。创建第一个合并请求后,数据将自动添加到此处。" @@ -6981,7 +7287,7 @@ msgid "The connection will time out after %{timeout}. For repositories that take msgstr "该连接将在 %{timeout}后超时。如仓库导入耗时超过该时间,请使用克隆/推送组合。" msgid "The deployment of this job to %{environmentLink} did not succeed." -msgstr "" +msgstr "将此作业部署为 %{environmentLink} 并未成功。" msgid "The fork relationship has been removed." msgstr "派生关系已被删除。" @@ -7011,7 +7317,7 @@ msgid "The phase of the development lifecycle." msgstr "项目生命周期中的各个阶段。" msgid "The pipelines schedule runs pipelines in the future, repeatedly, for specific branches or tags. Those scheduled pipelines will inherit limited project access based on their associated user." -msgstr "" +msgstr "针对特定分支或标签,流水线计划将在未来重复运行流水线。这些计划的流水线将从关联用户继承有限的项目访问权限。" msgid "The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit." msgstr "计划阶段概述了从议题添加到日程到推送首次提交的时间。当首次推送提交后,数据将自动添加到此处。" @@ -7056,7 +7362,7 @@ msgid "The staging stage shows the time between merging the MR and deploying cod msgstr "预发布阶段概述了从合并请求被合并到部署至生产环境的总时间。首次部署到生产环境后,数据将自动添加到此处。" msgid "The tabs below will be removed in a future version" -msgstr "" +msgstr "以下选项卡将在以后的版本中删除" msgid "The testing stage shows the time GitLab CI takes to run every pipeline for the related merge request. The data will automatically be added after your first pipeline finishes running." msgstr "测试阶段概述了 GitLab CI 为相关合并请求运行每个流水线所需的时间。当第一个流水线运行完成后,数据将自动添加到此处。" @@ -7074,7 +7380,10 @@ msgid "The time taken by each data entry gathered by that stage." msgstr "该阶段每条数据所花的时间" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." -msgstr "" +msgstr "更新操作将在 %{number_of_minutes} 分钟后超时。对于大型存储库,请使用clone/push组合。" + +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "使用情况检测(usage ping)已禁用,无法通过此表单进行配置。" msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "用户映射是一个JSON文档,将参与项目的Google Code用户映射到他们将导入GitLab的电子邮件地址和用户名的方式。您可以通过更改 :右侧的值来更改此值。请务必在左侧保留周围的双引号,其他标点符号以及电子邮件地址或用户名。" @@ -7085,6 +7394,9 @@ msgstr "用户映射是参与项目的 FogBugz 用户的电子邮件地址和用 msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "中位数是一个数列中最中间的值。例如在 3、5、9 之间,中位数是 5。在 3、5、7、8 之间,中位数是 (5 + 7)/ 2 = 6。" +msgid "There are no archived projects yet" +msgstr "目前还没有已归档的项目" + msgid "There are no issues to show" msgstr "当前无议题" @@ -7094,11 +7406,20 @@ msgstr "目前还没有标签" msgid "There are no merge requests to show" msgstr "当前无合并请求" +msgid "There are no projects shared with this group yet" +msgstr "还没有与该群组共享的项目" + +msgid "There are no staged changes" +msgstr "没有暂存的修改" + +msgid "There are no unstaged changes" +msgstr "没有未暂存的修改" + msgid "There are problems accessing Git storage: " msgstr "访问 Git 存储时出现问题:" msgid "There was an error adding a todo." -msgstr "" +msgstr "添加待办事项时出现错误" msgid "There was an error deleting the todo." msgstr "删除待办事项时出现错误。" @@ -7142,11 +7463,14 @@ msgstr "此看板范围缩小了" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "自您开始编辑后, 此分支已更改。您想创建一个新的分支吗?" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." -msgstr "" +msgid "This container registry has been scheduled for deletion." +msgstr "此容器注册表已安排删除。" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." -msgstr "" +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "此日期在截止日期之后,因此该史诗故事不会出现在路线图中。" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." +msgstr "此日期在开始日期之前,因此该史诗故事不会出现在路线图中。" msgid "This diff is collapsed." msgstr "此差异已折叠。" @@ -7200,28 +7524,28 @@ msgid "This job has not started yet" msgstr "作业还未开始" msgid "This job is an out-of-date deployment to %{environmentLink}." -msgstr "" +msgstr "此项作业已过时,无法部署到 %{environmentLink}。" msgid "This job is an out-of-date deployment to %{environmentLink}. View the most recent deployment %{deploymentLink}." -msgstr "" +msgstr "此项作业已过时,无法部署到 %{environmentLink}。查看最新的部署 %{deploymentLink}。" msgid "This job is creating a deployment to %{environmentLink} and will overwrite the last %{deploymentLink}." -msgstr "" +msgstr "此作业将创建部署为 %{environmentLink} 并将最后一次部署%{deploymentLink}覆盖 。" msgid "This job is creating a deployment to %{environmentLink}." -msgstr "" +msgstr "这项工作正在创建一个 %{environmentLink}的部署。" msgid "This job is in pending state and is waiting to be picked by a runner" msgstr "作业挂起中,等待进入队列" msgid "This job is stuck, because you don't have any active runners online with any of these tags assigned to them:" -msgstr "" +msgstr "此作业已停止。因为分配有如下标签的Runner都不在线:" msgid "This job is stuck, because you don't have any active runners that can run this job." -msgstr "" +msgstr "此作业已停止。因为没有活动的Runner可以处理此项作业。" msgid "This job is the most recent deployment to %{link}." -msgstr "" +msgstr "此作业最近部署到 %{link}。" msgid "This job requires a manual action" msgstr "作业需手工操作" @@ -7233,7 +7557,7 @@ msgid "This merge request is locked." msgstr "此合并请求已锁定。" msgid "This option is disabled as you don't have write permissions for the current branch" -msgstr "" +msgstr "由于您没有当前分支的写入权限,因此禁用此选项" msgid "This option is disabled while you still have unstaged changes" msgstr "有未暂存更改时此选项会被禁用。" @@ -7251,28 +7575,28 @@ msgid "This project does not belong to a group and can therefore not make use of msgstr "该项目不属于任何群组,因此不能使用群组Runner。" msgid "This project does not have billing enabled. To create a cluster, enable billing and try again." -msgstr "" +msgstr "此项目未启用账单。要创建群集,请 启用账单 并重试。" msgid "This repository" msgstr "当前仓库" msgid "This runner will only run on pipelines triggered on protected branches" -msgstr "" +msgstr "此Runner仅在受保护分支上触发的流水线上运行" msgid "This source diff could not be displayed because it is too large." msgstr "此代码差异无法显示,因为它太大了。" msgid "This timeout will take precedence when lower than Project-defined timeout" -msgstr "" +msgstr "当低于项目定义的超时时间时,此超时将优先" msgid "This user has no identities" msgstr "该用户没有身份标识" msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches." -msgstr "" +msgstr "此用户将成为活动流中所有事件的作者,例如创建新分支或者推送新提交到现有分支。" msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches. Upon creation or when reassigning you can only assign yourself to be the mirror user." -msgstr "" +msgstr "此用户将成为活动流中所有事件的作者,例如创建新分支或者推送新提交到现有分支。在创建或重新指定时您仅可将自己指定为镜像用户。" msgid "This will delete the custom metric, Are you sure?" msgstr "此操作将删除自定义指标,确定继续吗?" @@ -7475,7 +7799,10 @@ msgid "To connect an SVN repository, check out %{svn_link}." msgstr "如要连接SVN仓库,请查看 %{svn_link}。" msgid "To define internal users, first enable new users set to external" -msgstr "" +msgstr "要定义内部用户,请首先启用设置为外部的新用户" + +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "要启用它并查看用户世代表,请访问 %{application_settings_link_start}应用程序设置%{application_settings_link_end}。" msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "首先请在下面输入您的FogBugz URL和登录信息。下一步,您将可以映射用户并选择要导入的项目。" @@ -7483,6 +7810,12 @@ msgstr "首先请在下面输入您的FogBugz URL和登录信息。下一步, msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "首先,请您输入您的 Gitea 服务器地址和一个 %{link_to_personal_token}。" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "为了帮助改进 GitLab 及其用户体验, GitLab 将定期收集使用信息。" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "为了帮助改进GitLab,我们希望定期收集使用信息。这可以通过 %{settings_link_start}设置%{link_end}随时更改。 %{info_link_start}更多信息%{link_end}" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "可以使用 %{personal_access_token_link}导入GitHub仓库。当创建个人访问令牌时,需要选择 repo 范围,以显示可导入的公共和私有的仓库列表。" @@ -7510,8 +7843,8 @@ msgstr "转至此GitLab实例" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "如需验证GitLab CI设置,请访问当前项目的'CI/CD → 流水线',然后点击'CI Lint'按钮。" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." -msgstr "如需查看路线图,请将计划的开始或结束日期添加到当前群组或其子组中的某个史诗故事。只显示过去3个月和接下来3个月的史诗故事。" +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "如需查看路线图,请将计划的开始或结束日期添加到当前群组或其子组中的某个史诗故事。在月视图中,只显示上个月,本月以及接下来5个月的史诗故事." msgid "To widen your search, change or remove filters." msgstr "需要扩大搜索范围,请更改或移除过滤条件。" @@ -7525,6 +7858,9 @@ msgstr "待办事项" msgid "Toggle Sidebar" msgstr "切换侧边栏" +msgid "Toggle commit description" +msgstr "切换提交描述" + msgid "Toggle discussion" msgstr "开关讨论" @@ -7574,10 +7910,10 @@ msgid "Trigger" msgstr "触发器" msgid "Trigger pipelines for mirror updates" -msgstr "" +msgstr "触发镜像更新的流水线" msgid "Trigger pipelines when branches or tags are updated from the upstream repository. Depending on the activity of the upstream repository, this may greatly increase the load on your CI runners. Only enable this if you know they can handle the load." -msgstr "" +msgstr "从上游存储库更新分支或标记时触发流水线。如果上游存储库更新频繁,这可能会大大增加CI Runner的负荷。只有当你知道CI Runner的处理能力能够承受这样的负荷时,你才应启用此功能。" msgid "Trigger this manual action" msgstr "触发此手动操作" @@ -7603,6 +7939,12 @@ msgstr "无法加载差异。 %{button_try_again}" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "由于\"%{reason}\"的原因,您暂时不能进入配置了SAML 的群组" +msgid "Unable to update this epic at this time." +msgstr "当前无法更新此史诗故事。" + +msgid "Undo" +msgstr "撤消" + msgid "Unknown" msgstr "未知的" @@ -7610,7 +7952,7 @@ msgid "Unlock" msgstr "解锁" msgid "Unlock this %{issuableDisplayName}? Everyone will be able to comment." -msgstr "" +msgstr "解锁 %{issuableDisplayName} ? 所有人 都将可以发表评论。" msgid "Unlocked" msgstr "已解锁" @@ -7618,6 +7960,9 @@ msgstr "已解锁" msgid "Unresolve discussion" msgstr "待解决的讨论" +msgid "Unstage" +msgstr "未暂存" + msgid "Unstage all changes" msgstr "取消全部暂存更改" @@ -7687,15 +8032,15 @@ msgstr "上传新文件" msgid "Upload file" msgstr "上传文件" -msgid "Upload new avatar" -msgstr "上传新头像" - msgid "UploadLink|click to upload" msgstr "点击上传" msgid "Upvotes" msgstr "顶" +msgid "Usage ping is not enabled" +msgstr "使用情况检测(usage ping)未启用" + msgid "Usage statistics" msgstr "使用情况统计" @@ -7723,6 +8068,9 @@ msgstr "使用全局通知设置" msgid "Used by members to sign in to your group in GitLab" msgstr "供成员登录您的GitLab群组" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "用户世代表仅在启用 %{usage_ping_link_start}使用情况检测(usage ping)%{usage_ping_link_end} 时显示。" + msgid "User Settings" msgstr "用户设置" @@ -7735,9 +8083,6 @@ msgstr "用户映射" msgid "Users" msgstr "用户" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "变量" @@ -8053,11 +8398,14 @@ msgstr "只能在分支上添加文件" msgid "You can only edit files when you are on a branch" msgstr "只能在分支上编辑文件" +msgid "You can reset runners registration token by pressing a button below." +msgstr "您可以通过下面的按钮重置Runner注册令牌。" + 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}" msgstr "您可以使用交互模式,通过选择 %{use_ours} 或 %{use_theirs} 按钮来解决合并冲突。也可以通过直接编辑文件来解决合并冲突。然后将这些更改提交到 %{branch_name}" msgid "You can set up jobs to only use Runners with specific tags. Separate tags with commas." -msgstr "" +msgstr "您可以将作业设置为仅使用具有特定标签的Runners。请使用逗号分隔不同标签。" msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." msgstr "您不能写入只读的次要 GitLab Geo 实例。请改用%{link_to_primary_node}。" @@ -8086,9 +8434,6 @@ msgstr "您必须接受我们的服务条款和隐私政策才能注册帐户" msgid "You must have maintainer access to force delete a lock" msgstr "必须拥有维护者权限才能强制删除锁" -msgid "You must sign in to star a project" -msgstr "必须登录才能对项目加星标" - msgid "You need a different license to enable FileLocks feature" msgstr "需要使用与当前不同的许可(license) 才能启用FileLocks功能" @@ -8098,6 +8443,12 @@ msgstr "您需要git-lfs版本 %{min_git_lfs_version} (或更高版本)才 msgid "You need permission." msgstr "需要相关的权限。" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "您将丢失对此文件所做的所有更改。此操作无法撤消。" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "您将丢失在此项目中所做的所有未暂存的修改,此操作无法撤消。" + msgid "You will not get any notifications via email" msgstr "不会收到任何通知邮件" @@ -8185,14 +8536,6 @@ msgstr "前" msgid "among other things" msgstr "及其他功能" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "和 %d 个已修复漏洞" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "及%d个已修复的漏洞" - msgid "assign yourself" msgstr "分配给自己" @@ -8220,20 +8563,51 @@ msgstr "ciReport|%{namespace} 受 %{vulnerability} 影响。" msgid "ciReport|%{remainingPackagesCount} more" msgstr "还有%{remainingPackagesCount} 个" -msgid "ciReport|%{reportName} is loading" -msgstr "%{reportName} 加载中" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" -msgstr "加载%{reportName} 时出错" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" -msgid "ciReport|%{type} detected no new security vulnerabilities" -msgstr "%{type} 未发现新的安全漏洞" +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" -msgstr "%{type} 未发现安全漏洞" +msgid "ciReport|%{reportType} is loading" +msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" -msgstr "%{type} 未发现安全漏洞" +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" + +msgid "ciReport|(errors when loading results)" +msgstr "" + +msgid "ciReport|(is loading)" +msgstr "" + +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" msgid "ciReport|Class" msgstr "类" @@ -8244,39 +8618,30 @@ msgstr "代码质量" msgid "ciReport|Confidence" msgstr "置信水平" +msgid "ciReport|Container scanning" +msgstr "" + msgid "ciReport|Container scanning detected" msgstr "容器安全扫描检测到" msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "容器扫描可以检测Docker镜像中中已知的安全漏洞。" -msgid "ciReport|Container scanning is loading" -msgstr "容器安全扫描加载中" - -msgid "ciReport|Container scanning resulted in error while loading results" -msgstr "加载容器扫描结果时出错" +msgid "ciReport|DAST" +msgstr "" msgid "ciReport|DAST detected" msgstr "DAST检测到" -msgid "ciReport|DAST is loading" -msgstr "DAST加载中" - -msgid "ciReport|DAST resulted in error while loading results" -msgstr "加载DAST结果时出错" - msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "依赖项扫描可以检测源代码依赖项中已知的漏洞。" +msgid "ciReport|Dependency scanning" +msgstr "" + msgid "ciReport|Dependency scanning detected" msgstr "依赖关系扫描检测到" -msgid "ciReport|Dependency scanning is loading" -msgstr "依赖项扫描加载中" - -msgid "ciReport|Dependency scanning resulted in error while loading results" -msgstr "加载依赖项扫描结果时出错" - msgid "ciReport|Description" msgstr "说明" @@ -8307,19 +8672,16 @@ msgstr "实例" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "了解有关安全报告(Alpha)的更多信息。" -msgid "ciReport|Learn more about whitelisting" -msgstr "了解更多关于白名单的信息" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" -msgstr[0] "" +msgstr[0] "许可证管理仅检测到源分支的 %d 许可证" msgid "ciReport|License management detected %d new license" msgid_plural "ciReport|License management detected %d new licenses" msgstr[0] "许可证管理检测到 %d 个新的许可证" msgid "ciReport|License management detected no licenses for the source branch only" -msgstr "" +msgstr "许可证管理仅未检测到源分支上的许可证" msgid "ciReport|License management detected no new licenses" msgstr "许可证管理未检测到新的许可证" @@ -8348,24 +8710,18 @@ msgstr "性能指标" msgid "ciReport|Revert dismissal" msgstr "取消忽略" +msgid "ciReport|SAST" +msgstr "" + msgid "ciReport|SAST detected" msgstr "SAST检测到" -msgid "ciReport|SAST is loading" -msgstr "SAST加载中" - -msgid "ciReport|SAST resulted in error while loading results" -msgstr "加载SAST结果时出错" - msgid "ciReport|Security scanning" msgstr "安全扫描" msgid "ciReport|Security scanning failed loading any results" msgstr "安全扫描无法加载任何结果" -msgid "ciReport|Security scanning is loading" -msgstr "安全扫描加载中" - msgid "ciReport|Severity" msgstr "严重性" @@ -8396,15 +8752,12 @@ msgstr "加载依赖项扫描报告时出错" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "取消忽略操作时发生错误。请再试一次。" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "未批准的漏洞 (红色) 可以标记为已批准。" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "将 %{name} 从 %{version} 升级到 %{fixed}。" msgid "ciReport|Used by %{packagesString}" msgid_plural "ciReport|Used by %{packagesString}, and %{lastPackage}" -msgstr[0] "" +msgstr[0] "已使用 %{packagesString} 和 %{lastPackage}" msgid "ciReport|View full report" msgstr "查看完整报告" @@ -8419,10 +8772,10 @@ msgid "command line instructions" msgstr "命令行指南" msgid "confidentiality|You are going to turn off the confidentiality. This means everyone will be able to see and leave a comment on this issue." -msgstr "" +msgstr "即将关闭私密性。这将使得 所有用户都可以查看并且评论当前议题。" msgid "confidentiality|You are going to turn on the confidentiality. This means that only team members with at least Reporter access are able to see and leave comments on the issue." -msgstr "" +msgstr "即将设置私密性。这将使得 至少有Reporter以上权限的团队成员才能查看并且评论当前议题。" msgid "connecting" msgstr "连接中" @@ -8440,17 +8793,6 @@ msgstr[0] "天" msgid "deploy token" msgstr "部署令牌" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "检测到%d个安全漏洞已修复" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "检测到%d个新的安全漏洞" - -msgid "detected no vulnerabilities" -msgstr "未检测到安全漏洞" - msgid "disabled" msgstr "已禁用" @@ -8580,7 +8922,7 @@ msgid "mrWidget|Failed to load deployment statistics" msgstr "无法加载部署统计信息" msgid "mrWidget|Fast-forward merge is not possible. To merge this request, first rebase locally." -msgstr "" +msgstr "无法进行快进合并。要合并此请求,请先在本地进行rebase。" msgid "mrWidget|If the %{branch} branch exists in your local repository, you can merge this merge request manually using the" msgstr "如果 %{branch} 分支存在于本地仓库中,则可以手动合并该合并请求。需使用" @@ -8622,13 +8964,13 @@ msgid "mrWidget|Open in Web IDE" msgstr "在Web IDE中打开" msgid "mrWidget|Pipeline blocked. The pipeline for this merge request requires a manual action to proceed" -msgstr "" +msgstr "流水线被阻止。此合并请求的流水线需要手动操作才能继续" msgid "mrWidget|Plain diff" msgstr "文本差异" msgid "mrWidget|Ready to be merged automatically. Ask someone with write access to this repository to merge this request" -msgstr "" +msgstr "准备自动合并。询问具有此存储库的写访问权限的人来合并此请求" msgid "mrWidget|Refresh" msgstr "刷新" @@ -8657,13 +8999,13 @@ msgstr[0] "需要 %d 次批准" msgid "mrWidget|Requires 1 more approval by" msgid_plural "mrWidget|Requires %d more approvals by" -msgstr[0] "" +msgstr[0] "需要额外 %d 个批准" msgid "mrWidget|Resolve conflicts" msgstr "解决冲突" msgid "mrWidget|Resolve these conflicts or ask someone with write access to this repository to merge it locally" -msgstr "" +msgstr "解决这些冲突或询问对此存储库具有写入权限的人员在本地合并它" msgid "mrWidget|Revert" msgstr "还原" @@ -8684,10 +9026,10 @@ msgid "mrWidget|The changes will be merged into" msgstr "更改将被合并到" msgid "mrWidget|The pipeline for this merge request failed. Please retry the job or push a new commit to fix the failure" -msgstr "" +msgstr "此合并请求的流水线失败。请重试该作业或推送新的提交以修复失败" msgid "mrWidget|The source branch HEAD has recently changed. Please reload the page and review the changes before merging" -msgstr "" +msgstr "源分支HEAD最近已更改。请在重新合并之前重新加载页面并查看更改" msgid "mrWidget|The source branch has been removed" msgstr "源分支已被删除" @@ -8719,6 +9061,9 @@ msgstr "该合并请求正在被合并" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "该项目已存档,禁止写入" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "不允许直接编辑此项目。请派生(fork)后进行更改。" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "可以手动合并此合并请求,使用以下" @@ -8737,6 +9082,9 @@ msgstr "入" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "流水线成功时自动合并" +msgid "n/a" +msgstr "不适用" + msgid "new merge request" msgstr "新建合并请求" @@ -8748,7 +9096,7 @@ msgstr "或" msgid "out of %d total test" msgid_plural "out of %d total tests" -msgstr[0] "" +msgstr[0] "总共 %d 次测试中" msgid "parent" msgid_plural "parents" @@ -8790,6 +9138,9 @@ msgstr "此文档" msgid "to help your contributors communicate effectively!" msgstr "帮助您的贡献者进行有效沟通!" +msgid "toggle collapse" +msgstr "切换折叠" + msgid "username" msgstr "用户名" diff --git a/locale/zh_HK/gitlab.po b/locale/zh_HK/gitlab.po index 49fbfc224e4..632da40cd54 100644 --- a/locale/zh_HK/gitlab.po +++ b/locale/zh_HK/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: zh-HK\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:30\n" msgid " Status" msgstr "" @@ -107,6 +107,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "" @@ -148,23 +151,13 @@ msgstr "" msgid "%{title} changes" msgstr "" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "" +msgid "%{unstaged} unstaged and %{staged} staged changes" +msgstr "" -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" -msgid "%{unstaged} unstaged and %{staged} staged changes" +msgid "+ %{count} more" msgstr "" msgid "+ %{moreCount} more" @@ -280,6 +273,12 @@ msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "相關持續集成的圖像集合" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "" @@ -322,6 +321,9 @@ msgstr "" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "" @@ -361,15 +363,15 @@ msgstr "" msgid "Add Kubernetes cluster" msgstr "" -msgid "Add License" -msgstr "添加許可證" - msgid "Add Readme" msgstr "" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "" @@ -388,6 +390,9 @@ msgstr "" msgid "Add users to group" msgstr "" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "" @@ -685,6 +690,9 @@ msgstr "" msgid "Archived project! Repository and other project resources are read-only" msgstr "" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "確定要刪除此流水線計劃嗎?" @@ -844,6 +852,9 @@ msgstr "" msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "" @@ -880,9 +891,6 @@ msgstr "" msgid "Background color" msgstr "" -msgid "Background jobs" -msgstr "" - msgid "Badges" msgstr "" @@ -1364,6 +1372,12 @@ msgstr "" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "" @@ -1526,6 +1540,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "" @@ -1574,10 +1591,10 @@ msgstr "" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." msgstr "" msgid "ClusterIntegration|Copy API URL" @@ -1604,6 +1621,12 @@ msgstr "" msgid "ClusterIntegration|Did you know?" msgstr "" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "" @@ -1670,9 +1693,6 @@ msgstr "" msgid "ClusterIntegration|Install Prometheus" msgstr "" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "" @@ -1706,15 +1726,6 @@ msgstr "" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "" @@ -1739,12 +1750,6 @@ msgstr "" msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "" -msgid "ClusterIntegration|Learn more about environments" -msgstr "" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "" - msgid "ClusterIntegration|Machine type" msgstr "" @@ -1802,6 +1807,9 @@ msgstr "" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "" @@ -1832,9 +1840,6 @@ msgstr "" msgid "ClusterIntegration|Search zones" msgstr "" -msgid "ClusterIntegration|Security" -msgstr "" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "" @@ -1874,12 +1879,15 @@ msgstr "" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "" @@ -1898,6 +1906,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "" @@ -1916,9 +1927,6 @@ msgstr "" msgid "ClusterIntegration|help page" msgstr "" -msgid "ClusterIntegration|installing applications" -msgstr "" - msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -1928,6 +1936,9 @@ msgstr "" msgid "ClusterIntegration|sign up" msgstr "" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "" @@ -1975,6 +1986,9 @@ msgstr "提交" msgid "CommitMessage|Add %{file_name}" msgstr "添加 %{file_name}" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "提交" @@ -2047,24 +2061,18 @@ msgstr "" msgid "Configure Gitaly timeouts." msgstr "" -msgid "Configure Sidekiq job throttling." -msgstr "" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "" msgid "Configure limits for web and API requests." msgstr "" -msgid "Configure push and pull mirrors." +msgid "Configure push mirrors." msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "" @@ -2149,6 +2157,9 @@ msgstr "" msgid "Contribution guide" msgstr "貢獻指南" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "" @@ -2182,6 +2193,15 @@ msgstr "" msgid "ConvDev Index" msgstr "" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "" @@ -2287,9 +2307,6 @@ msgstr "創建..." msgid "Create project label" msgstr "" -msgid "CreateNewFork|Fork" -msgstr "派生" - msgid "CreateTag|Tag" msgstr "標籤" @@ -2407,6 +2424,9 @@ msgstr "" msgid "Decline and sign out" msgstr "" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "" @@ -2609,9 +2629,21 @@ msgstr "" msgid "Disable group Runners" msgstr "" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "" @@ -2771,6 +2803,12 @@ msgstr "" msgid "Enable the Performance Bar for a given group." msgstr "" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "" @@ -2906,10 +2944,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3020,6 +3058,9 @@ msgstr "" msgid "Expand sidebar" msgstr "" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "" @@ -3101,6 +3142,9 @@ msgstr "" msgid "Fields on this page are now uneditable, you can configure" msgstr "" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "文件" @@ -3113,9 +3157,18 @@ msgstr "" msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "按提交消息過濾" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "按路徑查找" @@ -3143,7 +3196,7 @@ msgstr "推送者:" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3182,16 +3235,15 @@ msgstr "" msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "派生" - msgid "ForkedFromProjectPath|Forked from" msgstr "派生自" @@ -3249,6 +3301,9 @@ msgstr "" msgid "Generate a default set of labels" msgstr "" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "" @@ -3426,6 +3481,9 @@ msgstr "" msgid "Geo|All projects" msgstr "" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3468,6 +3526,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "" @@ -3480,6 +3541,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "" @@ -3507,6 +3571,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3522,6 +3592,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "" @@ -3600,12 +3673,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "跳轉到派生項目" - -msgid "GoToYourFork|Fork" -msgstr "跳轉到派生項目" - msgid "Google Code import" msgstr "" @@ -3666,13 +3733,13 @@ msgstr "" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." @@ -3759,6 +3826,9 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "" @@ -3771,19 +3841,19 @@ msgstr "" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "" -msgid "GroupsTree|Filter by name..." -msgstr "" - msgid "GroupsTree|Leave this group" msgstr "" msgid "GroupsTree|Loading groups" msgstr "" -msgid "GroupsTree|Sorry, no groups matched your search" +msgid "GroupsTree|No groups matched your search" msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" + +msgid "GroupsTree|Search by name" msgstr "" msgid "Have your users email" @@ -3825,6 +3895,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "" @@ -3988,6 +4061,9 @@ 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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4055,6 +4131,12 @@ msgstr "循環週期" msgid "Introducing Cycle Analytics" msgstr "週期分析簡介" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "" @@ -4094,9 +4176,6 @@ msgstr "" msgid "Jobs" msgstr "" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4133,7 +4212,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4239,6 +4318,9 @@ msgstr "最新流水線" msgid "Last commit" msgstr "最後提交" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "" @@ -4480,6 +4562,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "" @@ -4534,9 +4619,6 @@ msgstr "" msgid "MergeRequests|Toggle comments for this file" msgstr "" -msgid "MergeRequests|Updating discussions failed" -msgstr "" - msgid "MergeRequests|View file @ %{commitId}" msgstr "" @@ -4561,6 +4643,9 @@ msgstr "" msgid "Metrics - Prometheus" msgstr "" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "" @@ -4741,9 +4826,6 @@ msgstr "" msgid "More" msgstr "" -msgid "More actions" -msgstr "" - msgid "More info" msgstr "" @@ -4895,6 +4977,9 @@ 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 due date" msgstr "" @@ -4916,6 +5001,9 @@ msgstr "" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "" @@ -4943,6 +5031,9 @@ msgstr "" msgid "No repository" msgstr "沒有存儲庫" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "沒有計劃" @@ -4979,6 +5070,9 @@ msgstr "" msgid "Not enough data" msgstr "數據不足" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "" @@ -5409,12 +5503,6 @@ msgstr "於階段" msgid "Plain diff" msgstr "" -msgid "Planned finish date" -msgstr "" - -msgid "Planned start date" -msgstr "" - msgid "PlantUML" msgstr "" @@ -5454,9 +5542,15 @@ msgstr "" msgid "Preferences|Navigation theme" msgstr "" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "" @@ -5493,6 +5587,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "" @@ -5502,15 +5599,30 @@ msgstr "" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "" @@ -5523,39 +5635,108 @@ msgstr "" msgid "Profiles|Deleting an account has the following effects:" msgstr "" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "" msgid "Profiles|Invalid username" msgstr "" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "" msgid "Profiles|Username successfully changed" msgstr "" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "" @@ -5565,6 +5746,15 @@ msgstr "" msgid "Profiles|Your account is currently an owner in these groups:" msgstr "" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5601,6 +5791,9 @@ msgstr "項目 '%{project_name}' 已更新完成。" msgid "Project Badges" msgstr "" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "項目訪問權限必須明確授權給每個用戶。" @@ -5628,6 +5821,9 @@ msgstr "項目導出已開始。下載鏈接將通過電子郵件發送。" msgid "Project name" msgstr "" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "訂閱" @@ -5655,6 +5851,27 @@ msgstr "從未" msgid "ProjectLifecycle|Stage" msgstr "階段" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -5961,6 +6178,9 @@ msgstr "自述文件" msgid "Real-time features" msgstr "" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "" @@ -6037,6 +6257,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "" @@ -6046,18 +6269,36 @@ msgstr "" msgid "Repo by URL" msgstr "" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6070,6 +6311,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6124,9 +6368,21 @@ msgstr "" msgid "Resolve discussion" msgstr "" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "" @@ -6176,9 +6432,24 @@ msgstr "" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "" @@ -6188,6 +6459,12 @@ msgstr "" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6212,6 +6489,9 @@ msgstr "" msgid "SAML Single Sign On Settings" msgstr "" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "" @@ -6290,6 +6570,9 @@ msgstr "" msgid "Search milestones" msgstr "" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6338,13 +6621,6 @@ msgstr "" msgid "Security Dashboard" msgstr "" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6360,6 +6636,9 @@ msgstr "" msgid "Select Archive Format" msgstr "選擇下載格式" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "" @@ -6393,6 +6672,9 @@ msgstr "" msgid "Select target branch" msgstr "選擇目標分支" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6405,6 +6687,9 @@ msgstr "" msgid "Send email" msgstr "" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "" @@ -6450,6 +6735,12 @@ msgstr "" msgid "Set up Koding" msgstr "設置 Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "" @@ -6462,12 +6753,6 @@ msgstr "設置密碼" msgid "Settings" msgstr "" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "" - msgid "Share" msgstr "" @@ -6477,6 +6762,9 @@ msgstr "" msgid "Shared Runners" msgstr "" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "" @@ -6559,7 +6847,7 @@ msgstr "" msgid "Slack application" msgstr "" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6643,6 +6931,9 @@ msgstr "" msgid "SortOptions|Largest repository" msgstr "" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "" @@ -6673,6 +6964,9 @@ msgstr "" msgid "SortOptions|Most popular" msgstr "" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "" @@ -6703,6 +6997,9 @@ msgstr "" msgid "SortOptions|Recent sign in" msgstr "" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "" @@ -6778,6 +7075,9 @@ msgstr "" msgid "Start a %{new_merge_request} with these changes" msgstr "由此更改 %{new_merge_request}" +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "運作 Runner!" @@ -6811,6 +7111,9 @@ msgstr "" msgid "Subgroups" msgstr "" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "" @@ -6844,6 +7147,9 @@ msgstr "" msgid "System metrics (Custom)" msgstr "" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "" @@ -7076,6 +7382,9 @@ msgstr "該階段每條數據所花的時間" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7085,6 +7394,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "中位數是壹個數列中最中間的值。例如在 3、5、9 之間,中位數是 5。在 3、5、7、8 之間,中位數是 (5 + 7)/ 2 = 6。" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "" @@ -7094,6 +7406,15 @@ msgstr "" msgid "There are no merge requests to show" msgstr "" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "訪問 Git 存儲時出現問題:" @@ -7142,10 +7463,13 @@ msgstr "" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is after the due date, so this epic won't appear in the roadmap." +msgstr "" + +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7477,12 +7801,21 @@ msgstr "" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "" @@ -7510,7 +7843,7 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." msgstr "" msgid "To widen your search, change or remove filters." @@ -7525,6 +7858,9 @@ msgstr "" msgid "Toggle Sidebar" msgstr "" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "" @@ -7603,6 +7939,12 @@ msgstr "" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "" @@ -7618,6 +7960,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "" @@ -7687,15 +8032,15 @@ msgstr "上傳新文件" msgid "Upload file" msgstr "上傳文件" -msgid "Upload new avatar" -msgstr "" - msgid "UploadLink|click to upload" msgstr "點擊上傳" msgid "Upvotes" msgstr "" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "" @@ -7723,6 +8068,9 @@ msgstr "使用全局通知設置" msgid "Used by members to sign in to your group in GitLab" msgstr "" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "" @@ -7735,9 +8083,6 @@ msgstr "" msgid "Users" msgstr "" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "" @@ -8053,6 +8398,9 @@ msgstr "只能在分支上添加文件" msgid "You can only edit files when you are on a branch" msgstr "" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "" @@ -8086,9 +8434,6 @@ msgstr "" msgid "You must have maintainer access to force delete a lock" msgstr "" -msgid "You must sign in to star a project" -msgstr "必須登錄才能對項目加星標" - msgid "You need a different license to enable FileLocks feature" msgstr "" @@ -8098,6 +8443,12 @@ msgstr "" msgid "You need permission." msgstr "需要相關的權限。" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "不會收到任何通知郵件" @@ -8185,14 +8536,6 @@ msgstr "" msgid "among other things" msgstr "" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - msgid "assign yourself" msgstr "" @@ -8220,61 +8563,83 @@ msgstr "" msgid "ciReport|%{remainingPackagesCount} more" msgstr "" -msgid "ciReport|%{reportName} is loading" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" msgstr "" -msgid "ciReport|%{type} detected no security vulnerabilities" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} detected no vulnerabilities" msgstr "" -msgid "ciReport|Class" +msgid "ciReport|%{reportType} is loading" msgstr "" -msgid "ciReport|Code quality" +msgid "ciReport|%{reportType}: Loading resulted in an error" msgstr "" -msgid "ciReport|Confidence" +msgid "ciReport|(errors when loading results)" msgstr "" -msgid "ciReport|Container scanning detected" +msgid "ciReport|(is loading)" msgstr "" -msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." +msgid "ciReport|(is loading, errors when loading results)" msgstr "" -msgid "ciReport|Container scanning is loading" +msgid "ciReport|Class" msgstr "" -msgid "ciReport|Container scanning resulted in error while loading results" +msgid "ciReport|Code quality" msgstr "" -msgid "ciReport|DAST detected" +msgid "ciReport|Confidence" msgstr "" -msgid "ciReport|DAST is loading" +msgid "ciReport|Container scanning" msgstr "" -msgid "ciReport|DAST resulted in error while loading results" +msgid "ciReport|Container scanning detected" msgstr "" -msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "" -msgid "ciReport|Dependency scanning detected" +msgid "ciReport|DAST" +msgstr "" + +msgid "ciReport|DAST detected" msgstr "" -msgid "ciReport|Dependency scanning is loading" +msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." +msgstr "" + +msgid "ciReport|Dependency scanning" msgstr "" -msgid "ciReport|Dependency scanning resulted in error while loading results" +msgid "ciReport|Dependency scanning detected" msgstr "" msgid "ciReport|Description" @@ -8307,9 +8672,6 @@ msgstr "" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "" -msgid "ciReport|Learn more about whitelisting" -msgstr "" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8348,13 +8710,10 @@ msgstr "" msgid "ciReport|Revert dismissal" msgstr "" -msgid "ciReport|SAST detected" +msgid "ciReport|SAST" msgstr "" -msgid "ciReport|SAST is loading" -msgstr "" - -msgid "ciReport|SAST resulted in error while loading results" +msgid "ciReport|SAST detected" msgstr "" msgid "ciReport|Security scanning" @@ -8363,9 +8722,6 @@ msgstr "" msgid "ciReport|Security scanning failed loading any results" msgstr "" -msgid "ciReport|Security scanning is loading" -msgstr "" - msgid "ciReport|Severity" msgstr "" @@ -8396,9 +8752,6 @@ msgstr "" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "" @@ -8440,17 +8793,6 @@ msgstr[0] "天" msgid "deploy token" msgstr "" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "" - -msgid "detected no vulnerabilities" -msgstr "" - msgid "disabled" msgstr "" @@ -8719,6 +9061,9 @@ msgstr "" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "" @@ -8737,6 +9082,9 @@ msgstr "" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "新建合併請求" @@ -8790,6 +9138,9 @@ msgstr "" msgid "to help your contributors communicate effectively!" msgstr "" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "" diff --git a/locale/zh_TW/gitlab.po b/locale/zh_TW/gitlab.po index 534e1f64ea1..0d6fe4395ef 100644 --- a/locale/zh_TW/gitlab.po +++ b/locale/zh_TW/gitlab.po @@ -13,7 +13,7 @@ msgstr "" "X-Crowdin-Project: gitlab-ee\n" "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" -"PO-Revision-Date: 2018-09-04 07:32\n" +"PO-Revision-Date: 2018-10-02 09:30\n" msgid " Status" msgstr "" @@ -107,6 +107,9 @@ msgstr "" msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects." msgstr "%{group_docs_link_start}群組%{group_docs_link_end} 允許您管理、協作多個專案。群組的成員可以訪問群組下的所有專案。" +msgid "%{issuableType} will be removed! Are you sure?" +msgstr "" + msgid "%{loadingIcon} Started" msgstr "%{loadingIcon} 開始" @@ -148,25 +151,15 @@ msgstr "%{text} 可用" msgid "%{title} changes" msgstr "%{title} 變更" -msgid "%{type} detected 1 fixed vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} fixed vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 new vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} new vulnerabilities" -msgstr[0] "" - -msgid "%{type} detected 1 vulnerability" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities" -msgstr[0] "%{type} 偵測到 %{vulnerabilityCount} 個漏洞" - -msgid "%{type} detected 1 vulnerability for the source branch only" -msgid_plural "%{type} detected %{vulnerabilityCount} vulnerabilities for the source branch only" -msgstr[0] "" - msgid "%{unstaged} unstaged and %{staged} staged changes" msgstr "%{unstaged} 個未暫存和 %{staged} 個已暫存變更" +msgid "%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc." +msgstr "" + +msgid "+ %{count} more" +msgstr "" + msgid "+ %{moreCount} more" msgstr "+ %{moreCount} 更多" @@ -275,11 +268,17 @@ msgid "Removes source branch" msgstr "刪除來源分支" msgid "A 'Runner' is a process which runs a job. You can set up as many Runners as you need." -msgstr "一個「執行器」是一個執行工作的進程。你可以安裝你需要的多個執行器。" +msgstr "" msgid "A collection of graphs regarding Continuous Integration" msgstr "持續整合相關的圖表" +msgid "A default branch cannot be chosen for an empty project." +msgstr "" + +msgid "A deleted user" +msgstr "" + msgid "A new branch will be created in your fork and a new merge request will be started." msgstr "將會再創建一個新的分支,並建立一個新的合併請求。" @@ -322,6 +321,9 @@ msgstr "存取憑證" msgid "Access denied! Please verify you can add deploy keys to this repository." msgstr "存取被拒!請驗證您是否可以在此版本庫部屬金鑰。" +msgid "Access expiration date" +msgstr "" + msgid "Access to '%{classification_label}' not allowed" msgstr "不允許存取「%{classification_label}」" @@ -361,15 +363,15 @@ msgstr "新增群組 Webhook 和 GitLab 企業版本。" msgid "Add Kubernetes cluster" msgstr "增加 Kubernetes 叢集" -msgid "Add License" -msgstr "新增授權條款" - msgid "Add Readme" msgstr "增加說明檔案" msgid "Add additional text to appear in all email communications. %{character_limit} character limit" msgstr "增加顯示於所有電子郵件對話的附加文字。最多 %{character_limit} 個字。" +msgid "Add license" +msgstr "" + msgid "Add new application" msgstr "建立新應用程式" @@ -388,6 +390,9 @@ msgstr "加入使用者至群組:" msgid "Add users to group" msgstr "加入使用者到群組" +msgid "Adding new applications is disabled in your GitLab instance. Please contact your GitLab administrator to get the permission" +msgstr "" + msgid "Additional text" msgstr "附加文字" @@ -685,6 +690,9 @@ msgstr "四月" msgid "Archived project! Repository and other project resources are read-only" msgstr "這是個已經封存的專案!其檔案庫與其其他專案資源為唯讀狀態。" +msgid "Archived projects" +msgstr "" + msgid "Are you sure you want to delete this pipeline schedule?" msgstr "確定要刪除此流水線排程嗎?" @@ -722,7 +730,7 @@ msgid "Ascending" msgstr "順序" msgid "Ask your group maintainer to set up a group Runner." -msgstr "詢問您的群組維護者以安裝群組執行器。" +msgstr "" msgid "Assertion consumer service URL" msgstr "Assertion 客戶服務連結" @@ -844,6 +852,9 @@ msgstr "將根據設定的的 CI / CD 流程自動建構、測試和部署應用 msgid "AutoDevOps|Learn more in the %{link_to_documentation}" msgstr "了解更多於 %{link_to_documentation}" +msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}" +msgstr "" + msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}." msgstr "如果 %{link_to_auto_devops_settings} 這個專案,您可以自動建置和測試你的應用程式 %{link_to_add_kubernetes_cluster} 則可以讓你自動部署" @@ -880,9 +891,6 @@ msgstr "背景作業" msgid "Background color" msgstr "背景顏色" -msgid "Background jobs" -msgstr "背景工作" - msgid "Badges" msgstr "徽章" @@ -1364,6 +1372,12 @@ msgstr "選擇檔案⋯" msgid "Choose a branch/tag (e.g. %{master}) or enter a commit (e.g. %{sha}) to see what's changed or to create a merge request." msgstr "選擇分支/標籤(例如:%{master})或者輸入更動紀錄(例如:%{sha})以查看更改內容或建立合併請求。" +msgid "Choose a template..." +msgstr "" + +msgid "Choose a type..." +msgstr "" + msgid "Choose any color." msgstr "選取顏色。" @@ -1526,6 +1540,9 @@ msgstr "複製檔案庫" msgid "Close" msgstr "關閉" +msgid "Close epic" +msgstr "" + msgid "Closed" msgstr "已關閉" @@ -1574,11 +1591,11 @@ msgstr "CA認證" msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" msgstr "憑證 (PEM格式)" -msgid "ClusterIntegration|Choose which of your project's environments will use this Kubernetes cluster." -msgstr "選擇您要使用此 Kubernetes 叢集的專案環境" +msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications." +msgstr "" -msgid "ClusterIntegration|Control how your Kubernetes cluster integrates with GitLab" -msgstr "控制 Kubernetes 叢集如何與 GitLab 整合" +msgid "ClusterIntegration|Choose which of your environments will use this cluster." +msgstr "" msgid "ClusterIntegration|Copy API URL" msgstr "複製 API 連結" @@ -1604,6 +1621,12 @@ msgstr "建立 Kubernetes 叢集" msgid "ClusterIntegration|Did you know?" msgstr "你知道嗎?" +msgid "ClusterIntegration|Enable or disable GitLab's connection to your Kubernetes cluster." +msgstr "" + +msgid "ClusterIntegration|Enable this setting if using role-based access control (RBAC)." +msgstr "" + msgid "ClusterIntegration|Enter the details for your Kubernetes cluster" msgstr "輸入您的 Kubernetes 叢集詳細資訊" @@ -1626,7 +1649,7 @@ msgid "ClusterIntegration|GitLab Integration" msgstr "GitLab 整合" msgid "ClusterIntegration|GitLab Runner" -msgstr "GitLab Runner" +msgstr "Gitlab Runner" msgid "ClusterIntegration|GitLab Runner connects to this project's repository and executes CI/CD jobs, pushing results back and deploying, applications to production." msgstr "" @@ -1670,9 +1693,6 @@ msgstr "安裝" msgid "ClusterIntegration|Install Prometheus" msgstr "安裝 Prometheus" -msgid "ClusterIntegration|Install applications on your Kubernetes cluster. Read more about %{helpLink}" -msgstr "" - msgid "ClusterIntegration|Installed" msgstr "已安裝" @@ -1706,15 +1726,6 @@ msgstr "Kubernetes 叢集健康程度" msgid "ClusterIntegration|Kubernetes cluster integration" msgstr "Kubernetes 叢集整合" -msgid "ClusterIntegration|Kubernetes cluster integration is disabled for this project." -msgstr "此專案禁用 Kubernetes 叢集整合" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project." -msgstr "此專案已啟用 Kubernetes 叢集整合" - -msgid "ClusterIntegration|Kubernetes cluster integration is enabled for this project. Disabling this integration will not affect your Kubernetes cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "此專案已經啟用 Kubernetes 叢集整合。關閉此整合並不會引響您的 Kubernetes 叢集,他只會暫時性的關閉 GitLab 與它的連結。" - msgid "ClusterIntegration|Kubernetes cluster is being created on Google Kubernetes Engine..." msgstr "Kubernetes 叢集已經在 Google Kubernetes Engine 上被建立" @@ -1739,12 +1750,6 @@ msgstr "瞭解有關 %{help_link_start}Kubernetes%{help_link_end} 的詳細資 msgid "ClusterIntegration|Learn more about %{help_link_start}zones%{help_link_end}." msgstr "瞭解有關 %{help_link_start}區域%{help_link_end} 的詳細資訊。" -msgid "ClusterIntegration|Learn more about environments" -msgstr "了解關於環境的更多資訊" - -msgid "ClusterIntegration|Learn more about security configuration" -msgstr "了解更多安全性設定" - msgid "ClusterIntegration|Machine type" msgstr "機器型別" @@ -1802,6 +1807,9 @@ msgstr "Prometheus" msgid "ClusterIntegration|Prometheus is an open-source monitoring system with %{gitlabIntegrationLink} to monitor deployed applications." msgstr "" +msgid "ClusterIntegration|RBAC-enabled cluster (experimental)" +msgstr "" + msgid "ClusterIntegration|Read our %{link_to_help_page} on Kubernetes cluster integration." msgstr "閱讀我們關於 Kubernetes 叢集整合的 %{link_to_help_page}。" @@ -1832,9 +1840,6 @@ msgstr "搜尋專案" msgid "ClusterIntegration|Search zones" msgstr "搜尋區域" -msgid "ClusterIntegration|Security" -msgstr "安全" - msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "查看與編輯您的 Kubernetes 叢集詳細資訊" @@ -1874,12 +1879,15 @@ msgstr "安裝 %{title} 時發生錯誤" msgid "ClusterIntegration|The IP address is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time." msgstr "" -msgid "ClusterIntegration|The default cluster configuration grants access to a wide set of functionalities needed to successfully build and deploy a containerised application." -msgstr "預設的叢集設定,允許存取廣泛的功能,用以建置和部署可以使用容器技術擴充的應用程式。" +msgid "ClusterIntegration|The default cluster configuration grants access to many functionalities needed to successfully build and deploy a containerised application." +msgstr "" msgid "ClusterIntegration|This account must have permissions to create a Kubernetes cluster in the %{link_to_container_project} specified below" msgstr "此帳戶必須擁有在 %{link_to_container_project} 中建立 Kubernetes 叢集的權限" +msgid "ClusterIntegration|This option will allow you to install applications on RBAC clusters." +msgstr "" + msgid "ClusterIntegration|Toggle Kubernetes Cluster" msgstr "切換 Kubernetes 叢集" @@ -1898,6 +1906,9 @@ msgstr "" msgid "ClusterIntegration|With a Kubernetes cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "當叢集連結到此專案,你可以使用複閱應用,部署你的應用程式,執行你的流水線,還有更多容易上手的方式可以使用。" +msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below" +msgstr "" + msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" msgstr "您的帳號必須有 %{link_to_kubernetes_engine}" @@ -1916,9 +1927,6 @@ msgstr "文件" msgid "ClusterIntegration|help page" msgstr "說明頁面" -msgid "ClusterIntegration|installing applications" -msgstr "安裝應用程序" - msgid "ClusterIntegration|meets the requirements" msgstr "符合需求" @@ -1928,6 +1936,9 @@ msgstr "設定正確" msgid "ClusterIntegration|sign up" msgstr "註冊" +msgid "Code owners" +msgstr "" + msgid "Cohorts" msgstr "Cohorts" @@ -1975,6 +1986,9 @@ msgstr "送交" msgid "CommitMessage|Add %{file_name}" msgstr "建立 %{file_name}" +msgid "CommitWidget|authored" +msgstr "" + msgid "Commits" msgstr "更動記錄" @@ -2047,24 +2061,18 @@ msgstr "機密的" msgid "Configure Gitaly timeouts." msgstr "設定 Gitaly 延遲過久。" -msgid "Configure Sidekiq job throttling." -msgstr "設定 Sidekiq 工作限制。" - msgid "Configure automatic git checks and housekeeping on repositories." msgstr "於檔案庫上設定自動 Git 檢查與內務管理" msgid "Configure limits for web and API requests." msgstr "為網路與 API 請求設定限制。" -msgid "Configure push and pull mirrors." -msgstr "設定推送和提取的鏡像。" +msgid "Configure push mirrors." +msgstr "" msgid "Configure storage path and circuit breaker settings." msgstr "設定儲存路徑與斷路器設定。" -msgid "Configure the %{link} integration." -msgstr "" - msgid "Configure the way a user creates a new account." msgstr "設定使用者建立新帳號的方式。" @@ -2090,7 +2098,7 @@ msgid "ContainerRegistry|Created" msgstr "已建立" msgid "ContainerRegistry|First log in to GitLab’s Container Registry using your GitLab username and password. If you have %{link_2fa} you need to use a %{link_token}:" -msgstr "請先使用你的 GitLab 帳號來登入 GitLab 的 Container Registry。如果你有 %{link_2fa} ,你必須使用 %{link_token}:" +msgstr "請先使用你的 Gitlab 帳號來登入 Gitlab 的 Container Registry。如果你有 %{link_2fa} ,你必須使用 %{link_token}:" msgid "ContainerRegistry|GitLab supports up to 3 levels of image names. The following examples of images are valid for your project:" msgstr "GitLab 支援多達 3 級的映像檔名稱。以下映像檔範例對您的專案有幫助:" @@ -2149,6 +2157,9 @@ msgstr "貢獻" msgid "Contribution guide" msgstr "協作指南" +msgid "Contributions for %{calendar_date}" +msgstr "" + msgid "Contributions per group member" msgstr "每個群組成員的貢獻" @@ -2182,6 +2193,15 @@ msgstr "控制此 Geo 節點驗證操作的最大並行量" msgid "ConvDev Index" msgstr "ConvDev 索引" +msgid "Copy %{protocol} clone URL" +msgstr "" + +msgid "Copy HTTPS clone URL" +msgstr "" + +msgid "Copy SSH clone URL" +msgstr "" + msgid "Copy SSH public key to clipboard" msgstr "複製 SSH 公鑰到剪貼簿" @@ -2287,9 +2307,6 @@ msgstr "建立..." msgid "Create project label" msgstr "建立專案標籤" -msgid "CreateNewFork|Fork" -msgstr "分支" - msgid "CreateTag|Tag" msgstr "建立標籤" @@ -2407,6 +2424,9 @@ msgstr "十二月" msgid "Decline and sign out" msgstr "拒絕並登出" +msgid "Default Branch" +msgstr "" + msgid "Default classification label" msgstr "預設分類標籤" @@ -2609,9 +2629,21 @@ msgstr "為此專案停用" msgid "Disable group Runners" msgstr "停用群組執行器" +msgid "Discard" +msgstr "" + +msgid "Discard all changes" +msgstr "" + +msgid "Discard all unstaged changes?" +msgstr "" + msgid "Discard changes" msgstr "撤銷變更" +msgid "Discard changes to %{path}?" +msgstr "" + msgid "Discard draft" msgstr "放棄草稿" @@ -2771,6 +2803,12 @@ msgstr "啟用 reCAPTCHA 或 Akismet 並設定 IP 上限。" msgid "Enable the Performance Bar for a given group." msgstr "啟用提供群組的效能桿。" +msgid "Enable usage ping" +msgstr "" + +msgid "Enable usage ping to get an overview of how you are using GitLab from a feature perspective." +msgstr "" + msgid "Enabled" msgstr "已啟用" @@ -2906,10 +2944,10 @@ msgstr "" msgid "Epics|These dates affect how your epics appear in the roadmap. Dates from milestones come from the milestones assigned to issues in the epic. You can also set fixed dates or remove them entirely." msgstr "" -msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a due date to any issue in the epic." +msgid "Epics|To schedule your epic's %{epicDateType} date based on milestones, assign a milestone with a %{epicDateType} date to any issue in the epic." msgstr "" -msgid "Epics|finish" +msgid "Epics|due" msgstr "" msgid "Epics|start" @@ -3020,6 +3058,9 @@ msgstr "展開全部" msgid "Expand sidebar" msgstr "展開側邊欄" +msgid "Expiration date" +msgstr "" + msgid "Explore" msgstr "瀏覽" @@ -3101,6 +3142,9 @@ msgstr "二月" msgid "Fields on this page are now uneditable, you can configure" msgstr "此頁面欄位現在無法編輯,你可以設置" +msgid "File templates" +msgstr "" + msgid "Files" msgstr "檔案" @@ -3113,9 +3157,18 @@ msgstr "填寫以下的欄位,開啟 %{enable_label} 後按 msgid "Filter" msgstr "" +msgid "Filter by %{issuable_type} that are currently closed." +msgstr "" + +msgid "Filter by %{issuable_type} that are currently opened." +msgstr "" + msgid "Filter by commit message" msgstr "以更動說明篩選" +msgid "Filter..." +msgstr "" + msgid "Find by path" msgstr "以路徑搜尋" @@ -3143,7 +3196,7 @@ msgstr "推送者:" msgid "Fixed date" msgstr "" -msgid "Fixed finish date" +msgid "Fixed due date" msgstr "" msgid "Fixed start date" @@ -3182,16 +3235,15 @@ msgstr "對於內部專案,任何登錄的使用者都可以查看流水線並 msgid "For more information, go to the " msgstr "" +msgid "For more information, see the documentation on %{deactivating_usage_ping_link_start}deactivating the usage ping%{deactivating_usage_ping_link_end}." +msgstr "" + msgid "For private projects, any member (guest or higher) can view pipelines and access job details (output logs and artifacts)" msgstr "對於私人專案,任何成員 (訪客或以上) 都可以查看流水線並存取工作詳細資訊 (輸出日誌和產物)" msgid "For public projects, anyone can view pipelines and access job details (output logs and artifacts)" msgstr "對於公開專案,任何人都可以查看流水線並存取工作詳細資訊 (輸出日誌和產物)" -msgid "Fork" -msgid_plural "Forks" -msgstr[0] "分支" - msgid "ForkedFromProjectPath|Forked from" msgstr "分支自" @@ -3249,6 +3301,9 @@ msgstr "一般流水線" msgid "Generate a default set of labels" msgstr "產生預設的標籤" +msgid "Geo" +msgstr "" + msgid "Geo Nodes" msgstr "Geo 節點" @@ -3426,6 +3481,9 @@ msgstr "" msgid "Geo|All projects" msgstr "所有專案" +msgid "Geo|Could not remove tracking entry for an existing project." +msgstr "" + msgid "Geo|Error message" msgstr "" @@ -3468,6 +3526,9 @@ msgstr "" msgid "Geo|Pending verification" msgstr "" +msgid "Geo|Project (ID: %{project_id}) no longer exists on the primary. It is safe to remove this entry, as this will not remove any data on disk." +msgstr "" + msgid "Geo|Projects in certain groups" msgstr "某些群組中的專案" @@ -3480,6 +3541,9 @@ msgstr "" msgid "Geo|Redownload" msgstr "" +msgid "Geo|Remove" +msgstr "" + msgid "Geo|Repository sync capacity" msgstr "版本庫同步量" @@ -3507,6 +3571,12 @@ msgstr "" msgid "Geo|Synchronization failed - %{error}" msgstr "" +msgid "Geo|Tracking entry for project (%{project_id}) was successfully removed." +msgstr "" + +msgid "Geo|Tracking entry will be removed. Are you sure?" +msgstr "" + msgid "Geo|Unknown state" msgstr "" @@ -3522,6 +3592,9 @@ msgstr "" msgid "Geo|You need a different license to use Geo replication" msgstr "" +msgid "Get a free instance review" +msgstr "" + msgid "Git" msgstr "Git" @@ -3600,12 +3673,6 @@ msgstr "" msgid "Go to %{link_to_google_takeout}." msgstr "" -msgid "Go to your fork" -msgstr "前往您的分支" - -msgid "GoToYourFork|Fork" -msgstr "前往您的分支" - msgid "Google Code import" msgstr "匯入 Google Code" @@ -3666,14 +3733,14 @@ msgstr "抱歉,沒有任何 Epic 符合您的搜尋。" msgid "GroupRoadmap|The roadmap shows the progress of your epics along a timeline" msgstr "開發藍圖顯示時間軸上您的 Epic 進度" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." -msgstr "若要檢視開發藍圖,請新增這個群組或其子群組中一個 Epic 的計畫開始與完成日期。月檢視中,只會顯示上個月、這個月、和接下來五個月的 Epic – 從 %{startDate} 到 %{endDate}。" +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." -msgstr "若要檢視開發藍圖,請新增這個群組或其子群組中一個 Epic 的計畫開始與完成日期。季度檢視中,只會顯示上個季度、這個季度、和接下來四個季度的 Epic – 從 %{startDate} 到 %{endDate}。" +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the quarters view, only epics in the past quarter, current quarter, and next 4 quarters are shown – from %{startDate} to %{endDate}." +msgstr "" -msgid "GroupRoadmap|To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." -msgstr "若要檢視開發藍圖,請新增這個群組或其子群組中一個 Epic 的計畫開始與完成日期。週檢視中,只會顯示上週、這週、和接下來四週的 Epic – 從 %{startDate} 到 %{endDate}。" +msgid "GroupRoadmap|To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the weeks view, only epics in the past week, current week, and next 4 weeks are shown – from %{startDate} to %{endDate}." +msgstr "" msgid "GroupRoadmap|To widen your search, change or remove filters. In the months view, only epics in the past month, current month, and next 5 months are shown – from %{startDate} to %{endDate}." msgstr "若要擴大您的搜尋,請嘗試修改或移除篩選器。月檢視中,只會顯示上個月、這個月、和接下來五個月的 Epic – 從 %{startDate} 到 %{endDate}。" @@ -3759,6 +3826,9 @@ msgstr "找不到群組" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "你可以管理群組內所有成員的每個專案的存取權限" +msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" +msgstr "" + msgid "GroupsTree|Create a project in this group." msgstr "在此群組建立新的專案" @@ -3771,20 +3841,20 @@ msgstr "編輯群組" msgid "GroupsTree|Failed to leave the group. Please make sure you are not the only owner." msgstr "無法離開群組,請確保您不是唯一的擁有者。" -msgid "GroupsTree|Filter by name..." -msgstr "以名稱篩選⋯" - msgid "GroupsTree|Leave this group" msgstr "離開此群組" msgid "GroupsTree|Loading groups" msgstr "群組讀取中" -msgid "GroupsTree|Sorry, no groups matched your search" -msgstr "不好意思,沒有搜尋到任何符合條件的群組" +msgid "GroupsTree|No groups matched your search" +msgstr "" + +msgid "GroupsTree|No groups or projects matched your search" +msgstr "" -msgid "GroupsTree|Sorry, no groups or projects matched your search" -msgstr "不好意思,沒有搜尋到任何符合條件的群組或專案" +msgid "GroupsTree|Search by name" +msgstr "" msgid "Have your users email" msgstr "有來自您使用者的信件" @@ -3825,6 +3895,9 @@ msgstr "" msgid "Hide host keys manual input" msgstr "" +msgid "Hide payload" +msgstr "" + msgid "Hide value" msgid_plural "Hide values" msgstr[0] "隱藏資料" @@ -3988,6 +4061,9 @@ msgstr "透過議題權重和 GitLab 企業版本改善議題管理。" msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." msgstr "使用進階全域搜尋和 GitLab 企業版本來改進搜尋。" +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 the next step, you'll be able to select the projects you want to import." msgstr "" @@ -4055,6 +4131,12 @@ msgstr "循環週期" msgid "Introducing Cycle Analytics" msgstr "週期分析簡介" +msgid "Invite" +msgstr "" + +msgid "Issue" +msgstr "" + msgid "Issue Boards" msgstr "議題看板" @@ -4094,9 +4176,6 @@ msgstr "工作已被抹除" msgid "Jobs" msgstr "任務" -msgid "Job|Are you sure you want to erase this job?" -msgstr "" - msgid "Job|Browse" msgstr "" @@ -4133,7 +4212,7 @@ msgstr "" msgid "Job|The artifacts were removed" msgstr "" -msgid "Job|The artifacts will be removed" +msgid "Job|The artifacts will be removed in" msgstr "" msgid "Job|This job is stuck, because the project doesn't have any runners online assigned to it." @@ -4239,6 +4318,9 @@ msgstr "最新流水線" msgid "Last commit" msgstr "最後更動記錄" +msgid "Last contact" +msgstr "" + msgid "Last edited %{date}" msgstr "最後編輯於 %{date}" @@ -4480,6 +4562,9 @@ msgstr "" msgid "Maven package" msgstr "" +msgid "Max access level" +msgstr "" + msgid "Maximum git storage failures" msgstr "最大 git 儲存失敗" @@ -4534,9 +4619,6 @@ msgstr "儲存評論失敗" msgid "MergeRequests|Toggle comments for this file" msgstr "切換此文件的註釋" -msgid "MergeRequests|Updating discussions failed" -msgstr "更新討論失敗" - msgid "MergeRequests|View file @ %{commitId}" msgstr "查看文件@ %{commitId}" @@ -4561,6 +4643,9 @@ msgstr "指標 - Influx" msgid "Metrics - Prometheus" msgstr "指標 - Prometheus" +msgid "Metrics and profiling" +msgstr "" + msgid "Metrics|Business" msgstr "企業" @@ -4741,9 +4826,6 @@ msgstr "月" msgid "More" msgstr "更多" -msgid "More actions" -msgstr "更多動作" - msgid "More info" msgstr "更多資訊" @@ -4895,6 +4977,9 @@ msgstr "無法連接到 Gitaly 伺服器,請檢查您的日誌!" msgid "No container images stored for this project. Add one by following the instructions above." msgstr "" +msgid "No contributions were found" +msgstr "" + msgid "No due date" msgstr "沒有到期日" @@ -4916,6 +5001,9 @@ msgstr "選取的時間範圍中沒有議題。" msgid "No labels with such name or description" msgstr "" +msgid "No license. All rights reserved" +msgstr "" + msgid "No merge requests for the selected time period." msgstr "選取的時間範圍中沒有合併請求。" @@ -4943,6 +5031,9 @@ msgstr "選取的時間範圍中沒有推送。" msgid "No repository" msgstr "找不到檔案庫" +msgid "No runners found" +msgstr "" + msgid "No schedules" msgstr "沒有排程" @@ -4979,6 +5070,9 @@ msgstr "非機密" msgid "Not enough data" msgstr "資料不足" +msgid "Not now" +msgstr "" + msgid "Note that the master branch is automatically protected. %{link_to_protected_branches}" msgstr "請注意,master 分支預設為受保護的。 %{link_to_protected_branches}" @@ -5409,12 +5503,6 @@ msgstr "於階段" msgid "Plain diff" msgstr "本文差異" -msgid "Planned finish date" -msgstr "計畫完成日期" - -msgid "Planned start date" -msgstr "計畫開始日期" - msgid "PlantUML" msgstr "PlantUML" @@ -5454,9 +5542,15 @@ msgstr "偏好設定" msgid "Preferences|Navigation theme" msgstr "導航主題" +msgid "Press Enter or click to search" +msgstr "" + msgid "Preview" msgstr "" +msgid "Preview payload" +msgstr "" + msgid "Primary" msgstr "主要" @@ -5493,6 +5587,9 @@ msgstr "" msgid "Profiles| You are going to change the username %{currentUsernameBold} to %{newUsernameBold}. Profile and projects will be redirected to the %{newUsername} namespace but this redirect will expire once the %{currentUsername} namespace is registered by another user or group. Please update your Git repository remotes as soon as possible." msgstr "" +msgid "Profiles|%{author_name} made a private contribution" +msgstr "" + msgid "Profiles|Account scheduled for removal." msgstr "帳號將會被刪除" @@ -5502,15 +5599,30 @@ msgstr "新增金鑰" msgid "Profiles|Add status emoji" msgstr "" +msgid "Profiles|Avatar cropper" +msgstr "" + +msgid "Profiles|Avatar will be removed. Are you sure?" +msgstr "" + msgid "Profiles|Change username" msgstr "變更使用者名稱" +msgid "Profiles|Choose file..." +msgstr "" + +msgid "Profiles|Choose to show contributions of private projects on your public profile without any project, repository or organization information." +msgstr "" + msgid "Profiles|Clear status" msgstr "" msgid "Profiles|Current path: %{path}" msgstr "目前路徑:%{path}" +msgid "Profiles|Current status" +msgstr "" + msgid "Profiles|Delete Account" msgstr "刪除帳號" @@ -5523,39 +5635,108 @@ msgstr "刪除您的帳號?" msgid "Profiles|Deleting an account has the following effects:" msgstr "刪除帳號將會造成以下影響:" +msgid "Profiles|Do not show on profile" +msgstr "" + +msgid "Profiles|Don't display activity-related personal information on your profiles" +msgstr "" + +msgid "Profiles|Edit Profile" +msgstr "" + msgid "Profiles|Invalid password" msgstr "無效的密碼" msgid "Profiles|Invalid username" msgstr "無效的使用者名稱" +msgid "Profiles|Main settings" +msgstr "" + +msgid "Profiles|No file chosen" +msgstr "" + msgid "Profiles|Path" msgstr "位置" +msgid "Profiles|Position and size your new avatar" +msgstr "" + +msgid "Profiles|Private contributions" +msgstr "" + +msgid "Profiles|Public Avatar" +msgstr "" + +msgid "Profiles|Remove avatar" +msgstr "" + +msgid "Profiles|Set new profile picture" +msgstr "" + +msgid "Profiles|Some options are unavailable for LDAP accounts" +msgstr "" + +msgid "Profiles|Tell us about yourself in fewer than 250 characters." +msgstr "" + +msgid "Profiles|The maximum file size allowed is 200KB." +msgstr "" + msgid "Profiles|This doesn't look like a public SSH key, are you sure you want to add it?" msgstr "這看起來不像是 SSH 公鑰,您確定要增加它嗎?" +msgid "Profiles|This email will be displayed on your public profile." +msgstr "" + msgid "Profiles|This emoji and message will appear on your profile and throughout the interface." msgstr "" +msgid "Profiles|This feature is experimental and translations are not complete yet." +msgstr "" + +msgid "Profiles|This information will appear on your profile." +msgstr "" + msgid "Profiles|Type your %{confirmationValue} to confirm:" msgstr "輸入您的 %{confirmationValue} 以確認:" msgid "Profiles|Typically starts with \"ssh-rsa …\"" msgstr "通常以 \"ssh-rsa …\" 起頭" +msgid "Profiles|Update profile settings" +msgstr "" + msgid "Profiles|Update username" msgstr "更新使用者名稱" +msgid "Profiles|Upload new avatar" +msgstr "" + msgid "Profiles|Username change failed - %{message}" msgstr "使用者名稱更改失敗 - %{message}" msgid "Profiles|Username successfully changed" msgstr "使用者名稱順利變更" +msgid "Profiles|Website" +msgstr "" + msgid "Profiles|What's your status?" msgstr "" +msgid "Profiles|You can change your avatar here" +msgstr "" + +msgid "Profiles|You can change your avatar here or remove the current avatar to revert to %{gravatar_link}" +msgstr "" + +msgid "Profiles|You can upload your avatar here" +msgstr "" + +msgid "Profiles|You can upload your avatar here or change it at %{gravatar_link}" +msgstr "" + msgid "Profiles|You don't have access to delete this user." msgstr "您沒有權限刪除此帳號" @@ -5565,6 +5746,15 @@ msgstr "你必須轉換你的所有權或在你刪除你帳號前刪除這些群 msgid "Profiles|Your account is currently an owner in these groups:" msgstr "你的帳號目前擁有這些群組:" +msgid "Profiles|Your email address was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your location was automatically set based on your %{provider_label} account." +msgstr "" + +msgid "Profiles|Your name was automatically set based on your %{provider_label} account, so people you know can recognize you." +msgstr "" + msgid "Profiles|Your status" msgstr "" @@ -5601,6 +5791,9 @@ msgstr "專案 '%{project_name}' 更新完成。" msgid "Project Badges" msgstr "專案徽章" +msgid "Project URL" +msgstr "" + msgid "Project access must be granted explicitly to each user." msgstr "專案權限必須一一指派給每個使用者。" @@ -5628,6 +5821,9 @@ msgstr "專案導出已開始。完成後下載連結會送到您的信箱。" msgid "Project name" msgstr "專案名稱" +msgid "Project slug" +msgstr "" + msgid "ProjectActivityRSS|Subscribe" msgstr "訂閱" @@ -5655,6 +5851,27 @@ msgstr "從未" msgid "ProjectLifecycle|Stage" msgstr "階段" +msgid "ProjectOverview|Fork" +msgstr "" + +msgid "ProjectOverview|Forks" +msgstr "" + +msgid "ProjectOverview|Go to your fork" +msgstr "" + +msgid "ProjectOverview|Star" +msgstr "" + +msgid "ProjectOverview|Unstar" +msgstr "" + +msgid "ProjectOverview|You have reached your project limit" +msgstr "" + +msgid "ProjectOverview|You must sign in to star a project" +msgstr "" + msgid "ProjectPage|Project ID: %{project_id}" msgstr "" @@ -5961,6 +6178,9 @@ msgstr "說明檔" msgid "Real-time features" msgstr "即時功能" +msgid "Recent searches" +msgstr "" + msgid "Reference:" msgstr "參考來源:" @@ -6037,6 +6257,9 @@ msgstr "" msgid "Rename folder" msgstr "" +msgid "Reopen epic" +msgstr "" + msgid "Repair authentication" msgstr "修復認證" @@ -6046,18 +6269,36 @@ msgstr "" msgid "Repo by URL" msgstr "來自 URL 的版本庫" +msgid "Reporting" +msgstr "" + msgid "Reports|%{failedString} and %{resolvedString}" msgstr "" msgid "Reports|Class" msgstr "" +msgid "Reports|Confidence" +msgstr "" + +msgid "Reports|Dismiss Vulnerability" +msgstr "" + msgid "Reports|Execution time" msgstr "" msgid "Reports|Failure" msgstr "" +msgid "Reports|More info" +msgstr "" + +msgid "Reports|New Issue" +msgstr "" + +msgid "Reports|Severity" +msgstr "" + msgid "Reports|System output" msgstr "" @@ -6070,6 +6311,9 @@ msgstr "" msgid "Reports|Test summary results are being parsed" msgstr "" +msgid "Reports|Vulnerability" +msgstr "" + msgid "Reports|no changed test results" msgstr "" @@ -6124,9 +6368,21 @@ msgstr "解決來源分支上的衝突" msgid "Resolve discussion" msgstr "關閉討論" +msgid "Response metrics (AWS ELB)" +msgstr "" + msgid "Response metrics (Custom)" msgstr "接收指標 (自訂)" +msgid "Response metrics (HA Proxy)" +msgstr "" + +msgid "Response metrics (NGINX Ingress)" +msgstr "" + +msgid "Response metrics (NGINX)" +msgstr "" + msgid "Resume" msgstr "繼續" @@ -6176,9 +6432,24 @@ msgstr "執行外部版本庫的 CI / CD 流水線。" msgid "Run untagged jobs" msgstr "" +msgid "Runner cannot be assigned to other projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects" +msgstr "" + +msgid "Runner runs jobs from all unassigned projects in its group" +msgstr "" + +msgid "Runner runs jobs from assigned projects" +msgstr "" + msgid "Runner token" msgstr "執行器憑證" +msgid "Runner will not receive any new jobs" +msgstr "" + msgid "Runners" msgstr "執行器" @@ -6188,6 +6459,12 @@ msgstr "執行器 API" msgid "Runners can be placed on separate users, servers, and even on your local machine." msgstr "執行器可放置於不同的使用者、伺服器,甚至在您的本地機器上。" +msgid "Runners can be placed on separate users, servers, even on your local machine." +msgstr "" + +msgid "Runners currently online: %{active_runners_count}" +msgstr "" + msgid "Runners page" msgstr "" @@ -6212,6 +6489,9 @@ msgstr "SAML 單一登入" msgid "SAML Single Sign On Settings" msgstr "SAML 單一登入設定" +msgid "SAST" +msgstr "" + msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"." msgstr "SAML 憑證登入憑證的 SHA1 指紋。從您的身份提供者取得這個指紋 -- 它可能被稱為「Thumbprint」" @@ -6290,6 +6570,9 @@ msgstr "搜尋合併請求" msgid "Search milestones" msgstr "搜尋里程碑" +msgid "Search or filter results..." +msgstr "" + msgid "Search or jump to…" msgstr "" @@ -6338,13 +6621,6 @@ msgstr "" msgid "Security Dashboard" msgstr "安全儀表板" -msgid "Security scanning detected %d vulnerability for the source branch only" -msgid_plural "Security scanning detected %d vulnerabilities for the source branch only" -msgstr[0] "" - -msgid "Security scanning detected no vulnerabilities for the source branch only" -msgstr "" - msgid "SecurityDashboard| The security dashboard displays the latest security report. Use it to find and fix vulnerabilities." msgstr "" @@ -6360,6 +6636,9 @@ msgstr "選擇" msgid "Select Archive Format" msgstr "選擇下載格式" +msgid "Select a group to invite" +msgstr "" + msgid "Select a namespace to fork the project" msgstr "選擇一個命名空間,以複製這個專案" @@ -6393,6 +6672,9 @@ msgstr "選擇來源分支" msgid "Select target branch" msgstr "選擇目標分支" +msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one." +msgstr "" + msgid "Select the custom project template source group." msgstr "" @@ -6405,6 +6687,9 @@ msgstr "選擇性同步" msgid "Send email" msgstr "傳送電子郵件" +msgid "Send usage data" +msgstr "" + msgid "Sep" msgstr "九月" @@ -6450,6 +6735,12 @@ msgstr "設定 CI/CD" msgid "Set up Koding" msgstr "設定 Koding" +msgid "Set up a %{type} Runner manually" +msgstr "" + +msgid "Set up a specific Runner automatically" +msgstr "" + msgid "Set up assertions/attributes/claims (email, first_name, last_name) and NameID according to %{docsLinkStart}the documentation %{icon}%{docsLinkEnd}" msgstr "根據 %{docsLinkStart}這個文件%{icon}%{docsLinkEnd} 設定斷言 / 屬性 / 聲明 (email, first_name, last_name) 和 NameID" @@ -6462,12 +6753,6 @@ msgstr "設定密碼" msgid "Settings" msgstr "設定" -msgid "Set up a %{type} Runner manually" -msgstr "" - -msgid "Set up a specific Runner automatically" -msgstr "自動設置特定的執行器" - msgid "Share" msgstr "分享" @@ -6477,6 +6762,9 @@ msgstr "與成員分享 %{sso_label},使他們能透過您的 msgid "Shared Runners" msgstr "分享的執行器" +msgid "Shared projects" +msgstr "" + msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero." msgstr "通過重設此命名空間的流水線執行時間,目前使用的執行時間將會被歸零。" @@ -6559,7 +6847,7 @@ msgstr "為靜態網站的大小與網域設定" msgid "Slack application" msgstr "Slack 應用程式" -msgid "Slack integration allows you to interact with GitLab via shash commands in a chat window." +msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window." msgstr "" msgid "Slower but makes sure the project workspace is pristine as it clones the repository from scratch for every job" @@ -6643,6 +6931,9 @@ msgstr "最大群組" msgid "SortOptions|Largest repository" msgstr "最大儲存庫" +msgid "SortOptions|Last Contact" +msgstr "" + msgid "SortOptions|Last created" msgstr "最近建立" @@ -6673,6 +6964,9 @@ msgstr "加大權重" msgid "SortOptions|Most popular" msgstr "最受歡迎" +msgid "SortOptions|Most stars" +msgstr "" + msgid "SortOptions|Name" msgstr "名稱" @@ -6703,6 +6997,9 @@ msgstr "優先" msgid "SortOptions|Recent sign in" msgstr "最近登入" +msgid "SortOptions|Start date" +msgstr "" + msgid "SortOptions|Start later" msgstr "稍後開始" @@ -6778,6 +7075,9 @@ msgstr "星標項目" msgid "Start a %{new_merge_request} with these changes" msgstr "以這些改動建立一個新的 %{new_merge_request} " +msgid "Start date" +msgstr "" + msgid "Start the Runner!" msgstr "啟動 Runner!" @@ -6811,6 +7111,9 @@ msgstr "儲存空間:" msgid "Subgroups" msgstr "子群組" +msgid "Subgroups and projects" +msgstr "" + msgid "Submit as spam" msgstr "以垃圾訊息提交" @@ -6844,6 +7147,9 @@ msgstr "系統標頭與尾端:" msgid "System metrics (Custom)" msgstr "系統指標 (自訂)" +msgid "System metrics (Kubernetes)" +msgstr "" + msgid "Tag (%{tag_count})" msgid_plural "Tags (%{tag_count})" msgstr[0] "標籤(%{tag_count})" @@ -6897,7 +7203,7 @@ msgid "TagsPage|Optionally, add a message to the tag." msgstr "增加標籤的說明(可選)" msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." -msgstr "增加標籤的發佈說明,這將會被儲存在GitLab資料庫中,並顯示於標籤頁。(可選)" +msgstr "增加標籤的發佈說明,這將會被儲存在Gitlab資料庫中,並顯示於標籤頁。(可選)" msgid "TagsPage|Release notes" msgstr "發佈說明" @@ -7076,6 +7382,9 @@ msgstr "該階段中每一個資料項目所花的時間。" msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgstr "" +msgid "The usage ping is disabled, and cannot be configured through this form." +msgstr "" + msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of :. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgstr "" @@ -7085,6 +7394,9 @@ msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "中位數是一個數列中最中間的值。例如在 3、5、9 之間,中位數是 5。在 3、5、7、8 之間,中位數是 (5 + 7)/ 2 = 6。" +msgid "There are no archived projects yet" +msgstr "" + msgid "There are no issues to show" msgstr "沒有可以顯示的議題" @@ -7094,6 +7406,15 @@ msgstr "目前還沒有標籤" msgid "There are no merge requests to show" msgstr "沒有任何的合併請求" +msgid "There are no projects shared with this group yet" +msgstr "" + +msgid "There are no staged changes" +msgstr "" + +msgid "There are no unstaged changes" +msgstr "" + msgid "There are problems accessing Git storage: " msgstr "存取 Git 儲存空間時出現問題:" @@ -7142,10 +7463,13 @@ msgstr "已縮小此看板範圍" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" -msgid "This date is after the planned finish date, so this epic won't appear in the roadmap." +msgid "This container registry has been scheduled for deletion." +msgstr "" + +msgid "This date is after the due date, so this epic won't appear in the roadmap." msgstr "" -msgid "This date is before the planned start date, so this epic won't appear in the roadmap." +msgid "This date is before the start date, so this epic won't appear in the roadmap." msgstr "" msgid "This diff is collapsed." @@ -7477,12 +7801,21 @@ msgstr "若要連接到一個 SVN 版本庫,請參閱 %{svn_link}。" msgid "To define internal users, first enable new users set to external" msgstr "" +msgid "To enable it and see User Cohorts, visit %{application_settings_link_start}application settings%{application_settings_link_end}." +msgstr "" + msgid "To get started you enter your FogBugz URL and login information below. In the next steps, you'll be able to map users and select the projects you want to import." msgstr "" msgid "To get started, please enter your Gitea Host URL and a %{link_to_personal_token}." msgstr "" +msgid "To help improve GitLab and its user experience, GitLab will periodically collect usage information." +msgstr "" + +msgid "To help improve GitLab, we would like to periodically collect usage information. This can be changed at any time in %{settings_link_start}Settings%{link_end}. %{info_link_start}More Information%{link_end}" +msgstr "" + msgid "To import GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to import." msgstr "要匯入 GitHub 存儲庫,你可以使用 %{personal_access_token_link}。當你建立你的個人存取權杖時,你將需要選擇檔案庫範圍,所以我們將會顯示你公開及私人的檔案庫清單進行匯入。" @@ -7510,8 +7843,8 @@ msgstr "" msgid "To validate your GitLab CI configurations, go to 'CI/CD → Pipelines' inside your project, and click on the 'CI Lint' button." msgstr "若要驗證您的 GitLab CI 設定,請前往您專案內的「CI/CD → 流水線」,並按下「CI Lint」按鈕。" -msgid "To view the roadmap, add a planned start or finish date to one of your epics in this group or its subgroups. Only epics in the past 3 months and the next 3 months are shown." -msgstr "若要檢視開發藍圖,請在您群組或子群組中的其中一個 Epic 中增加計畫開始或完成時間。只會顯示最近三個月或接下來三個月的 Epic。" +msgid "To view the roadmap, add a start or due date to one of your epics in this group or its subgroups. In the months view, only epics in the past month, current month, and next 5 months are shown." +msgstr "" msgid "To widen your search, change or remove filters." msgstr "若要擴大搜尋範圍,請變更或移除篩選器。" @@ -7525,6 +7858,9 @@ msgstr "待辦事項" msgid "Toggle Sidebar" msgstr "展開 / 收起側邊欄" +msgid "Toggle commit description" +msgstr "" + msgid "Toggle discussion" msgstr "切換討論" @@ -7603,6 +7939,12 @@ msgstr "無法載入差異。%{button_try_again}" msgid "Unable to sign you in to the group with SAML due to \"%{reason}\"" msgstr "因為「%{reason}」,所以無法讓你透過 SAML 登入這個群組。" +msgid "Unable to update this epic at this time." +msgstr "" + +msgid "Undo" +msgstr "" + msgid "Unknown" msgstr "未知" @@ -7618,6 +7960,9 @@ msgstr "已解鎖" msgid "Unresolve discussion" msgstr "重新討論" +msgid "Unstage" +msgstr "" + msgid "Unstage all changes" msgstr "取消暫存所有變更" @@ -7687,15 +8032,15 @@ msgstr "上傳新檔案" msgid "Upload file" msgstr "上傳檔案" -msgid "Upload new avatar" -msgstr "上傳大頭貼" - msgid "UploadLink|click to upload" msgstr "點擊上傳" msgid "Upvotes" msgstr "讚" +msgid "Usage ping is not enabled" +msgstr "" + msgid "Usage statistics" msgstr "使用情形統計資料" @@ -7723,6 +8068,9 @@ msgstr "使用全域通知設定" msgid "Used by members to sign in to your group in GitLab" msgstr "用來讓成員登入您在 GitLab 的群組" +msgid "User Cohorts are only shown when the %{usage_ping_link_start}usage ping%{usage_ping_link_end} is enabled." +msgstr "" + msgid "User Settings" msgstr "使用者設定" @@ -7735,9 +8083,6 @@ msgstr "" msgid "Users" msgstr "使用者" -msgid "User|Current status" -msgstr "" - msgid "Variables" msgstr "變數" @@ -8053,6 +8398,9 @@ msgstr "只能在分支上建立檔案" msgid "You can only edit files when you are on a branch" msgstr "您只能在分支上編輯文件" +msgid "You can reset runners registration token by pressing a button below." +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}" msgstr "您可以透過使用互動模式選擇 %{use_ours} 或 %{use_theirs} 按鈕、或者是直接編輯檔案來解決合併衝突,並將這些變更提交到 %{branch_name}。" @@ -8086,9 +8434,6 @@ msgstr "您必須接受我們的服務條款和隱私政策才能註冊帳戶" msgid "You must have maintainer access to force delete a lock" msgstr "您必須擁有維護者存取才能強制移除鎖定" -msgid "You must sign in to star a project" -msgstr "必須登入才能收藏專案" - msgid "You need a different license to enable FileLocks feature" msgstr "您需要使用不同的授權以啟用 FileLocks 功能" @@ -8098,6 +8443,12 @@ msgstr "您需要 git-lfs 版本 %{min_git_lfs_version} (或更高版本) 才能 msgid "You need permission." msgstr "需要權限才能這麼做。" +msgid "You will loose all changes you've made to this file. This action cannot be undone." +msgstr "" + +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "不會收到任何通知郵件" @@ -8185,14 +8536,6 @@ msgstr "之前" msgid "among other things" msgstr "除了其他事情" -msgid "and %d fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "" - -msgid "and 1 fixed vulnerability" -msgid_plural "and %d fixed vulnerabilities" -msgstr[0] "和 %d 個已經修復的漏洞" - msgid "assign yourself" msgstr "指派給自己" @@ -8220,20 +8563,51 @@ msgstr "%{namespace} 被 %{vulnerability} 影響" msgid "ciReport|%{remainingPackagesCount} more" msgstr "%{remainingPackagesCount} 更多" -msgid "ciReport|%{reportName} is loading" -msgstr "正在載入 %{reportName}" +msgid "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{fixedCount} fixed vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new vulnerability" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} new vulnerabilities" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} new, and %{fixedCount} fixed vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected %{newCount} vulnerability for the source branch only" +msgid_plural "ciReport|%{reportType} %{status} detected %{newCount} vulnerabilities for the source branch only" +msgstr[0] "" + +msgid "ciReport|%{reportType} %{status} detected no new vulnerabilities" +msgstr "" + +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities" +msgstr "" -msgid "ciReport|%{reportName} resulted in error while loading results" -msgstr "載入結果時因 %{reportName} 而導致錯誤" +msgid "ciReport|%{reportType} %{status} detected no vulnerabilities for the source branch only" +msgstr "" -msgid "ciReport|%{type} detected no new security vulnerabilities" -msgstr "%{type} 未偵測到新的安全性漏洞" +msgid "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerability" +msgid_plural "ciReport|%{reportType} detected %{vulnerabilityCount} vulnerabilities" +msgstr[0] "" -msgid "ciReport|%{type} detected no security vulnerabilities" -msgstr "%{type} 未偵測到安全性漏洞" +msgid "ciReport|%{reportType} detected no vulnerabilities" +msgstr "" -msgid "ciReport|%{type} detected no vulnerabilities" -msgstr "%{type} 未偵測到漏洞" +msgid "ciReport|%{reportType} is loading" +msgstr "" + +msgid "ciReport|%{reportType}: Loading resulted in an error" +msgstr "" + +msgid "ciReport|(errors when loading results)" +msgstr "" + +msgid "ciReport|(is loading)" +msgstr "" + +msgid "ciReport|(is loading, errors when loading results)" +msgstr "" msgid "ciReport|Class" msgstr "類別" @@ -8244,39 +8618,30 @@ msgstr "程式碼品質" msgid "ciReport|Confidence" msgstr "信任" +msgid "ciReport|Container scanning" +msgstr "" + msgid "ciReport|Container scanning detected" msgstr "偵測到容器掃描" msgid "ciReport|Container scanning detects known vulnerabilities in your docker images." msgstr "容器掃描偵測在您的 Docker 映像中的已知漏洞。" -msgid "ciReport|Container scanning is loading" -msgstr "正在載入容器掃描" - -msgid "ciReport|Container scanning resulted in error while loading results" -msgstr "當載入結果時,因容器掃描而導致錯誤" +msgid "ciReport|DAST" +msgstr "" msgid "ciReport|DAST detected" msgstr "偵測到 DAST" -msgid "ciReport|DAST is loading" -msgstr "正在載入 DAST" - -msgid "ciReport|DAST resulted in error while loading results" -msgstr "載入結果時,因 DAST 而導致錯誤" - msgid "ciReport|Dependency Scanning detects known vulnerabilities in your source code's dependencies." msgstr "" +msgid "ciReport|Dependency scanning" +msgstr "" + msgid "ciReport|Dependency scanning detected" msgstr "偵測到相依性掃描" -msgid "ciReport|Dependency scanning is loading" -msgstr "正在載入相依性掃描" - -msgid "ciReport|Dependency scanning resulted in error while loading results" -msgstr "當載入結果時因相依性掃描而導致錯誤" - msgid "ciReport|Description" msgstr "說明" @@ -8307,9 +8672,6 @@ msgstr "實例" msgid "ciReport|Learn more about interacting with security reports (Alpha)." msgstr "了解關於和安全性報告 (Alpha) 互動的更多資訊。" -msgid "ciReport|Learn more about whitelisting" -msgstr "了解關於白名單的更多資訊" - msgid "ciReport|License management detected %d license for the source branch only" msgid_plural "ciReport|License management detected %d licenses for the source branch only" msgstr[0] "" @@ -8348,24 +8710,18 @@ msgstr "效能指標" msgid "ciReport|Revert dismissal" msgstr "撤回忽略" +msgid "ciReport|SAST" +msgstr "" + msgid "ciReport|SAST detected" msgstr "偵測到 SAST" -msgid "ciReport|SAST is loading" -msgstr "正在載入 SAST" - -msgid "ciReport|SAST resulted in error while loading results" -msgstr "當載入結果時,因 SAST 而導致錯誤" - msgid "ciReport|Security scanning" msgstr "安全性掃描" msgid "ciReport|Security scanning failed loading any results" msgstr "安全性掃描無法載入任何結果" -msgid "ciReport|Security scanning is loading" -msgstr "正在載入安全掃描" - msgid "ciReport|Severity" msgstr "嚴重性" @@ -8396,9 +8752,6 @@ msgstr "載入相依性掃描報告時發生錯誤。" msgid "ciReport|There was an error reverting the dismissal. Please try again." msgstr "撤回駁回時發生錯誤。請重試。" -msgid "ciReport|Unapproved vulnerabilities (red) can be marked as approved." -msgstr "未批准的漏洞 (紅色) 可以標記為已批准。" - msgid "ciReport|Upgrade %{name} from %{version} to %{fixed}." msgstr "將 %{name} 從 %{version} 升級到 %{fixed}。" @@ -8440,17 +8793,6 @@ msgstr[0] "日" msgid "deploy token" msgstr "部署憑證" -msgid "detected %d fixed vulnerability" -msgid_plural "detected %d fixed vulnerabilities" -msgstr[0] "偵測到 %d 個已修復漏洞" - -msgid "detected %d new vulnerability" -msgid_plural "detected %d new vulnerabilities" -msgstr[0] "偵測到 %d 個新漏洞" - -msgid "detected no vulnerabilities" -msgstr "未偵測到漏洞" - msgid "disabled" msgstr "已停用" @@ -8719,6 +9061,9 @@ msgstr "此合併請求正在被合併" msgid "mrWidget|This project is archived, write access has been disabled" msgstr "這個專案已經被打包,無法寫入" +msgid "mrWidget|You are not allowed to edit this project directly. Please fork to make changes." +msgstr "" + msgid "mrWidget|You can merge this merge request manually using the" msgstr "你可以手動合併這個合併請求,藉由" @@ -8737,6 +9082,9 @@ msgstr "進入" msgid "mrWidget|to be merged automatically when the pipeline succeeds" msgstr "當流水線完成時將會被自動合併" +msgid "n/a" +msgstr "" + msgid "new merge request" msgstr "建立合併請求" @@ -8790,6 +9138,9 @@ msgstr "這份文件" msgid "to help your contributors communicate effectively!" msgstr "協助你的貢獻者進行有效的溝通!" +msgid "toggle collapse" +msgstr "" + msgid "username" msgstr "使用者名稱" -- cgit v1.2.1 From 3fc4c096a592fbc0af3a8d60d2026ed673126a2f Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 17 Sep 2018 18:26:22 +0900 Subject: Squashed commit of the following: commit 9d9594ba20097dc4598f7eb42a9f9d78d73eae54 Author: Shinya Maeda Date: Thu Sep 13 20:18:31 2018 +0900 Cancel scheduled jobs commit f31c7172e07a9eb03b58c1e62eaa18cda4064aa6 Author: Shinya Maeda Date: Thu Sep 13 11:18:42 2018 +0900 Add Ci::BuildSchedule commit fb6b3ca638f40f9e1ee38b1fdd892bda4f6fede7 Author: Shinya Maeda Date: Wed Sep 12 20:02:50 2018 +0900 Scheduled jobs --- .../favicon_status_manual_with_auto_play.ico | Bin 0 -> 179677 bytes .../favicon_status_manual_with_auto_play.png | Bin 0 -> 1338 bytes app/models/ci/build.rb | 21 +++++++++ app/models/ci/build_schedule.rb | 25 ++++++++++ app/models/concerns/has_status.rb | 3 +- .../icons/_icon_status_manual_with_auto_play.svg | 1 + ...con_status_manual_with_auto_play_borderless.svg | 1 + app/workers/all_queues.yml | 1 + app/workers/build_finished_worker.rb | 1 + app/workers/ci/build_schedule_worker.rb | 16 +++++++ .../20180913102839_create_build_schedules.rb | 19 ++++++++ db/schema.rb | 8 ++++ lib/gitlab/ci/config/entry/job.rb | 12 ++++- lib/gitlab/ci/status/build/factory.rb | 1 + .../ci/status/build/manual_with_auto_play.rb | 52 +++++++++++++++++++++ lib/gitlab/ci/yaml_processor.rb | 3 +- 16 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png create mode 100644 app/models/ci/build_schedule.rb create mode 100644 app/views/shared/icons/_icon_status_manual_with_auto_play.svg create mode 100644 app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg create mode 100644 app/workers/ci/build_schedule_worker.rb create mode 100644 db/migrate/20180913102839_create_build_schedules.rb create mode 100644 lib/gitlab/ci/status/build/manual_with_auto_play.rb diff --git a/app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico b/app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico new file mode 100644 index 00000000000..d8528e5d0e4 Binary files /dev/null and b/app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico differ diff --git a/app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png b/app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png new file mode 100644 index 00000000000..3ca612a542d Binary files /dev/null and b/app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png differ diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 3dadb95443a..c2459b3f5f2 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -22,6 +22,7 @@ module Ci }.freeze has_one :last_deployment, -> { order('deployments.id DESC') }, as: :deployable, class_name: 'Deployment' + has_one :build_schedule, class_name: 'Ci::BuildSchedule', foreign_key: :build_id has_many :trace_sections, class_name: 'Ci::BuildTraceSection' has_many :trace_chunks, class_name: 'Ci::BuildTraceChunk', foreign_key: :build_id @@ -184,6 +185,12 @@ module Ci end end + after_transition any => [:manual] do |build| + build.run_after_commit do + build.schedule_delayed_execution + end + end + before_transition any => [:failed] do |build| next unless build.project next if build.retries_max.zero? @@ -229,6 +236,20 @@ module Ci action? && (manual? || retryable?) end + def autoplay? + manual? && options[:autoplay_in].present? + end + + def autoplay_at + ChronicDuration.parse(options[:autoplay_in])&.seconds&.from_now + end + + def schedule_delayed_execution + return unless autoplay? + + create_build_schedule!(execute_at: autoplay_at) + end + def action? self.when == 'manual' end diff --git a/app/models/ci/build_schedule.rb b/app/models/ci/build_schedule.rb new file mode 100644 index 00000000000..7f0a34b246d --- /dev/null +++ b/app/models/ci/build_schedule.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Ci + class BuildSchedule < ActiveRecord::Base + extend Gitlab::Ci::Model + include Importable + include AfterCommitQueue + + belongs_to :build + + after_create :schedule, unless: :importing? + + def execute_in + self.execute_at - Time.now + end + + private + + def schedule + run_after_commit do + Ci::BuildScheduleWorker.perform_at(self.execute_at, self.build_id) + end + end + end +end diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index b3960cbad1a..e2700db1438 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -92,7 +92,8 @@ module HasStatus scope :failed_or_canceled, -> { where(status: [:failed, :canceled]) } scope :cancelable, -> do - where(status: [:running, :pending, :created]) + where("status IN ('running', 'pending', 'created') OR " \ + "(status = 'manual' AND EXISTS (select 1 from ci_build_schedules where ci_builds.id = ci_build_schedules.build_id))") end end diff --git a/app/views/shared/icons/_icon_status_manual_with_auto_play.svg b/app/views/shared/icons/_icon_status_manual_with_auto_play.svg new file mode 100644 index 00000000000..a08c43b156f --- /dev/null +++ b/app/views/shared/icons/_icon_status_manual_with_auto_play.svg @@ -0,0 +1 @@ +Anchor-with-border \ No newline at end of file diff --git a/app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg b/app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg new file mode 100644 index 00000000000..a08c43b156f --- /dev/null +++ b/app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg @@ -0,0 +1 @@ +Anchor-with-border \ No newline at end of file diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 1eeb972cee9..b5a492122a3 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -60,6 +60,7 @@ - pipeline_default:build_trace_sections - pipeline_default:pipeline_metrics - pipeline_default:pipeline_notification +- pipeline_default:ci_build_schedule - pipeline_hooks:build_hooks - pipeline_hooks:pipeline_hooks - pipeline_processing:build_finished diff --git a/app/workers/build_finished_worker.rb b/app/workers/build_finished_worker.rb index 51cbbe8882e..889384d6be8 100644 --- a/app/workers/build_finished_worker.rb +++ b/app/workers/build_finished_worker.rb @@ -9,6 +9,7 @@ class BuildFinishedWorker # rubocop: disable CodeReuse/ActiveRecord def perform(build_id) Ci::Build.find_by(id: build_id).try do |build| + build&.build_schedule&.delete # We execute that in sync as this access the files in order to access local file, and reduce IO BuildTraceSectionsWorker.new.perform(build.id) BuildCoverageWorker.new.perform(build.id) diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb new file mode 100644 index 00000000000..448fb5bf41e --- /dev/null +++ b/app/workers/ci/build_schedule_worker.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module Ci + class BuildScheduleWorker + include ApplicationWorker + include PipelineQueue + + def perform(build_id) + ::Ci::Build.preload(:build_schedule).find_by(id: build_id).try do |build| + break unless build.build_schedule.present? + + Ci::PlayBuildService.new(build.project, build.user).execute(build) + end + end + end +end diff --git a/db/migrate/20180913102839_create_build_schedules.rb b/db/migrate/20180913102839_create_build_schedules.rb new file mode 100644 index 00000000000..1e9d9a70b0f --- /dev/null +++ b/db/migrate/20180913102839_create_build_schedules.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class CreateBuildSchedules < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def change + create_table :ci_build_schedules, id: :bigserial do |t| + t.integer :build_id, null: false + t.datetime :execute_at, null: false + + t.foreign_key :ci_builds, column: :build_id, on_delete: :cascade + t.index :build_id, unique: true + end + end +end diff --git a/db/schema.rb b/db/schema.rb index b3d4badaf82..581496d78ce 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -260,6 +260,13 @@ ActiveRecord::Schema.define(version: 20180924141949) do add_index "chat_teams", ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true, using: :btree + create_table "ci_build_schedules", id: :bigserial, force: :cascade do |t| + t.integer "build_id", null: false + t.datetime "execute_at", null: false + end + + add_index "ci_build_schedules", ["build_id"], name: "index_ci_build_schedules_on_build_id", unique: true, using: :btree + create_table "ci_build_trace_chunks", id: :bigserial, force: :cascade do |t| t.integer "build_id", null: false t.integer "chunk_index", null: false @@ -2288,6 +2295,7 @@ ActiveRecord::Schema.define(version: 20180924141949) do add_foreign_key "boards", "namespaces", column: "group_id", on_delete: :cascade add_foreign_key "boards", "projects", name: "fk_f15266b5f9", on_delete: :cascade add_foreign_key "chat_teams", "namespaces", on_delete: :cascade + add_foreign_key "ci_build_schedules", "ci_builds", column: "build_id", on_delete: :cascade add_foreign_key "ci_build_trace_chunks", "ci_builds", column: "build_id", on_delete: :cascade add_foreign_key "ci_build_trace_section_names", "projects", on_delete: :cascade add_foreign_key "ci_build_trace_sections", "ci_build_trace_section_names", column: "section_name_id", name: "fk_264e112c66", on_delete: :cascade diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index 016a896bde5..4376eb91a73 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -10,7 +10,7 @@ module Gitlab include Attributable ALLOWED_KEYS = %i[tags script only except type image services - allow_failure type stage when artifacts cache + allow_failure type stage when autoplay_in artifacts cache dependencies before_script after_script variables environment coverage retry extends].freeze @@ -34,6 +34,14 @@ module Gitlab validates :dependencies, array_of_strings: true validates :extends, type: String + + with_options if: :manual_action? do + validates :autoplay_in, duration: true, allow_nil: true + end + + with_options unless: :manual_action? do + validates :autoplay_in, presence: false + end end end @@ -84,7 +92,7 @@ module Gitlab :artifacts, :commands, :environment, :coverage, :retry attributes :script, :tags, :allow_failure, :when, :dependencies, - :retry, :extends + :retry, :extends, :autoplay_in def compose!(deps = nil) super do diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index 2b26ebb45a1..e1b40472fc5 100644 --- a/lib/gitlab/ci/status/build/factory.rb +++ b/lib/gitlab/ci/status/build/factory.rb @@ -5,6 +5,7 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::Build::Erased, + Status::Build::ManualWithAutoPlay, Status::Build::Manual, Status::Build::Canceled, Status::Build::Created, diff --git a/lib/gitlab/ci/status/build/manual_with_auto_play.rb b/lib/gitlab/ci/status/build/manual_with_auto_play.rb new file mode 100644 index 00000000000..f34f0be5d45 --- /dev/null +++ b/lib/gitlab/ci/status/build/manual_with_auto_play.rb @@ -0,0 +1,52 @@ +module Gitlab + module Ci + module Status + module Build + class ManualWithAutoPlay < Status::Extended + ### + # TODO: Those are random values. We have to fix accoding to the UX review + ### + + ### + # Core override + ### + def text + s_('CiStatusText|scheduled') + end + + def label + s_('CiStatusLabel|scheduled') + end + + def icon + 'timer' + end + + def favicon + 'favicon_status_manual_with_auto_play' + end + + ### + # Extension override + ### + def illustration + { + image: 'illustrations/canceled-job_empty.svg', + size: 'svg-394', + title: _('This job is a scheduled job with manual actions!'), + content: _('auto playyyyyyyyyyyyyy! This job depends on a user to trigger its process. Often they are used to deploy code to production environments') + } + end + + def status_tooltip + @status.status_tooltip + " (scheulded) : Execute in #{subject.build_schedule.execute_in.round} sec" + end + + def self.matches?(build, user) + build.autoplay? && !build.canceled? + end + end + end + end + end +end diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb index 5d1864ae9e2..5277b69a628 100644 --- a/lib/gitlab/ci/yaml_processor.rb +++ b/lib/gitlab/ci/yaml_processor.rb @@ -49,7 +49,8 @@ module Gitlab script: job[:script], after_script: job[:after_script], environment: job[:environment], - retry: job[:retry] + retry: job[:retry], + autoplay_in: job[:autoplay_in], }.compact } end -- cgit v1.2.1 From c03631a99618d43c66a1b9d0b4303d7253e45866 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 17 Sep 2018 20:00:29 +0900 Subject: Support new syntax --- app/models/ci/build.rb | 15 ++++--- app/services/ci/process_pipeline_service.rb | 2 +- lib/gitlab/ci/config/entry/job.rb | 12 ++--- lib/gitlab/ci/status/build/delayed.rb | 52 ++++++++++++++++++++++ lib/gitlab/ci/status/build/factory.rb | 2 +- .../ci/status/build/manual_with_auto_play.rb | 52 ---------------------- lib/gitlab/ci/yaml_processor.rb | 2 +- 7 files changed, 69 insertions(+), 68 deletions(-) create mode 100644 lib/gitlab/ci/status/build/delayed.rb delete mode 100644 lib/gitlab/ci/status/build/manual_with_auto_play.rb diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index c2459b3f5f2..be4a6c553e1 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -186,6 +186,7 @@ module Ci end after_transition any => [:manual] do |build| + puts "#{self.class.name} - #{__callee__}: 1" build.run_after_commit do build.schedule_delayed_execution end @@ -236,22 +237,22 @@ module Ci action? && (manual? || retryable?) end - def autoplay? - manual? && options[:autoplay_in].present? + def delayed? + manual? && options[:start_in].present? end - def autoplay_at - ChronicDuration.parse(options[:autoplay_in])&.seconds&.from_now + def execute_at + ChronicDuration.parse(options[:start_in])&.seconds&.from_now end def schedule_delayed_execution - return unless autoplay? + return unless delayed? - create_build_schedule!(execute_at: autoplay_at) + create_build_schedule!(execute_at: execute_at) end def action? - self.when == 'manual' + self.when == 'manual' || self.when == 'delayed' end # rubocop: disable CodeReuse/ServiceClass diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 69341a6c263..323075d404b 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -53,7 +53,7 @@ module Ci %w[failed] when 'always' %w[success failed skipped] - when 'manual' + when 'manual', 'delayed' %w[success skipped] else [] diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index 4376eb91a73..fa64041f7db 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -10,7 +10,7 @@ module Gitlab include Attributable ALLOWED_KEYS = %i[tags script only except type image services - allow_failure type stage when autoplay_in artifacts cache + allow_failure type stage when start_in artifacts cache dependencies before_script after_script variables environment coverage retry extends].freeze @@ -28,7 +28,7 @@ module Gitlab greater_than_or_equal_to: 0, less_than_or_equal_to: 2 } validates :when, - inclusion: { in: %w[on_success on_failure always manual], + inclusion: { in: %w[on_success on_failure always manual delayed], message: 'should be on_success, on_failure, ' \ 'always or manual' } @@ -36,11 +36,11 @@ module Gitlab validates :extends, type: String with_options if: :manual_action? do - validates :autoplay_in, duration: true, allow_nil: true + validates :start_in, duration: true, allow_nil: true end with_options unless: :manual_action? do - validates :autoplay_in, presence: false + validates :start_in, presence: false end end end @@ -92,7 +92,7 @@ module Gitlab :artifacts, :commands, :environment, :coverage, :retry attributes :script, :tags, :allow_failure, :when, :dependencies, - :retry, :extends, :autoplay_in + :retry, :extends, :start_in def compose!(deps = nil) super do @@ -119,7 +119,7 @@ module Gitlab end def manual_action? - self.when == 'manual' + self.when == 'manual' || self.when == 'delayed' end def ignored? diff --git a/lib/gitlab/ci/status/build/delayed.rb b/lib/gitlab/ci/status/build/delayed.rb new file mode 100644 index 00000000000..553d4cf8a71 --- /dev/null +++ b/lib/gitlab/ci/status/build/delayed.rb @@ -0,0 +1,52 @@ +module Gitlab + module Ci + module Status + module Build + class Delayed < Status::Extended + ### + # TODO: Those are random values. We have to fix accoding to the UX review + ### + + ### + # Core override + ### + def text + s_('CiStatusText|scheduled') + end + + def label + s_('CiStatusLabel|scheduled') + end + + def icon + 'timer' + end + + def favicon + 'favicon_status_manual_with_auto_play' + end + + ### + # Extension override + ### + def illustration + { + image: 'illustrations/canceled-job_empty.svg', + size: 'svg-394', + title: _('This job is a scheduled job with manual actions!'), + content: _('auto playyyyyyyyyyyyyy! This job depends on a user to trigger its process. Often they are used to deploy code to production environments') + } + end + + def status_tooltip + @status.status_tooltip + " (scheulded) : Execute in #{subject.build_schedule.execute_in.round} sec" + end + + def self.matches?(build, user) + build.delayed? && !build.canceled? + end + end + end + end + end +end diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index e1b40472fc5..0fbab6e7673 100644 --- a/lib/gitlab/ci/status/build/factory.rb +++ b/lib/gitlab/ci/status/build/factory.rb @@ -5,7 +5,7 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::Build::Erased, - Status::Build::ManualWithAutoPlay, + Status::Build::Delayed, Status::Build::Manual, Status::Build::Canceled, Status::Build::Created, diff --git a/lib/gitlab/ci/status/build/manual_with_auto_play.rb b/lib/gitlab/ci/status/build/manual_with_auto_play.rb deleted file mode 100644 index f34f0be5d45..00000000000 --- a/lib/gitlab/ci/status/build/manual_with_auto_play.rb +++ /dev/null @@ -1,52 +0,0 @@ -module Gitlab - module Ci - module Status - module Build - class ManualWithAutoPlay < Status::Extended - ### - # TODO: Those are random values. We have to fix accoding to the UX review - ### - - ### - # Core override - ### - def text - s_('CiStatusText|scheduled') - end - - def label - s_('CiStatusLabel|scheduled') - end - - def icon - 'timer' - end - - def favicon - 'favicon_status_manual_with_auto_play' - end - - ### - # Extension override - ### - def illustration - { - image: 'illustrations/canceled-job_empty.svg', - size: 'svg-394', - title: _('This job is a scheduled job with manual actions!'), - content: _('auto playyyyyyyyyyyyyy! This job depends on a user to trigger its process. Often they are used to deploy code to production environments') - } - end - - def status_tooltip - @status.status_tooltip + " (scheulded) : Execute in #{subject.build_schedule.execute_in.round} sec" - end - - def self.matches?(build, user) - build.autoplay? && !build.canceled? - end - end - end - end - end -end diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb index 5277b69a628..1dc6c28d24a 100644 --- a/lib/gitlab/ci/yaml_processor.rb +++ b/lib/gitlab/ci/yaml_processor.rb @@ -50,7 +50,7 @@ module Gitlab after_script: job[:after_script], environment: job[:environment], retry: job[:retry], - autoplay_in: job[:autoplay_in], + start_in: job[:start_in], }.compact } end -- cgit v1.2.1 From 8720edd45acc50473cb080c18c4b259079674e0a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 18 Sep 2018 14:20:59 +0900 Subject: Add debug script --- scheduled_job_fixture.rb | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 scheduled_job_fixture.rb diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb new file mode 100644 index 00000000000..55f50e941a4 --- /dev/null +++ b/scheduled_job_fixture.rb @@ -0,0 +1,98 @@ +## +# This is a debug script to reproduce specific scenarios for scheduled jobs (https://gitlab.com/gitlab-org/gitlab-ce/issues/51352) +# By using this script, you don't need to setup GitLab runner. +# This script is specifically made for FE/UX engineers. They can quickly check how scheduled jobs behave. +# +# *** THIS IS NOT TO BE MERGED *** +# +# ### How to use ### +# +# ### Prerequisite +# 1. Create a project +# 1. Create a .gitlab-ci.yml with the following content +# +# ``` +# stages: +# - build +# - test +# - production +# - rollout 10% +# - rollout 50% +# - rollout 100% +# - cleanup +# +# build: +# stage: build +# script: sleep 1s +# +# test: +# stage: test +# script: sleep 3s +# +# rollout 10%: +# stage: rollout 10% +# script: date +# when: delayed +# start_in: 10 seconds +# allow_failure: false +# +# rollout 50%: +# stage: rollout 50% +# script: date +# when: delayed +# start_in: 10 seconds +# allow_failure: false +# +# rollout 100%: +# stage: rollout 100% +# script: date +# when: delayed +# start_in: 10 seconds +# allow_failure: false +# +# cleanup: +# stage: cleanup +# script: date +# ``` +# +# ### How to load this script +# +# ``` +# bundle exec rails console # Login to rails console +# require '/path/to/scheduled_job_fixture.rb' # Load this script +# ``` +# +# ### Reproduce the scenario A) ~ Succeccfull timed incremantal rollout ~ +# +# ```` +# ScheduledJobFixture.new(29, 1).create_pipeline('master') +# ScheduledJobFixture.new(29, 1).finish_stage_until('test') # Succeed 'build' and 'test' jobs. 'rollout 10%' job will be scheduled. See the pipeline page +# ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 10%') # Succeed `rollout 10%` job. 'rollout 50%' job will be scheduled. +# ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 50%') # Succeed `rollout 50%` job. 'rollout 100%' job will be scheduled. +# ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 100%') # Succeed `rollout 100%` job. 'cleanup' job will be scheduled. +# ScheduledJobFixture.new(29, 1).finish_stage_until('cleanup') # Succeed `cleanup` job. The pipeline becomes green. +# ``` +class ScheduledJobFixture + attr_reader :project + attr_reader :user + + def initialize(project_id, user_id) + @project = Project.find_by_id(project_id) + @user = User.find_by_id(user_id) + end + + def create_pipeline(ref) + Ci::CreatePipelineService.new(project, user, ref: ref).execute(:web) + end + + def finish_stage_until(stage_name) + pipeline = Ci::Pipeline.last + pipeline.stages.order(:id).each do |stage| + stage.builds.map(&:success) + stage.update_status + pipeline.update_status + + return if stage.name == stage_name + end + end +end -- cgit v1.2.1 From a5d296e9be7cc48ddc75d04b117ae62bae7c9f5b Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 18 Sep 2018 14:45:17 +0900 Subject: replace images --- .../canary/favicon_status_manual_with_auto_play.ico | Bin 179677 -> 0 bytes .../ci_favicons/canary/favicon_status_scheduled.ico | Bin 0 -> 5430 bytes .../favicon_status_manual_with_auto_play.png | Bin 1338 -> 0 bytes .../images/ci_favicons/favicon_status_scheduled.png | Bin 0 -> 1072 bytes .../icons/_icon_status_manual_with_auto_play.svg | 1 - .../_icon_status_manual_with_auto_play_borderless.svg | 1 - app/views/shared/icons/_icon_status_scheduled.svg | 1 + .../shared/icons/_icon_status_scheduled_borderless.svg | 1 + 8 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico create mode 100644 app/assets/images/ci_favicons/canary/favicon_status_scheduled.ico delete mode 100644 app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png create mode 100644 app/assets/images/ci_favicons/favicon_status_scheduled.png delete mode 100644 app/views/shared/icons/_icon_status_manual_with_auto_play.svg delete mode 100644 app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg create mode 100644 app/views/shared/icons/_icon_status_scheduled.svg create mode 100644 app/views/shared/icons/_icon_status_scheduled_borderless.svg diff --git a/app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico b/app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico deleted file mode 100644 index d8528e5d0e4..00000000000 Binary files a/app/assets/images/ci_favicons/canary/favicon_status_manual_with_auto_play.ico and /dev/null differ diff --git a/app/assets/images/ci_favicons/canary/favicon_status_scheduled.ico b/app/assets/images/ci_favicons/canary/favicon_status_scheduled.ico new file mode 100644 index 00000000000..5444b8e41dc Binary files /dev/null and b/app/assets/images/ci_favicons/canary/favicon_status_scheduled.ico differ diff --git a/app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png b/app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png deleted file mode 100644 index 3ca612a542d..00000000000 Binary files a/app/assets/images/ci_favicons/favicon_status_manual_with_auto_play.png and /dev/null differ diff --git a/app/assets/images/ci_favicons/favicon_status_scheduled.png b/app/assets/images/ci_favicons/favicon_status_scheduled.png new file mode 100644 index 00000000000..d198c255fdd Binary files /dev/null and b/app/assets/images/ci_favicons/favicon_status_scheduled.png differ diff --git a/app/views/shared/icons/_icon_status_manual_with_auto_play.svg b/app/views/shared/icons/_icon_status_manual_with_auto_play.svg deleted file mode 100644 index a08c43b156f..00000000000 --- a/app/views/shared/icons/_icon_status_manual_with_auto_play.svg +++ /dev/null @@ -1 +0,0 @@ -Anchor-with-border \ No newline at end of file diff --git a/app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg b/app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg deleted file mode 100644 index a08c43b156f..00000000000 --- a/app/views/shared/icons/_icon_status_manual_with_auto_play_borderless.svg +++ /dev/null @@ -1 +0,0 @@ -Anchor-with-border \ No newline at end of file diff --git a/app/views/shared/icons/_icon_status_scheduled.svg b/app/views/shared/icons/_icon_status_scheduled.svg new file mode 100644 index 00000000000..ca6e4efce50 --- /dev/null +++ b/app/views/shared/icons/_icon_status_scheduled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/views/shared/icons/_icon_status_scheduled_borderless.svg b/app/views/shared/icons/_icon_status_scheduled_borderless.svg new file mode 100644 index 00000000000..dc38c01d898 --- /dev/null +++ b/app/views/shared/icons/_icon_status_scheduled_borderless.svg @@ -0,0 +1 @@ + \ No newline at end of file -- cgit v1.2.1 From e265fc3e28dbfe53d96646588a1587d5626e92de Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 18 Sep 2018 15:36:03 +0900 Subject: Rename delayed to scheduled --- app/models/ci/build.rb | 23 +++++++++----- app/workers/build_finished_worker.rb | 1 - app/workers/ci/build_schedule_worker.rb | 6 +++- lib/gitlab/ci/config/entry/job.rb | 2 +- lib/gitlab/ci/status/build/delayed.rb | 52 ------------------------------- lib/gitlab/ci/status/build/factory.rb | 2 +- lib/gitlab/ci/status/build/scheduled.rb | 54 +++++++++++++++++++++++++++++++++ 7 files changed, 76 insertions(+), 64 deletions(-) delete mode 100644 lib/gitlab/ci/status/build/delayed.rb create mode 100644 lib/gitlab/ci/status/build/scheduled.rb diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index be4a6c553e1..6ea574ed8ec 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -186,9 +186,8 @@ module Ci end after_transition any => [:manual] do |build| - puts "#{self.class.name} - #{__callee__}: 1" build.run_after_commit do - build.schedule_delayed_execution + build.schedule end end @@ -237,22 +236,30 @@ module Ci action? && (manual? || retryable?) end - def delayed? + def schedulable? manual? && options[:start_in].present? end - def execute_at - ChronicDuration.parse(options[:start_in])&.seconds&.from_now + def scheduled? + build.build_schedule.exist? end - def schedule_delayed_execution - return unless delayed? + def schedule + return unless schedulable? create_build_schedule!(execute_at: execute_at) end + def unschedule + build&.build_schedule&.delete + end + + def execute_at + ChronicDuration.parse(options[:start_in])&.seconds&.from_now + end + def action? - self.when == 'manual' || self.when == 'delayed' + %w[manual delayed].include?(self.when) end # rubocop: disable CodeReuse/ServiceClass diff --git a/app/workers/build_finished_worker.rb b/app/workers/build_finished_worker.rb index 889384d6be8..51cbbe8882e 100644 --- a/app/workers/build_finished_worker.rb +++ b/app/workers/build_finished_worker.rb @@ -9,7 +9,6 @@ class BuildFinishedWorker # rubocop: disable CodeReuse/ActiveRecord def perform(build_id) Ci::Build.find_by(id: build_id).try do |build| - build&.build_schedule&.delete # We execute that in sync as this access the files in order to access local file, and reduce IO BuildTraceSectionsWorker.new.perform(build.id) BuildCoverageWorker.new.perform(build.id) diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 448fb5bf41e..9f81aa3c71e 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -9,7 +9,11 @@ module Ci ::Ci::Build.preload(:build_schedule).find_by(id: build_id).try do |build| break unless build.build_schedule.present? - Ci::PlayBuildService.new(build.project, build.user).execute(build) + begin + Ci::PlayBuildService.new(build.project, build.user).execute(build) + ensure + build.unschedule + end end end end diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index fa64041f7db..02589d147ef 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -119,7 +119,7 @@ module Gitlab end def manual_action? - self.when == 'manual' || self.when == 'delayed' + %w[manual delayed].include?(self.when) end def ignored? diff --git a/lib/gitlab/ci/status/build/delayed.rb b/lib/gitlab/ci/status/build/delayed.rb deleted file mode 100644 index 553d4cf8a71..00000000000 --- a/lib/gitlab/ci/status/build/delayed.rb +++ /dev/null @@ -1,52 +0,0 @@ -module Gitlab - module Ci - module Status - module Build - class Delayed < Status::Extended - ### - # TODO: Those are random values. We have to fix accoding to the UX review - ### - - ### - # Core override - ### - def text - s_('CiStatusText|scheduled') - end - - def label - s_('CiStatusLabel|scheduled') - end - - def icon - 'timer' - end - - def favicon - 'favicon_status_manual_with_auto_play' - end - - ### - # Extension override - ### - def illustration - { - image: 'illustrations/canceled-job_empty.svg', - size: 'svg-394', - title: _('This job is a scheduled job with manual actions!'), - content: _('auto playyyyyyyyyyyyyy! This job depends on a user to trigger its process. Often they are used to deploy code to production environments') - } - end - - def status_tooltip - @status.status_tooltip + " (scheulded) : Execute in #{subject.build_schedule.execute_in.round} sec" - end - - def self.matches?(build, user) - build.delayed? && !build.canceled? - end - end - end - end - end -end diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index 0fbab6e7673..3f762c42747 100644 --- a/lib/gitlab/ci/status/build/factory.rb +++ b/lib/gitlab/ci/status/build/factory.rb @@ -5,7 +5,7 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::Build::Erased, - Status::Build::Delayed, + Status::Build::Scheduled, Status::Build::Manual, Status::Build::Canceled, Status::Build::Created, diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb new file mode 100644 index 00000000000..93da8fb9538 --- /dev/null +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -0,0 +1,54 @@ +module Gitlab + module Ci + module Status + module Build + class Scheduled < Status::Extended + ### + # Core override + ### + def text + s_('CiStatusText|scheduled') + end + + def label + s_('CiStatusLabel|scheduled') + end + + def icon + 'timer' + end + + def favicon + 'favicon_status_scheduled' + end + + ### + # Extension override + ### + def illustration + { + image: 'illustrations/canceled-job_empty.svg', + size: 'svg-394', + title: _("This is a scheduled to run in ") + " #{execute_in}", + content: _("This job will automatically run after it's timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action.") + } + end + + def status_tooltip + "scheduled manual action (#{execute_in})" + end + + def self.matches?(build, user) + build.schedulable? && !build.canceled? + end + + private + + def execute_in + Time.at(subject.build_schedule.execute_in).utc.strftime("%H:%M:%S") + end + end + end + end + end +end -- cgit v1.2.1 From 22e00b08e89f72eb0fefea2d1d623667c4461773 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 18 Sep 2018 15:53:31 +0900 Subject: Make schedule and unschedule consistent --- app/models/ci/build.rb | 10 +++++----- app/workers/ci/build_schedule_worker.rb | 9 +++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 6ea574ed8ec..b608bfdb8b9 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -187,7 +187,7 @@ module Ci after_transition any => [:manual] do |build| build.run_after_commit do - build.schedule + build.schedule! end end @@ -241,17 +241,17 @@ module Ci end def scheduled? - build.build_schedule.exist? + build_schedule.present? end - def schedule + def schedule! return unless schedulable? create_build_schedule!(execute_at: execute_at) end - def unschedule - build&.build_schedule&.delete + def unschedule! + build_schedule.delete! end def execute_at diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 9f81aa3c71e..84ef2edb767 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -7,13 +7,10 @@ module Ci def perform(build_id) ::Ci::Build.preload(:build_schedule).find_by(id: build_id).try do |build| - break unless build.build_schedule.present? + break unless build.scheduled? - begin - Ci::PlayBuildService.new(build.project, build.user).execute(build) - ensure - build.unschedule - end + build.unschedule! + Ci::PlayBuildService.new(build.project, build.user).execute(build) end end end -- cgit v1.2.1 From 1a6a59d6bc3ab2fc43cd3537ef9d8deea7398cc9 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 18 Sep 2018 16:12:13 +0900 Subject: Add unschedule endpont to job controller --- app/controllers/projects/jobs_controller.rb | 7 +++++++ config/routes/project.rb | 1 + 2 files changed, 8 insertions(+) diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb index 3f85e442be9..d4a0af6f0f9 100644 --- a/app/controllers/projects/jobs_controller.rb +++ b/app/controllers/projects/jobs_controller.rb @@ -110,6 +110,13 @@ class Projects::JobsController < Projects::ApplicationController redirect_to build_path(@build) end + def unschedule + return respond_422 unless @build.scheduled? + + @build.unschedule + redirect_to build_path(@build) + end + def status render json: BuildSerializer .new(project: @project, current_user: @current_user) diff --git a/config/routes/project.rb b/config/routes/project.rb index 8a5310b5c23..04a270c5cc9 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -275,6 +275,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do member do get :status post :cancel + post :unschedule post :retry post :play post :erase -- cgit v1.2.1 From f9877d715fd9ac152a8b7e88d4e740c95cb0b962 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 20 Sep 2018 08:18:49 +0200 Subject: Add placeholders to debug script example --- scheduled_job_fixture.rb | 104 ++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb index 55f50e941a4..6a5000e57fc 100644 --- a/scheduled_job_fixture.rb +++ b/scheduled_job_fixture.rb @@ -8,52 +8,52 @@ # ### How to use ### # # ### Prerequisite -# 1. Create a project +# 1. Create a project (for example with path `incremental-rollout`) # 1. Create a .gitlab-ci.yml with the following content # -# ``` -# stages: -# - build -# - test -# - production -# - rollout 10% -# - rollout 50% -# - rollout 100% -# - cleanup -# -# build: -# stage: build -# script: sleep 1s -# -# test: -# stage: test -# script: sleep 3s -# -# rollout 10%: -# stage: rollout 10% -# script: date -# when: delayed -# start_in: 10 seconds -# allow_failure: false -# -# rollout 50%: -# stage: rollout 50% -# script: date -# when: delayed -# start_in: 10 seconds -# allow_failure: false -# -# rollout 100%: -# stage: rollout 100% -# script: date -# when: delayed -# start_in: 10 seconds -# allow_failure: false -# -# cleanup: -# stage: cleanup -# script: date -# ``` +=begin +stages: +- build +- test +- production +- rollout 10% +- rollout 50% +- rollout 100% +- cleanup + +build: + stage: build + script: sleep 1s + +test: + stage: test + script: sleep 3s + +rollout 10%: + stage: rollout 10% + script: date + when: delayed + start_in: 10 seconds + allow_failure: false + +rollout 50%: + stage: rollout 50% + script: date + when: delayed + start_in: 10 seconds + allow_failure: false + +rollout 100%: + stage: rollout 100% + script: date + when: delayed + start_in: 10 seconds + allow_failure: false + +cleanup: + stage: cleanup + script: date +=end # # ### How to load this script # @@ -65,12 +65,16 @@ # ### Reproduce the scenario A) ~ Succeccfull timed incremantal rollout ~ # # ```` -# ScheduledJobFixture.new(29, 1).create_pipeline('master') -# ScheduledJobFixture.new(29, 1).finish_stage_until('test') # Succeed 'build' and 'test' jobs. 'rollout 10%' job will be scheduled. See the pipeline page -# ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 10%') # Succeed `rollout 10%` job. 'rollout 50%' job will be scheduled. -# ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 50%') # Succeed `rollout 50%` job. 'rollout 100%' job will be scheduled. -# ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 100%') # Succeed `rollout 100%` job. 'cleanup' job will be scheduled. -# ScheduledJobFixture.new(29, 1).finish_stage_until('cleanup') # Succeed `cleanup` job. The pipeline becomes green. +# project = Project.find_by(path: 'incremental-rollout') +# user = User.find_by(username: 'root') +# fixture = ScheduledJobFixture.new(project.id, user.id) +# +# fixture.create_pipeline('master') +# fixture.finish_stage_until('test') # Succeed 'build' and 'test' jobs. 'rollout 10%' job will be scheduled. See the pipeline page +# fixture.finish_stage_until('rollout 10%') # Succeed `rollout 10%` job. 'rollout 50%' job will be scheduled. +# fixture.finish_stage_until('rollout 50%') # Succeed `rollout 50%` job. 'rollout 100%' job will be scheduled. +# fixture.finish_stage_until('rollout 100%') # Succeed `rollout 100%` job. 'cleanup' job will be scheduled. +# fixture.finish_stage_until('cleanup') # Succeed `cleanup` job. The pipeline becomes green. # ``` class ScheduledJobFixture attr_reader :project -- cgit v1.2.1 From 7fffe0fb37fae4944b1a154e04a44006cee528f2 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 20 Sep 2018 09:29:41 +0200 Subject: Ensure that execute_in of a build schedule is not negative --- app/models/ci/build_schedule.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/ci/build_schedule.rb b/app/models/ci/build_schedule.rb index 7f0a34b246d..d6378224fe0 100644 --- a/app/models/ci/build_schedule.rb +++ b/app/models/ci/build_schedule.rb @@ -11,7 +11,7 @@ module Ci after_create :schedule, unless: :importing? def execute_in - self.execute_at - Time.now + [0, self.execute_at - Time.now].max end private -- cgit v1.2.1 From 33304b32573ac8215e24d17cff52c5a0c7bbed2e Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 20 Sep 2018 09:30:43 +0200 Subject: Use secondary color for SVG icons in CI buttons --- app/assets/stylesheets/framework/buttons.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/assets/stylesheets/framework/buttons.scss b/app/assets/stylesheets/framework/buttons.scss index 686ce0c63a4..c4296c7a88a 100644 --- a/app/assets/stylesheets/framework/buttons.scss +++ b/app/assets/stylesheets/framework/buttons.scss @@ -360,6 +360,10 @@ i { color: $gl-text-color-secondary; } + + svg { + fill: $gl-text-color-secondary; + } } .clone-dropdown-btn a { -- cgit v1.2.1 From af51b95442aa867bd570b99d32f8b580f554675d Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 20 Sep 2018 09:31:08 +0200 Subject: Add button group for scheduled jobs --- app/views/projects/ci/builds/_build.html.haml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index 44c1453e239..1ba8b698fe2 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -101,6 +101,17 @@ - if job.active? = link_to cancel_project_job_path(job.project, job, return_to: request.original_url), method: :post, title: 'Cancel', class: 'btn btn-build' do = icon('remove', class: 'cred') + - elsif job.scheduled? + .btn-group + .btn.btn-default.has-tooltip{ disabled: true, + title: job.build_schedule.execute_at } + = sprite_icon('planning') + = duration_in_numbers(job.build_schedule.execute_in) + .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Start now') } + = sprite_icon('play') + .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Unschedule') } + = sprite_icon('cancel') + -# sprite_icon('status_scheduled_borderless') - elsif allow_retry - if job.playable? && !admin && can?(current_user, :update_build, job) = link_to play_project_job_path(job.project, job, return_to: request.original_url), method: :post, title: 'Play', class: 'btn btn-build' do -- cgit v1.2.1 From a7c767f16446f71f6e35a5aa3d2fdc73037fcdf5 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 21 Sep 2018 11:17:37 +0900 Subject: Add a new status to ci_builds.status --- app/controllers/projects/jobs_controller.rb | 2 +- app/models/ci/build.rb | 42 +++++++++++++---------------- app/models/ci/build_schedule.rb | 10 +++++++ app/models/commit_status.rb | 8 +++--- app/models/concerns/has_status.rb | 16 ++++++----- app/services/ci/process_pipeline_service.rb | 16 ++++++++--- app/workers/ci/build_schedule_worker.rb | 3 +-- lib/api/jobs.rb | 2 +- lib/gitlab/ci/config/entry/job.rb | 12 ++++++--- lib/gitlab/ci/status/build/scheduled.rb | 2 +- 10 files changed, 66 insertions(+), 47 deletions(-) diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb index d4a0af6f0f9..9c9bbe04947 100644 --- a/app/controllers/projects/jobs_controller.rb +++ b/app/controllers/projects/jobs_controller.rb @@ -113,7 +113,7 @@ class Projects::JobsController < Projects::ApplicationController def unschedule return respond_422 unless @build.scheduled? - @build.unschedule + @build.unschedule! redirect_to build_path(@build) end diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index b608bfdb8b9..3ef149f3632 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -160,6 +160,22 @@ module Ci transition created: :manual end + event :schedule do + transition created: :scheduled + end + + event :unschedule do + transition scheduled: :manual + end + + before_transition created: :scheduled do |build| + build_build_schedule(execute_at: execute_at) + end + + before_transition scheduled: any do |build| + build_schedule.delete! + end + after_transition any => [:pending] do |build| build.run_after_commit do BuildQueueWorker.perform_async(id) @@ -185,12 +201,6 @@ module Ci end end - after_transition any => [:manual] do |build| - build.run_after_commit do - build.schedule! - end - end - before_transition any => [:failed] do |build| next unless build.project next if build.retries_max.zero? @@ -233,25 +243,11 @@ module Ci end def playable? - action? && (manual? || retryable?) + action? && (manual? || scheduled? || retryable?) end def schedulable? - manual? && options[:start_in].present? - end - - def scheduled? - build_schedule.present? - end - - def schedule! - return unless schedulable? - - create_build_schedule!(execute_at: execute_at) - end - - def unschedule! - build_schedule.delete! + self.when == 'delayed' && options[:start_in].present? end def execute_at @@ -259,7 +255,7 @@ module Ci end def action? - %w[manual delayed].include?(self.when) + %w[manual scheduled].include?(self.when) end # rubocop: disable CodeReuse/ServiceClass diff --git a/app/models/ci/build_schedule.rb b/app/models/ci/build_schedule.rb index d6378224fe0..4128fade86c 100644 --- a/app/models/ci/build_schedule.rb +++ b/app/models/ci/build_schedule.rb @@ -8,14 +8,24 @@ module Ci belongs_to :build + validate :schedule_at_future + after_create :schedule, unless: :importing? + scope :stale, -> { where("execute_at < ?", Time.now) } + def execute_in [0, self.execute_at - Time.now].max end private + def schedule_at_future + if self.execute_at < Time.now + errors.add(:execute_at, "Excute point must be somewhere in the future") + end + end + def schedule run_after_commit do Ci::BuildScheduleWorker.perform_at(self.execute_at, self.build_id) diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index fe2f144ef03..6bf2888505e 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -26,7 +26,7 @@ class CommitStatus < ActiveRecord::Base scope :failed_but_allowed, -> do where(allow_failure: true, status: [:failed, :canceled]) end - + scope :exclude_ignored, -> do # We want to ignore failed but allowed to fail jobs. # @@ -71,7 +71,7 @@ class CommitStatus < ActiveRecord::Base end event :enqueue do - transition [:created, :skipped, :manual] => :pending + transition [:created, :skipped, :manual, :scheduled] => :pending end event :run do @@ -91,10 +91,10 @@ class CommitStatus < ActiveRecord::Base end event :cancel do - transition [:created, :pending, :running, :manual] => :canceled + transition [:created, :pending, :running, :manual, :scheduled] => :canceled end - before_transition [:created, :skipped, :manual] => :pending do |commit_status| + before_transition [:created, :skipped, :manual, :scheduled] => :pending do |commit_status| commit_status.queued_at = Time.now end diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index e2700db1438..0a97e4cdfc4 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -4,14 +4,15 @@ module HasStatus extend ActiveSupport::Concern DEFAULT_STATUS = 'created'.freeze - BLOCKED_STATUS = 'manual'.freeze - AVAILABLE_STATUSES = %w[created pending running success failed canceled skipped manual].freeze - STARTED_STATUSES = %w[running success failed skipped manual].freeze + BLOCKED_STATUS = %w[manual scheduled].freeze + AVAILABLE_STATUSES = %w[created pending running success failed canceled skipped manual scheduled].freeze + STARTED_STATUSES = %w[running success failed skipped manual scheduled].freeze ACTIVE_STATUSES = %w[pending running].freeze COMPLETED_STATUSES = %w[success failed canceled skipped].freeze - ORDERED_STATUSES = %w[failed pending running manual canceled success skipped created].freeze + ORDERED_STATUSES = %w[failed pending running manual scheduled canceled success skipped created].freeze STATUSES_ENUM = { created: 0, pending: 1, running: 2, success: 3, - failed: 4, canceled: 5, skipped: 6, manual: 7 }.freeze + failed: 4, canceled: 5, skipped: 6, manual: 7, + scheduled: 8 }.freeze UnknownStatusError = Class.new(StandardError) @@ -24,6 +25,7 @@ module HasStatus created = scope_relevant.created.select('count(*)').to_sql success = scope_relevant.success.select('count(*)').to_sql manual = scope_relevant.manual.select('count(*)').to_sql + scheduled = scope_relevant.scheduled.select('count(*)').to_sql pending = scope_relevant.pending.select('count(*)').to_sql running = scope_relevant.running.select('count(*)').to_sql skipped = scope_relevant.skipped.select('count(*)').to_sql @@ -31,6 +33,7 @@ module HasStatus warnings = scope_warnings.select('count(*) > 0').to_sql.presence || 'false' "(CASE + WHEN (#{scheduled})>0 THEN 'scheduled' WHEN (#{builds})=(#{skipped}) AND (#{warnings}) THEN 'success' WHEN (#{builds})=(#{skipped}) THEN 'skipped' WHEN (#{builds})=(#{success}) THEN 'success' @@ -92,8 +95,7 @@ module HasStatus scope :failed_or_canceled, -> { where(status: [:failed, :canceled]) } scope :cancelable, -> do - where("status IN ('running', 'pending', 'created') OR " \ - "(status = 'manual' AND EXISTS (select 1 from ci_build_schedules where ci_builds.id = ci_build_schedules.build_id))") + where("status IN ('running', 'pending', 'created', 'scheduled')") end end diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 323075d404b..0a13da198cd 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -37,7 +37,7 @@ module Ci def process_build(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) - build.action? ? build.actionize : enqueue_build(build) + proceed_build(build) true else build.skip @@ -53,8 +53,10 @@ module Ci %w[failed] when 'always' %w[success failed skipped] - when 'manual', 'delayed' + when 'manual' %w[success skipped] + when 'delayed' + %w[success skipped] # This might be `success` only else [] end @@ -102,8 +104,14 @@ module Ci end # rubocop: enable CodeReuse/ActiveRecord - def enqueue_build(build) - Ci::EnqueueBuildService.new(project, @user).execute(build) + def proceed_build(build) + if build.schedulable? + build.schedule! + elsif build.action? + build.actionize + else + Ci::EnqueueBuildService.new(project, @user).execute(build) + end end end end diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 84ef2edb767..0d17a960c00 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -6,10 +6,9 @@ module Ci include PipelineQueue def perform(build_id) - ::Ci::Build.preload(:build_schedule).find_by(id: build_id).try do |build| + ::Ci::Build.find_by(id: build_id).try do |build| break unless build.scheduled? - build.unschedule! Ci::PlayBuildService.new(build.project, build.user).execute(build) end end diff --git a/lib/api/jobs.rb b/lib/api/jobs.rb index 63fab6b0abb..fa992b9a440 100644 --- a/lib/api/jobs.rb +++ b/lib/api/jobs.rb @@ -151,7 +151,7 @@ module API present build, with: Entities::Job end - desc 'Trigger a manual job' do + desc 'Trigger a actionable job (manual, scheduled, etc)' do success Entities::Job detail 'This feature was added in GitLab 8.11' end diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index 02589d147ef..3ad048883af 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -35,11 +35,11 @@ module Gitlab validates :dependencies, array_of_strings: true validates :extends, type: String - with_options if: :manual_action? do - validates :start_in, duration: true, allow_nil: true + with_options if: :delayed? do + validates :start_in, duration: true, allow_nil: false end - with_options unless: :manual_action? do + with_options unless: :delayed? do validates :start_in, presence: false end end @@ -119,7 +119,11 @@ module Gitlab end def manual_action? - %w[manual delayed].include?(self.when) + self.when == 'manual' + end + + def delayed? + self.when == 'delayed' end def ignored? diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index 93da8fb9538..010d5e2142f 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -39,7 +39,7 @@ module Gitlab end def self.matches?(build, user) - build.schedulable? && !build.canceled? + build.scheduled? end private -- cgit v1.2.1 From 1a4f497e6093c8d1005986467c8b752cc61c6629 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 21 Sep 2018 15:24:19 +0900 Subject: Update pipelines and stages status as well --- app/helpers/ci_status_helper.rb | 1 + app/models/ci/build.rb | 4 +- app/models/ci/pipeline.rb | 5 ++ app/models/ci/stage.rb | 5 ++ app/models/concerns/has_status.rb | 2 + lib/gitlab/ci/status/build/scheduled.rb | 24 +------ lib/gitlab/ci/status/scheduled.rb | 23 +++++++ scheduled_job_fixture.rb | 114 +++++++++++++++++++++++++++----- 8 files changed, 138 insertions(+), 40 deletions(-) create mode 100644 lib/gitlab/ci/status/scheduled.rb diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb index 136772e1ec3..f343607a343 100644 --- a/app/helpers/ci_status_helper.rb +++ b/app/helpers/ci_status_helper.rb @@ -7,6 +7,7 @@ # # See 'detailed_status?` method and `Gitlab::Ci::Status` module. # +# TODO: DO I need to update this deprecated module? module CiStatusHelper def ci_label_for_status(status) if detailed_status?(status) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 3ef149f3632..cf5df2ca354 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -169,11 +169,11 @@ module Ci end before_transition created: :scheduled do |build| - build_build_schedule(execute_at: execute_at) + build.build_build_schedule(execute_at: build.execute_at) end before_transition scheduled: any do |build| - build_schedule.delete! + build.build_schedule.delete end after_transition any => [:pending] do |build| diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 6dac577c514..2d90c9bfe50 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -108,6 +108,10 @@ module Ci transition any - [:manual] => :manual end + event :schedule do + transition any - [:scheduled] => :scheduled + end + # IMPORTANT # Do not add any operations to this state_machine # Create a separate worker for each new operation @@ -544,6 +548,7 @@ module Ci when 'canceled' then cancel when 'skipped' then skip when 'manual' then block + when 'scheduled' then schedule else raise HasStatus::UnknownStatusError, "Unknown status `#{latest_builds_status}`" diff --git a/app/models/ci/stage.rb b/app/models/ci/stage.rb index 511ded55dc3..811261a252e 100644 --- a/app/models/ci/stage.rb +++ b/app/models/ci/stage.rb @@ -65,6 +65,10 @@ module Ci event :block do transition any - [:manual] => :manual end + + event :schedule do + transition any - [:scheduled] => :scheduled + end end def update_status @@ -77,6 +81,7 @@ module Ci when 'failed' then drop when 'canceled' then cancel when 'manual' then block + when 'scheduled' then schedule when 'skipped', nil then skip else raise HasStatus::UnknownStatusError, diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index 0a97e4cdfc4..652f56f7f11 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -77,6 +77,7 @@ module HasStatus state :canceled, value: 'canceled' state :skipped, value: 'skipped' state :manual, value: 'manual' + state :scheduled, value: 'scheduled' end scope :created, -> { where(status: 'created') } @@ -88,6 +89,7 @@ module HasStatus scope :canceled, -> { where(status: 'canceled') } scope :skipped, -> { where(status: 'skipped') } scope :manual, -> { where(status: 'manual') } + scope :scheduled, -> { where(status: 'scheduled') } scope :alive, -> { where(status: [:created, :pending, :running]) } scope :created_or_pending, -> { where(status: [:created, :pending]) } scope :running_or_pending, -> { where(status: [:running, :pending]) } diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index 010d5e2142f..05a97b1de47 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -3,31 +3,9 @@ module Gitlab module Status module Build class Scheduled < Status::Extended - ### - # Core override - ### - def text - s_('CiStatusText|scheduled') - end - - def label - s_('CiStatusLabel|scheduled') - end - - def icon - 'timer' - end - - def favicon - 'favicon_status_scheduled' - end - - ### - # Extension override - ### def illustration { - image: 'illustrations/canceled-job_empty.svg', + image: 'illustrations/scheduled-job_countdown.svg', size: 'svg-394', title: _("This is a scheduled to run in ") + " #{execute_in}", content: _("This job will automatically run after it's timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action.") diff --git a/lib/gitlab/ci/status/scheduled.rb b/lib/gitlab/ci/status/scheduled.rb new file mode 100644 index 00000000000..f4464d69eb2 --- /dev/null +++ b/lib/gitlab/ci/status/scheduled.rb @@ -0,0 +1,23 @@ +module Gitlab + module Ci + module Status + class Scheduled < Status::Core + def text + s_('CiStatusText|scheduled') + end + + def label + s_('CiStatusLabel|scheduled') + end + + def icon + 'timer' # TODO: 'status_scheduled' + end + + def favicon + 'favicon_status_scheduled' + end + end + end + end +end diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb index 6a5000e57fc..7389e63a0da 100644 --- a/scheduled_job_fixture.rb +++ b/scheduled_job_fixture.rb @@ -62,31 +62,87 @@ cleanup: # require '/path/to/scheduled_job_fixture.rb' # Load this script # ``` # -# ### Reproduce the scenario A) ~ Succeccfull timed incremantal rollout ~ -# -# ```` -# project = Project.find_by(path: 'incremental-rollout') -# user = User.find_by(username: 'root') -# fixture = ScheduledJobFixture.new(project.id, user.id) -# -# fixture.create_pipeline('master') -# fixture.finish_stage_until('test') # Succeed 'build' and 'test' jobs. 'rollout 10%' job will be scheduled. See the pipeline page -# fixture.finish_stage_until('rollout 10%') # Succeed `rollout 10%` job. 'rollout 50%' job will be scheduled. -# fixture.finish_stage_until('rollout 50%') # Succeed `rollout 50%` job. 'rollout 100%' job will be scheduled. -# fixture.finish_stage_until('rollout 100%') # Succeed `rollout 100%` job. 'cleanup' job will be scheduled. -# fixture.finish_stage_until('cleanup') # Succeed `cleanup` job. The pipeline becomes green. -# ``` +# ### Reproduce the scenario ~ when all stages succeeded ~ +# +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. Wait until rollout 10% job is triggered +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 10%') +# 1. Wait until rollout 50% job is triggered +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 50%') +# 1. Wait until rollout 100% job is triggered +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 100%') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('cleanup') +# +# Expectation: Users see a succeccful pipeline +# +# ### Reproduce the scenario ~ when rollout 10% jobs failed ~ +# +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. Wait until rollout 10% job is triggered +# 1. ScheduledJobFixture.new(29, 1).drop_jobs('rollout 10%') +# +# Expectation: Following stages should be skipped. +# +# ### Reproduce the scenario ~ when user clicked cancel button before build job finished ~ +# +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).cancel_pipeline +# +# Expectation: All stages should be canceled. +# +# ### Reproduce the scenario ~ when user canceled the pipeline after rollout 10% job is scheduled ~ +# +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. Run next command before rollout 10% job is triggered +# 1. ScheduledJobFixture.new(29, 1).cancel_pipeline +# +# Expectation: rollout 10% job will be canceled. Following stages will be skipped. +# +# ### Reproduce the scenario ~ when user canceled rollout 10% job after rollout 10% job is scheduled ~ +# +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. Run next command before rollout 10% job is triggered +# 1. ScheduledJobFixture.new(29, 1).cancel_jobs('rollout 10%') +# +# Expectation: rollout 10% job will be canceled. Following stages will be skipped. +# +# ### Reproduce the scenario ~ when user played rollout 10% job immidiately ~ +# +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. Play rollout 10% job before rollout 10% job is triggered +# +# Expectation: rollout 10% becomes pending immidiately +# +# ### Reproduce the scenario ~ when rollout 10% job is allowed to fail ~ +# +# 1. Set `allow_failure: true` to rollout 10% job +# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. Wait until rollout 10% job is triggered +# 1. ScheduledJobFixture.new(29, 1).drop_jobs('rollout 10%') +# +# Expectation: rollout 50% job should be triggered +# + class ScheduledJobFixture attr_reader :project attr_reader :user + include GitlabRoutingHelper + def initialize(project_id, user_id) @project = Project.find_by_id(project_id) @user = User.find_by_id(user_id) end def create_pipeline(ref) - Ci::CreatePipelineService.new(project, user, ref: ref).execute(:web) + pipeline = Ci::CreatePipelineService.new(project, user, ref: ref).execute(:web) + Rails.application.routes.url_helpers.namespace_project_pipeline_url(project.namespace, project, pipeline) end def finish_stage_until(stage_name) @@ -99,4 +155,32 @@ class ScheduledJobFixture return if stage.name == stage_name end end + + def run_jobs(stage_name) + pipeline = Ci::Pipeline.last + stage = pipeline.stages.find_by_name(stage_name) + stage.builds.map(&:run) + stage.update_status + pipeline.update_status + end + + def drop_jobs(stage_name) + pipeline = Ci::Pipeline.last + stage = pipeline.stages.find_by_name(stage_name) + stage.builds.map(&:drop) + stage.update_status + pipeline.update_status + end + + def cancel_jobs(stage_name) + pipeline = Ci::Pipeline.last + stage = pipeline.stages.find_by_name(stage_name) + stage.builds.map(&:cancel) + stage.update_status + pipeline.update_status + end + + def cancel_pipeline + Ci::Pipeline.last.cancel_running + end end -- cgit v1.2.1 From 532be543a5e6d1f7ef402f41ecdf091ef9eee72a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 21 Sep 2018 15:40:24 +0900 Subject: Add changelog --- changelogs/unreleased/scheduled-manual-jobs.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/scheduled-manual-jobs.yml diff --git a/changelogs/unreleased/scheduled-manual-jobs.yml b/changelogs/unreleased/scheduled-manual-jobs.yml new file mode 100644 index 00000000000..fa3f5a6f461 --- /dev/null +++ b/changelogs/unreleased/scheduled-manual-jobs.yml @@ -0,0 +1,5 @@ +--- +title: Allow pipelines to schedule delayed job runs +merge_request: 21767 +author: +type: added -- cgit v1.2.1 From ffbc0b1c291233a05e6729bf6031ee43b61798e4 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 21 Sep 2018 15:42:29 +0900 Subject: Remove whitespace --- app/models/commit_status.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index 6bf2888505e..03a5522b4ba 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -26,7 +26,7 @@ class CommitStatus < ActiveRecord::Base scope :failed_but_allowed, -> do where(allow_failure: true, status: [:failed, :canceled]) end - + scope :exclude_ignored, -> do # We want to ignore failed but allowed to fail jobs. # -- cgit v1.2.1 From f8e680b786377443471780d9a096dfb2b873de4a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 21 Sep 2018 17:44:15 +0900 Subject: Fix rubocop offence --- lib/gitlab/ci/yaml_processor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb index 1dc6c28d24a..a427aa30683 100644 --- a/lib/gitlab/ci/yaml_processor.rb +++ b/lib/gitlab/ci/yaml_processor.rb @@ -50,7 +50,7 @@ module Gitlab after_script: job[:after_script], environment: job[:environment], retry: job[:retry], - start_in: job[:start_in], + start_in: job[:start_in] }.compact } end -- cgit v1.2.1 From 571a934f29bee7af9569176e62e5376b471e35fb Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 24 Sep 2018 13:12:11 +0900 Subject: Fix spec. Create scheduled status entry for pipeline --- app/models/concerns/has_status.rb | 2 +- lib/gitlab/ci/status/pipeline/factory.rb | 1 + lib/gitlab/ci/status/pipeline/scheduled.rb | 21 +++++++++++++ spec/lib/gitlab/ci/status/pipeline/factory_spec.rb | 35 +++++++--------------- spec/models/concerns/has_status_spec.rb | 2 +- 5 files changed, 34 insertions(+), 27 deletions(-) create mode 100644 lib/gitlab/ci/status/pipeline/scheduled.rb diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index 652f56f7f11..a8044f2ab15 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -114,7 +114,7 @@ module HasStatus end def blocked? - BLOCKED_STATUS == status + BLOCKED_STATUS.include?(status) end private diff --git a/lib/gitlab/ci/status/pipeline/factory.rb b/lib/gitlab/ci/status/pipeline/factory.rb index 17f9a75f436..00d8f01cbdc 100644 --- a/lib/gitlab/ci/status/pipeline/factory.rb +++ b/lib/gitlab/ci/status/pipeline/factory.rb @@ -5,6 +5,7 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::SuccessWarning, + Status::Pipeline::Scheduled, Status::Pipeline::Blocked]] end diff --git a/lib/gitlab/ci/status/pipeline/scheduled.rb b/lib/gitlab/ci/status/pipeline/scheduled.rb new file mode 100644 index 00000000000..5e8f99e58d7 --- /dev/null +++ b/lib/gitlab/ci/status/pipeline/scheduled.rb @@ -0,0 +1,21 @@ +module Gitlab + module Ci + module Status + module Pipeline + class Scheduled < Status::Extended + def text + s_('CiStatusText|scheduled') + end + + def label + s_('CiStatusLabel|waiting for scheduled job') + end + + def self.matches?(pipeline, user) + pipeline.scheduled? + end + end + end + end + end +end diff --git a/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb b/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb index defb3fdc0df..8e3d4464898 100644 --- a/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb @@ -11,8 +11,7 @@ describe Gitlab::Ci::Status::Pipeline::Factory do end context 'when pipeline has a core status' do - (HasStatus::AVAILABLE_STATUSES - [HasStatus::BLOCKED_STATUS]) - .each do |simple_status| + HasStatus::AVAILABLE_STATUSES.each do |simple_status| context "when core status is #{simple_status}" do let(:pipeline) { create(:ci_pipeline, status: simple_status) } @@ -24,8 +23,15 @@ describe Gitlab::Ci::Status::Pipeline::Factory do expect(factory.core_status).to be_a expected_status end - it 'does not match extended statuses' do - expect(factory.extended_statuses).to be_empty + if HasStatus::BLOCKED_STATUS.include?(simple_status) + it 'matches a correct extended statuses' do + expect(factory.extended_statuses) + .to eq [Gitlab::Ci::Status::Pipeline::Blocked] + end + else + it 'does not match extended statuses' do + expect(factory.extended_statuses).to be_empty + end end it "fabricates a core status #{simple_status}" do @@ -40,27 +46,6 @@ describe Gitlab::Ci::Status::Pipeline::Factory do end end end - - context "when core status is manual" do - let(:pipeline) { create(:ci_pipeline, status: :manual) } - - it "matches manual core status" do - expect(factory.core_status) - .to be_a Gitlab::Ci::Status::Manual - end - - it 'matches a correct extended statuses' do - expect(factory.extended_statuses) - .to eq [Gitlab::Ci::Status::Pipeline::Blocked] - end - - it 'extends core status with common pipeline methods' do - expect(status).to have_details - expect(status).not_to have_action - expect(status.details_path) - .to include "pipelines/#{pipeline.id}" - end - end end context 'when pipeline has warnings' do diff --git a/spec/models/concerns/has_status_spec.rb b/spec/models/concerns/has_status_spec.rb index 6866b43432c..fe9a89e8806 100644 --- a/spec/models/concerns/has_status_spec.rb +++ b/spec/models/concerns/has_status_spec.rb @@ -300,7 +300,7 @@ describe HasStatus do describe '::BLOCKED_STATUS' do it 'is a status manual' do - expect(described_class::BLOCKED_STATUS).to eq 'manual' + expect(described_class::BLOCKED_STATUS).to eq %w[manual scheduled] end end end -- cgit v1.2.1 From f97ec4b8f44152036a8f8242bcf1584cfbd56cec Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 24 Sep 2018 19:17:04 +0900 Subject: Add scheduled_at column to ci_builds, and add a partial index as well --- db/migrate/20180913102839_create_build_schedules.rb | 19 ------------------- .../20180924190739_add_scheduled_at_to_ci_builds.rb | 9 +++++++++ ...0180924201039_add_partial_index_to_scheduled_at.rb | 18 ++++++++++++++++++ db/schema.rb | 5 ++++- 4 files changed, 31 insertions(+), 20 deletions(-) delete mode 100644 db/migrate/20180913102839_create_build_schedules.rb create mode 100644 db/migrate/20180924190739_add_scheduled_at_to_ci_builds.rb create mode 100644 db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb diff --git a/db/migrate/20180913102839_create_build_schedules.rb b/db/migrate/20180913102839_create_build_schedules.rb deleted file mode 100644 index 1e9d9a70b0f..00000000000 --- a/db/migrate/20180913102839_create_build_schedules.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -class CreateBuildSchedules < ActiveRecord::Migration - include Gitlab::Database::MigrationHelpers - - DOWNTIME = false - - disable_ddl_transaction! - - def change - create_table :ci_build_schedules, id: :bigserial do |t| - t.integer :build_id, null: false - t.datetime :execute_at, null: false - - t.foreign_key :ci_builds, column: :build_id, on_delete: :cascade - t.index :build_id, unique: true - end - end -end diff --git a/db/migrate/20180924190739_add_scheduled_at_to_ci_builds.rb b/db/migrate/20180924190739_add_scheduled_at_to_ci_builds.rb new file mode 100644 index 00000000000..c163fbb1fd6 --- /dev/null +++ b/db/migrate/20180924190739_add_scheduled_at_to_ci_builds.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddScheduledAtToCiBuilds < ActiveRecord::Migration + DOWNTIME = false + + def change + add_column :ci_builds, :scheduled_at, :datetime_with_timezone + end +end diff --git a/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb b/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb new file mode 100644 index 00000000000..1b79365a0f6 --- /dev/null +++ b/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddPartialIndexToScheduledAt < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + INDEX_NAME = 'partial_index_ci_builds_on_id_with_scheduled_jobs'.freeze + + disable_ddl_transaction! + + def up + add_concurrent_index(:ci_builds, :id, where: "scheduled_at <> NULL", name: INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(:ci_builds, INDEX_NAME) + end +end diff --git a/db/schema.rb b/db/schema.rb index 581496d78ce..ff45c9effc6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180924141949) do +ActiveRecord::Schema.define(version: 20180924201039) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -341,6 +341,7 @@ ActiveRecord::Schema.define(version: 20180924141949) do t.integer "artifacts_metadata_store" t.boolean "protected" t.integer "failure_reason" + t.datetime_with_timezone "scheduled_at" end add_index "ci_builds", ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)", using: :btree @@ -350,6 +351,7 @@ ActiveRecord::Schema.define(version: 20180924141949) do add_index "ci_builds", ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref", using: :btree add_index "ci_builds", ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref", using: :btree add_index "ci_builds", ["id"], name: "partial_index_ci_builds_on_id_with_legacy_artifacts", where: "(artifacts_file <> ''::text)", using: :btree + add_index "ci_builds", ["id"], name: "partial_index_ci_builds_on_id_with_scheduled_jobs", where: "(scheduled_at <> NULL::timestamp with time zone)", using: :btree add_index "ci_builds", ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id", using: :btree add_index "ci_builds", ["protected"], name: "index_ci_builds_on_protected", using: :btree add_index "ci_builds", ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree @@ -1799,6 +1801,7 @@ ActiveRecord::Schema.define(version: 20180924141949) do end add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path", unique: true, using: :btree + add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"} add_index "redirect_routes", ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id", using: :btree create_table "releases", force: :cascade do |t| -- cgit v1.2.1 From 703a41f8862c7278559ff13f2aa4f39ffd660c4e Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 24 Sep 2018 20:02:26 +0900 Subject: Introduce enqueue_scheduled event --- app/models/ci/build.rb | 23 +++++++++++++---- app/models/ci/build_schedule.rb | 35 -------------------------- app/presenters/ci/build_presenter.rb | 4 +++ app/services/ci/run_scheduled_build_service.rb | 13 ++++++++++ app/views/projects/ci/builds/_build.html.haml | 4 +-- app/workers/ci/build_schedule_worker.rb | 7 +++--- lib/gitlab/ci/status/build/scheduled.rb | 2 +- scheduled_job_fixture.rb | 12 ++++----- 8 files changed, 47 insertions(+), 53 deletions(-) delete mode 100644 app/models/ci/build_schedule.rb create mode 100644 app/services/ci/run_scheduled_build_service.rb diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index cf5df2ca354..3f2630798f3 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -22,7 +22,6 @@ module Ci }.freeze has_one :last_deployment, -> { order('deployments.id DESC') }, as: :deployable, class_name: 'Deployment' - has_one :build_schedule, class_name: 'Ci::BuildSchedule', foreign_key: :build_id has_many :trace_sections, class_name: 'Ci::BuildTraceSection' has_many :trace_chunks, class_name: 'Ci::BuildTraceChunk', foreign_key: :build_id @@ -168,12 +167,26 @@ module Ci transition scheduled: :manual end - before_transition created: :scheduled do |build| - build.build_build_schedule(execute_at: build.execute_at) + event :enqueue_scheduled do + transition scheduled: :pending do + validate do |build| + build.scheduled_at && build.scheduled_at < Time.now + end + end end before_transition scheduled: any do |build| - build.build_schedule.delete + build.scheduled_at = nil + end + + before_transition created: :scheduled do |build| + build.scheduled_at = build.get_scheduled_at + end + + after_transition created: :scheduled do |build| + build.run_after_commit do + Ci::BuildScheduleWorker.perform_at(build.scheduled_at, build.id) + end end after_transition any => [:pending] do |build| @@ -250,7 +263,7 @@ module Ci self.when == 'delayed' && options[:start_in].present? end - def execute_at + def get_scheduled_at ChronicDuration.parse(options[:start_in])&.seconds&.from_now end diff --git a/app/models/ci/build_schedule.rb b/app/models/ci/build_schedule.rb deleted file mode 100644 index 4128fade86c..00000000000 --- a/app/models/ci/build_schedule.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -module Ci - class BuildSchedule < ActiveRecord::Base - extend Gitlab::Ci::Model - include Importable - include AfterCommitQueue - - belongs_to :build - - validate :schedule_at_future - - after_create :schedule, unless: :importing? - - scope :stale, -> { where("execute_at < ?", Time.now) } - - def execute_in - [0, self.execute_at - Time.now].max - end - - private - - def schedule_at_future - if self.execute_at < Time.now - errors.add(:execute_at, "Excute point must be somewhere in the future") - end - end - - def schedule - run_after_commit do - Ci::BuildScheduleWorker.perform_at(self.execute_at, self.build_id) - end - end - end -end diff --git a/app/presenters/ci/build_presenter.rb b/app/presenters/ci/build_presenter.rb index 5331cdf632b..4005840ce58 100644 --- a/app/presenters/ci/build_presenter.rb +++ b/app/presenters/ci/build_presenter.rb @@ -35,6 +35,10 @@ module Ci "#{subject.name} - #{detailed_status.status_tooltip}" end + def execute_in + [0, scheduled_at - Time.now].max + end + private def tooltip_for_badge diff --git a/app/services/ci/run_scheduled_build_service.rb b/app/services/ci/run_scheduled_build_service.rb new file mode 100644 index 00000000000..8e4a628296f --- /dev/null +++ b/app/services/ci/run_scheduled_build_service.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Ci + class RunScheduledBuildService < ::BaseService + def execute(build) + unless can?(current_user, :update_build, build) + raise Gitlab::Access::AccessDeniedError + end + + build.enqueue_scheduled! + end + end +end diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index 1ba8b698fe2..c706703ae6f 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -104,9 +104,9 @@ - elsif job.scheduled? .btn-group .btn.btn-default.has-tooltip{ disabled: true, - title: job.build_schedule.execute_at } + title: job.scheduled_at } = sprite_icon('planning') - = duration_in_numbers(job.build_schedule.execute_in) + = duration_in_numbers(job.execute_in) .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Start now') } = sprite_icon('play') .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Unschedule') } diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 0d17a960c00..2a2d2bff282 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -6,10 +6,9 @@ module Ci include PipelineQueue def perform(build_id) - ::Ci::Build.find_by(id: build_id).try do |build| - break unless build.scheduled? - - Ci::PlayBuildService.new(build.project, build.user).execute(build) + ::Ci::Build.find_by_id(build_id).try do |build| + Ci::RunScheduledBuildService + .new(build.project, build.user).execute(build) end end end diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index 05a97b1de47..270a2706c87 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -23,7 +23,7 @@ module Gitlab private def execute_in - Time.at(subject.build_schedule.execute_in).utc.strftime("%H:%M:%S") + Time.at(subject.scheduled_at).utc.strftime("%H:%M:%S") end end end diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb index 7389e63a0da..9ed59d337f7 100644 --- a/scheduled_job_fixture.rb +++ b/scheduled_job_fixture.rb @@ -64,15 +64,15 @@ cleanup: # # ### Reproduce the scenario ~ when all stages succeeded ~ # -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') # 1. Wait until rollout 10% job is triggered -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 10%') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('rollout 10%') # 1. Wait until rollout 50% job is triggered -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 50%') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('rollout 50%') # 1. Wait until rollout 100% job is triggered -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('rollout 100%') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('cleanup') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('rollout 100%') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('cleanup') # # Expectation: Users see a succeccful pipeline # -- cgit v1.2.1 From 422970c93eb0ff445da5c3351cdfd70bb387e57c Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 24 Sep 2018 20:07:18 +0900 Subject: Remove unnecessary table --- db/schema.rb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index ff45c9effc6..b55a9badc6b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -260,13 +260,6 @@ ActiveRecord::Schema.define(version: 20180924201039) do add_index "chat_teams", ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true, using: :btree - create_table "ci_build_schedules", id: :bigserial, force: :cascade do |t| - t.integer "build_id", null: false - t.datetime "execute_at", null: false - end - - add_index "ci_build_schedules", ["build_id"], name: "index_ci_build_schedules_on_build_id", unique: true, using: :btree - create_table "ci_build_trace_chunks", id: :bigserial, force: :cascade do |t| t.integer "build_id", null: false t.integer "chunk_index", null: false @@ -2298,7 +2291,6 @@ ActiveRecord::Schema.define(version: 20180924201039) do add_foreign_key "boards", "namespaces", column: "group_id", on_delete: :cascade add_foreign_key "boards", "projects", name: "fk_f15266b5f9", on_delete: :cascade add_foreign_key "chat_teams", "namespaces", on_delete: :cascade - add_foreign_key "ci_build_schedules", "ci_builds", column: "build_id", on_delete: :cascade add_foreign_key "ci_build_trace_chunks", "ci_builds", column: "build_id", on_delete: :cascade add_foreign_key "ci_build_trace_section_names", "projects", on_delete: :cascade add_foreign_key "ci_build_trace_sections", "ci_build_trace_section_names", column: "section_name_id", name: "fk_264e112c66", on_delete: :cascade -- cgit v1.2.1 From 2f03c503fb299a4a821d74f75c31aa1189fcbccb Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:21:41 +0900 Subject: Introduce ProceedBuildService --- app/models/ci/build.rb | 4 ++-- app/presenters/ci/build_presenter.rb | 2 +- app/services/ci/enqueue_build_service.rb | 8 -------- app/services/ci/proceed_build_service.rb | 15 +++++++++++++++ app/services/ci/process_pipeline_service.rb | 12 +----------- 5 files changed, 19 insertions(+), 22 deletions(-) delete mode 100644 app/services/ci/enqueue_build_service.rb create mode 100644 app/services/ci/proceed_build_service.rb diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 3f2630798f3..6c72bce75e3 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -180,7 +180,7 @@ module Ci end before_transition created: :scheduled do |build| - build.scheduled_at = build.get_scheduled_at + build.scheduled_at = build.options_scheduled_at end after_transition created: :scheduled do |build| @@ -263,7 +263,7 @@ module Ci self.when == 'delayed' && options[:start_in].present? end - def get_scheduled_at + def options_scheduled_at ChronicDuration.parse(options[:start_in])&.seconds&.from_now end diff --git a/app/presenters/ci/build_presenter.rb b/app/presenters/ci/build_presenter.rb index 4005840ce58..33056a809b7 100644 --- a/app/presenters/ci/build_presenter.rb +++ b/app/presenters/ci/build_presenter.rb @@ -36,7 +36,7 @@ module Ci end def execute_in - [0, scheduled_at - Time.now].max + scheduled? && scheduled_at && [0, scheduled_at - Time.now].max end private diff --git a/app/services/ci/enqueue_build_service.rb b/app/services/ci/enqueue_build_service.rb deleted file mode 100644 index 8140651d980..00000000000 --- a/app/services/ci/enqueue_build_service.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true -module Ci - class EnqueueBuildService < BaseService - def execute(build) - build.enqueue - end - end -end diff --git a/app/services/ci/proceed_build_service.rb b/app/services/ci/proceed_build_service.rb new file mode 100644 index 00000000000..c8119c2b468 --- /dev/null +++ b/app/services/ci/proceed_build_service.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Ci + class ProceedBuildService < BaseService + def execute(build) + if build.schedulable? + build.schedule! + elsif build.action? + build.actionize + else + build.enqueue + end + end + end +end diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 0a13da198cd..f122fc8798c 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -37,7 +37,7 @@ module Ci def process_build(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) - proceed_build(build) + Ci::ProceedBuildService.new(project, @user).execute(build) true else build.skip @@ -103,15 +103,5 @@ module Ci .update_all(retried: true) if latest_statuses.any? end # rubocop: enable CodeReuse/ActiveRecord - - def proceed_build(build) - if build.schedulable? - build.schedule! - elsif build.action? - build.actionize - else - Ci::EnqueueBuildService.new(project, @user).execute(build) - end - end end end -- cgit v1.2.1 From 27a4c03502c4eca0be03a81a27c6a9d5f5e4967e Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:24:08 +0900 Subject: Rename to process build service --- app/services/ci/proceed_build_service.rb | 15 --------------- app/services/ci/process_build_service.rb | 15 +++++++++++++++ app/services/ci/process_pipeline_service.rb | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) delete mode 100644 app/services/ci/proceed_build_service.rb create mode 100644 app/services/ci/process_build_service.rb diff --git a/app/services/ci/proceed_build_service.rb b/app/services/ci/proceed_build_service.rb deleted file mode 100644 index c8119c2b468..00000000000 --- a/app/services/ci/proceed_build_service.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -module Ci - class ProceedBuildService < BaseService - def execute(build) - if build.schedulable? - build.schedule! - elsif build.action? - build.actionize - else - build.enqueue - end - end - end -end diff --git a/app/services/ci/process_build_service.rb b/app/services/ci/process_build_service.rb new file mode 100644 index 00000000000..0f06683587d --- /dev/null +++ b/app/services/ci/process_build_service.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Ci + class ProcessBuildService < BaseService + def execute(build) + if build.schedulable? + build.schedule! + elsif build.action? + build.actionize + else + build.enqueue + end + end + end +end diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index f122fc8798c..07371acb3c7 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -37,7 +37,7 @@ module Ci def process_build(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) - Ci::ProceedBuildService.new(project, @user).execute(build) + Ci::ProcessBuildService.new(project, @user).execute(build) true else build.skip -- cgit v1.2.1 From c6e4b6a7d9afd3c8561bc1cddebf8dd05f5534ae Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:27:00 +0900 Subject: Optimize query format --- app/models/concerns/has_status.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index a8044f2ab15..88a0c9919e7 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -97,7 +97,7 @@ module HasStatus scope :failed_or_canceled, -> { where(status: [:failed, :canceled]) } scope :cancelable, -> do - where("status IN ('running', 'pending', 'created', 'scheduled')") + where(status: [:running, :pending, :created, :scheduled]) end end -- cgit v1.2.1 From e0cfa9279cc8620f64bfceebc743a8c245be215c Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:30:11 +0900 Subject: Execute the worker in pipeline_processing queue --- app/workers/ci/build_schedule_worker.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 2a2d2bff282..da219adffc6 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -5,8 +5,12 @@ module Ci include ApplicationWorker include PipelineQueue + queue_namespace :pipeline_processing + def perform(build_id) ::Ci::Build.find_by_id(build_id).try do |build| + break unless build.scheduled? + Ci::RunScheduledBuildService .new(build.project, build.user).execute(build) end -- cgit v1.2.1 From f76f6df19377945609c7e68103077ef04b0702fb Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 14:39:32 +0900 Subject: Add feature flag to schedulable? method --- app/models/ci/build.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 6c72bce75e3..1209e7ef696 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -260,7 +260,8 @@ module Ci end def schedulable? - self.when == 'delayed' && options[:start_in].present? + Feature.enabled?('ci_enable_scheduled_build') && + self.when == 'delayed' && options[:start_in].present? end def options_scheduled_at -- cgit v1.2.1 From c9077a0efdca065f848e3698c3afd5251a135049 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 15:18:02 +0900 Subject: Add cleanup mechanizm for stale scheduled jobs --- app/models/commit_status.rb | 3 ++- app/workers/stuck_ci_jobs_worker.rb | 30 +++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index 03a5522b4ba..2fd3365098a 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -49,7 +49,8 @@ class CommitStatus < ActiveRecord::Base stuck_or_timeout_failure: 3, runner_system_failure: 4, missing_dependency_failure: 5, - runner_unsupported: 6 + runner_unsupported: 6, + schedule_expired: 7 } ## diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index f6bca1176d1..884843e4465 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -8,6 +8,7 @@ class StuckCiJobsWorker BUILD_RUNNING_OUTDATED_TIMEOUT = 1.hour BUILD_PENDING_OUTDATED_TIMEOUT = 1.day + BUILD_SCHEDULED_OUTDATED_TIMEOUT = 1.hour BUILD_PENDING_STUCK_TIMEOUT = 1.hour def perform @@ -15,9 +16,10 @@ class StuckCiJobsWorker Rails.logger.info "#{self.class}: Cleaning stuck builds" - drop :running, BUILD_RUNNING_OUTDATED_TIMEOUT - drop :pending, BUILD_PENDING_OUTDATED_TIMEOUT - drop_stuck :pending, BUILD_PENDING_STUCK_TIMEOUT + drop :running, :updated_at, BUILD_RUNNING_OUTDATED_TIMEOUT, :stuck_or_timeout_failure + drop :pending, :updated_at, BUILD_PENDING_OUTDATED_TIMEOUT, :stuck_or_timeout_failure + drop :scheduled, :scheduled_at, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired + drop_stuck :pending, :updated_at, BUILD_PENDING_STUCK_TIMEOUT, :stuck_or_timeout_failure remove_lease end @@ -32,25 +34,27 @@ class StuckCiJobsWorker Gitlab::ExclusiveLease.cancel(EXCLUSIVE_LEASE_KEY, @uuid) end - def drop(status, timeout) - search(status, timeout) do |build| - drop_build :outdated, build, status, timeout + def drop(status, column, timeout, reason) + search(status, column, timeout) do |build| + drop_build :outdated, build, status, timeout, reason end end - def drop_stuck(status, timeout) - search(status, timeout) do |build| + def drop_stuck(status, column, timeout, reason) + search(status, column, timeout) do |build| break unless build.stuck? - drop_build :stuck, build, status, timeout + drop_build :stuck, build, status, timeout, reason end end # rubocop: disable CodeReuse/ActiveRecord - def search(status, timeout) + def search(status, column, timeout) + quoted_column = ActiveRecord::Base.connection.quote_column_name(column) + loop do jobs = Ci::Build.where(status: status) - .where('ci_builds.updated_at < ?', timeout.ago) + .where("#{quoted_column} < ?", timeout.ago) .includes(:tags, :runner, project: :namespace) .limit(100) .to_a @@ -63,10 +67,10 @@ class StuckCiJobsWorker end # rubocop: enable CodeReuse/ActiveRecord - def drop_build(type, build, status, timeout) + def drop_build(type, build, status, timeout, reason) Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status}, timeout: #{timeout})" Gitlab::OptimisticLocking.retry_lock(build, 3) do |b| - b.drop(:stuck_or_timeout_failure) + b.drop(reason) end end end -- cgit v1.2.1 From b1d24c0d14afdf3312e8f0745cc5ba87e41004b4 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 25 Sep 2018 18:44:08 +0900 Subject: Fix stuck job worker. Fix sidekiq queue namespace --- app/workers/all_queues.yml | 2 +- app/workers/stuck_ci_jobs_worker.rb | 46 +++++++++++++++++++++------------ lib/gitlab/ci/status/build/scheduled.rb | 3 ++- scheduled_job_fixture.rb | 38 +++++++++++++++------------ 4 files changed, 55 insertions(+), 34 deletions(-) diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index b5a492122a3..f21789de37d 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -60,7 +60,6 @@ - pipeline_default:build_trace_sections - pipeline_default:pipeline_metrics - pipeline_default:pipeline_notification -- pipeline_default:ci_build_schedule - pipeline_hooks:build_hooks - pipeline_hooks:pipeline_hooks - pipeline_processing:build_finished @@ -71,6 +70,7 @@ - pipeline_processing:pipeline_update - pipeline_processing:stage_update - pipeline_processing:update_head_pipeline_for_merge_request +- pipeline_processing:ci_build_schedule - repository_check:repository_check_clear - repository_check:repository_check_batch diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index 884843e4465..67d88c75f91 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -16,10 +16,10 @@ class StuckCiJobsWorker Rails.logger.info "#{self.class}: Cleaning stuck builds" - drop :running, :updated_at, BUILD_RUNNING_OUTDATED_TIMEOUT, :stuck_or_timeout_failure - drop :pending, :updated_at, BUILD_PENDING_OUTDATED_TIMEOUT, :stuck_or_timeout_failure - drop :scheduled, :scheduled_at, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired - drop_stuck :pending, :updated_at, BUILD_PENDING_STUCK_TIMEOUT, :stuck_or_timeout_failure + drop :running, condition_for_outdated_running, :stuck_or_timeout_failure + drop :pending, condition_for_outdated_pending, :stuck_or_timeout_failure + drop :scheduled, condition_for_outdated_scheduled, :schedule_expired + drop_stuck :pending, condition_for_outdated_pending_stuck, :stuck_or_timeout_failure remove_lease end @@ -34,27 +34,41 @@ class StuckCiJobsWorker Gitlab::ExclusiveLease.cancel(EXCLUSIVE_LEASE_KEY, @uuid) end - def drop(status, column, timeout, reason) - search(status, column, timeout) do |build| - drop_build :outdated, build, status, timeout, reason + def drop(status, condition, reason) + search(status, condition) do |build| + drop_build :outdated, build, status, reason end end - def drop_stuck(status, column, timeout, reason) - search(status, column, timeout) do |build| + def drop_stuck(status, condition, reason) + search(status, condition) do |build| break unless build.stuck? - drop_build :stuck, build, status, timeout, reason + drop_build :stuck, build, status, reason end end - # rubocop: disable CodeReuse/ActiveRecord - def search(status, column, timeout) - quoted_column = ActiveRecord::Base.connection.quote_column_name(column) + def condition_for_outdated_running + ["updated_at < ?", BUILD_RUNNING_OUTDATED_TIMEOUT.ago] + end + def condition_for_outdated_pending + ["updated_at < ?", BUILD_PENDING_OUTDATED_TIMEOUT.ago] + end + + def condition_for_outdated_scheduled + ["scheduled_at <> '' && scheduled_at < ?", BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago] + end + + def condition_for_outdated_pending_stuck + ["updated_at < ?", BUILD_PENDING_STUCK_TIMEOUT.ago] + end + + # rubocop: disable CodeReuse/ActiveRecord + def search(status, condition) loop do jobs = Ci::Build.where(status: status) - .where("#{quoted_column} < ?", timeout.ago) + .where(*condition) .includes(:tags, :runner, project: :namespace) .limit(100) .to_a @@ -67,8 +81,8 @@ class StuckCiJobsWorker end # rubocop: enable CodeReuse/ActiveRecord - def drop_build(type, build, status, timeout, reason) - Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status}, timeout: #{timeout})" + def drop_build(type, build, status, reason) + Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status})" Gitlab::OptimisticLocking.retry_lock(build, 3) do |b| b.drop(reason) end diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index 270a2706c87..c6713f0d633 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -23,7 +23,8 @@ module Gitlab private def execute_in - Time.at(subject.scheduled_at).utc.strftime("%H:%M:%S") + diff = [0, subject.scheduled_at - Time.now].max + Time.at(diff).utc.strftime("%H:%M:%S") end end end diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb index 9ed59d337f7..ae33c6be6ad 100644 --- a/scheduled_job_fixture.rb +++ b/scheduled_job_fixture.rb @@ -1,4 +1,10 @@ ## +# ### +# IMPORTANT +# - Enable the feature flag `ci_enable_scheduled_build` on rails console! You can do `Feature.enable('ci_enable_scheduled_build')` +# This feature is off by default! +# +# # This is a debug script to reproduce specific scenarios for scheduled jobs (https://gitlab.com/gitlab-org/gitlab-ce/issues/51352) # By using this script, you don't need to setup GitLab runner. # This script is specifically made for FE/UX engineers. They can quickly check how scheduled jobs behave. @@ -78,42 +84,42 @@ cleanup: # # ### Reproduce the scenario ~ when rollout 10% jobs failed ~ # -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') # 1. Wait until rollout 10% job is triggered -# 1. ScheduledJobFixture.new(29, 1).drop_jobs('rollout 10%') +# 1. ScheduledJobFixture.new(16, 1).drop_jobs('rollout 10%') # # Expectation: Following stages should be skipped. # # ### Reproduce the scenario ~ when user clicked cancel button before build job finished ~ # -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).cancel_pipeline +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).cancel_pipeline # # Expectation: All stages should be canceled. # # ### Reproduce the scenario ~ when user canceled the pipeline after rollout 10% job is scheduled ~ # -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') # 1. Run next command before rollout 10% job is triggered -# 1. ScheduledJobFixture.new(29, 1).cancel_pipeline +# 1. ScheduledJobFixture.new(16, 1).cancel_pipeline # # Expectation: rollout 10% job will be canceled. Following stages will be skipped. # # ### Reproduce the scenario ~ when user canceled rollout 10% job after rollout 10% job is scheduled ~ # -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') # 1. Run next command before rollout 10% job is triggered -# 1. ScheduledJobFixture.new(29, 1).cancel_jobs('rollout 10%') +# 1. ScheduledJobFixture.new(16, 1).cancel_jobs('rollout 10%') # # Expectation: rollout 10% job will be canceled. Following stages will be skipped. # # ### Reproduce the scenario ~ when user played rollout 10% job immidiately ~ # -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') # 1. Play rollout 10% job before rollout 10% job is triggered # # Expectation: rollout 10% becomes pending immidiately @@ -121,10 +127,10 @@ cleanup: # ### Reproduce the scenario ~ when rollout 10% job is allowed to fail ~ # # 1. Set `allow_failure: true` to rollout 10% job -# 1. ScheduledJobFixture.new(29, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(29, 1).finish_stage_until('test') +# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') +# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') # 1. Wait until rollout 10% job is triggered -# 1. ScheduledJobFixture.new(29, 1).drop_jobs('rollout 10%') +# 1. ScheduledJobFixture.new(16, 1).drop_jobs('rollout 10%') # # Expectation: rollout 50% job should be triggered # -- cgit v1.2.1 From c514636a83987152b2a95e442f49b3ee61dcbeb8 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 14:28:22 +0900 Subject: Simplify StuckCiJobsWorker --- app/services/ci/process_pipeline_service.rb | 2 +- app/workers/stuck_ci_jobs_worker.rb | 55 +++++++++++++---------------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 07371acb3c7..1d1e39232fe 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -56,7 +56,7 @@ module Ci when 'manual' %w[success skipped] when 'delayed' - %w[success skipped] # This might be `success` only + %w[success skipped] else [] end diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index 67d88c75f91..8979596c581 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -16,10 +16,10 @@ class StuckCiJobsWorker Rails.logger.info "#{self.class}: Cleaning stuck builds" - drop :running, condition_for_outdated_running, :stuck_or_timeout_failure - drop :pending, condition_for_outdated_pending, :stuck_or_timeout_failure - drop :scheduled, condition_for_outdated_scheduled, :schedule_expired - drop_stuck :pending, condition_for_outdated_pending_stuck, :stuck_or_timeout_failure + drop :running, BUILD_RUNNING_OUTDATED_TIMEOUT + drop :pending, BUILD_PENDING_OUTDATED_TIMEOUT + drop_stuck :pending, BUILD_PENDING_STUCK_TIMEOUT + drop_stale_scheduled_builds remove_lease end @@ -34,41 +34,25 @@ class StuckCiJobsWorker Gitlab::ExclusiveLease.cancel(EXCLUSIVE_LEASE_KEY, @uuid) end - def drop(status, condition, reason) - search(status, condition) do |build| - drop_build :outdated, build, status, reason + def drop(status, timeout) + search(status, timeout) do |build| + drop_build :outdated, build, status, timeout, :stuck_or_timeout_failure end end - def drop_stuck(status, condition, reason) - search(status, condition) do |build| + def drop_stuck(status, timeout) + search(status, timeout) do |build| break unless build.stuck? - drop_build :stuck, build, status, reason + drop_build :stuck, build, status, timeout, :stuck_or_timeout_failure end end - def condition_for_outdated_running - ["updated_at < ?", BUILD_RUNNING_OUTDATED_TIMEOUT.ago] - end - - def condition_for_outdated_pending - ["updated_at < ?", BUILD_PENDING_OUTDATED_TIMEOUT.ago] - end - - def condition_for_outdated_scheduled - ["scheduled_at <> '' && scheduled_at < ?", BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago] - end - - def condition_for_outdated_pending_stuck - ["updated_at < ?", BUILD_PENDING_STUCK_TIMEOUT.ago] - end - # rubocop: disable CodeReuse/ActiveRecord - def search(status, condition) + def search(status, timeout) loop do jobs = Ci::Build.where(status: status) - .where(*condition) + .where('ci_builds.updated_at < ?', timeout.ago) .includes(:tags, :runner, project: :namespace) .limit(100) .to_a @@ -81,10 +65,21 @@ class StuckCiJobsWorker end # rubocop: enable CodeReuse/ActiveRecord - def drop_build(type, build, status, reason) - Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status})" + def drop_build(type, build, status, timeout, reason) + Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status}, timeout: #{timeout}, reason: #{reason})" Gitlab::OptimisticLocking.retry_lock(build, 3) do |b| b.drop(reason) end end + + def drop_stale_scheduled_builds + # `ci_builds` table has a partial index on `id` with `scheduled_at <> NULL` condition. + # Therefore this query's first step uses Index Search, and the following expensive + # filter `scheduled_at < ?` will only perform on a small subset (max: 100 rows) + Ci::Build.include(EachBach).where('scheduled_at <> NULL').each_batch(of: 100) do |relation| + relation.where('scheduled_at < ?', BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago).find_each do |build| + drop_build(:outdated, build, :scheduled, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired) + end + end + end end -- cgit v1.2.1 From 173300370a77f84b06755498b488cb68547eb1b3 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 14:37:11 +0900 Subject: Fix retry_build_service_spec --- spec/services/ci/retry_build_service_spec.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spec/services/ci/retry_build_service_spec.rb b/spec/services/ci/retry_build_service_spec.rb index 951c0b16a68..a945a769d4e 100644 --- a/spec/services/ci/retry_build_service_spec.rb +++ b/spec/services/ci/retry_build_service_spec.rb @@ -26,7 +26,8 @@ describe Ci::RetryBuildService do erased_at auto_canceled_by job_artifacts job_artifacts_archive job_artifacts_metadata job_artifacts_trace job_artifacts_junit job_artifacts_sast job_artifacts_dependency_scanning - job_artifacts_container_scanning job_artifacts_dast].freeze + job_artifacts_container_scanning job_artifacts_dast + scheduled_at].freeze IGNORE_ACCESSORS = %i[type lock_version target_url base_tags trace_sections @@ -43,7 +44,8 @@ describe Ci::RetryBuildService do create(:ci_build, :failed, :expired, :erased, :queued, :coverage, :tags, :allowed_to_fail, :on_tag, :triggered, :teardown_environment, description: 'my-job', stage: 'test', stage_id: stage.id, - pipeline: pipeline, auto_canceled_by: another_pipeline) + pipeline: pipeline, auto_canceled_by: another_pipeline, + scheduled_at: 10.seconds.since) end before do -- cgit v1.2.1 From 44491012828af1dbda8e807b74cd14f87be34bbd Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 14:39:05 +0900 Subject: Remove unnecessary change from schema.rb --- db/schema.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index b55a9badc6b..aec446a2f2e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1794,7 +1794,6 @@ ActiveRecord::Schema.define(version: 20180924201039) do end add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path", unique: true, using: :btree - add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"} add_index "redirect_routes", ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id", using: :btree create_table "releases", force: :cascade do |t| -- cgit v1.2.1 From af4b85cef57c00f4cccdac7fde15d4c69d9e94fb Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 14:43:03 +0900 Subject: Fix commit status presenter spec --- app/presenters/commit_status_presenter.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/presenters/commit_status_presenter.rb b/app/presenters/commit_status_presenter.rb index 65e77ea3f92..b2b9fb55cba 100644 --- a/app/presenters/commit_status_presenter.rb +++ b/app/presenters/commit_status_presenter.rb @@ -8,7 +8,8 @@ class CommitStatusPresenter < Gitlab::View::Presenter::Delegated stuck_or_timeout_failure: 'There has been a timeout failure or the job got stuck. Check your timeout limits or try again', runner_system_failure: 'There has been a runner system failure, please try again', missing_dependency_failure: 'There has been a missing dependency failure', - runner_unsupported: 'Your runner is outdated, please upgrade your runner' + runner_unsupported: 'Your runner is outdated, please upgrade your runner', + schedule_expired: 'Scheduled job could not be executed by some reason, please try again' }.freeze private_constant :CALLOUT_FAILURE_MESSAGES -- cgit v1.2.1 From 6eee8d2d53a327051515ec18953726fd5606c000 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 15:13:39 +0900 Subject: Fix process build service spec --- spec/factories/ci/builds.rb | 9 ++++ spec/services/ci/enqueue_build_service_spec.rb | 16 ------- spec/services/ci/process_build_service_spec.rb | 61 ++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 16 deletions(-) delete mode 100644 spec/services/ci/enqueue_build_service_spec.rb create mode 100644 spec/services/ci/process_build_service_spec.rb diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb index 9813190925b..aea6b5d6b2f 100644 --- a/spec/factories/ci/builds.rb +++ b/spec/factories/ci/builds.rb @@ -98,6 +98,15 @@ FactoryBot.define do success end + trait :schedulable do + self.when 'delayed' + options start_in: '1 minute' + end + + trait :actionable do + self.when 'manual' + end + trait :retried do retried true end diff --git a/spec/services/ci/enqueue_build_service_spec.rb b/spec/services/ci/enqueue_build_service_spec.rb deleted file mode 100644 index e41b8e4800b..00000000000 --- a/spec/services/ci/enqueue_build_service_spec.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true -require 'spec_helper' - -describe Ci::EnqueueBuildService, '#execute' do - let(:user) { create(:user) } - let(:project) { create(:project) } - let(:ci_build) { create(:ci_build, :created) } - - subject { described_class.new(project, user).execute(ci_build) } - - it 'enqueues the build' do - subject - - expect(ci_build.pending?).to be_truthy - end -end diff --git a/spec/services/ci/process_build_service_spec.rb b/spec/services/ci/process_build_service_spec.rb new file mode 100644 index 00000000000..74a81af75f2 --- /dev/null +++ b/spec/services/ci/process_build_service_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true +require 'spec_helper' + +describe Ci::ProcessBuildService, '#execute' do + let(:user) { create(:user) } + let(:project) { create(:project) } + + subject { described_class.new(project, user).execute(build) } + + before do + project.add_maintainer(user) + end + + context 'when build is schedulable' do + let(:build) { create(:ci_build, :created, :schedulable, user: user, project: project) } + + context 'when ci_enable_scheduled_build feature flag is enabled' do + before do + stub_feature_flags(ci_enable_scheduled_build: true) + end + + it 'schedules the build' do + subject + + expect(build).to be_scheduled + end + end + + context 'when ci_enable_scheduled_build feature flag is disabled' do + before do + stub_feature_flags(ci_enable_scheduled_build: false) + end + + it 'enqueues the build' do + subject + + expect(build).to be_pending + end + end + end + + context 'when build is actionable' do + let(:build) { create(:ci_build, :created, :actionable, user: user, project: project) } + + it 'actionizes the build' do + subject + + expect(build).to be_manual + end + end + + context 'when build does not have any actions' do + let(:build) { create(:ci_build, :created, user: user, project: project) } + + it 'enqueues the build' do + subject + + expect(build).to be_pending + end + end +end -- cgit v1.2.1 From 20de2480d2431bc4afcd264fbb4aa73baa74a2b4 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 15:15:52 +0900 Subject: Fix stuck ci jobs worker --- app/workers/stuck_ci_jobs_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index 8979596c581..c146db1086b 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -76,7 +76,7 @@ class StuckCiJobsWorker # `ci_builds` table has a partial index on `id` with `scheduled_at <> NULL` condition. # Therefore this query's first step uses Index Search, and the following expensive # filter `scheduled_at < ?` will only perform on a small subset (max: 100 rows) - Ci::Build.include(EachBach).where('scheduled_at <> NULL').each_batch(of: 100) do |relation| + Ci::Build.include(EachBatch).where('scheduled_at <> NULL').each_batch(of: 100) do |relation| relation.where('scheduled_at < ?', BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago).find_each do |build| drop_build(:outdated, build, :scheduled, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired) end -- cgit v1.2.1 From 4b0aa573498dda340bc24a63164433e1de670c03 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 15:19:56 +0900 Subject: Check the precense of scheduled_at in Status::Build --- lib/gitlab/ci/status/build/scheduled.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index c6713f0d633..7b46c81fb5d 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -17,7 +17,7 @@ module Gitlab end def self.matches?(build, user) - build.scheduled? + build.scheduled? && build.scheduled_at end private -- cgit v1.2.1 From 9266cd5e8b543ab356df3fba78bf9e01536a180d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 19:12:48 +0900 Subject: Add unit tests for Ci::Build. Fix validation on state transition --- app/models/ci/build.rb | 8 +-- spec/factories/ci/builds.rb | 12 ++++ spec/models/ci/build_spec.rb | 153 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+), 5 deletions(-) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 1209e7ef696..f83dfa5d1c4 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -168,10 +168,8 @@ module Ci end event :enqueue_scheduled do - transition scheduled: :pending do - validate do |build| - build.scheduled_at && build.scheduled_at < Time.now - end + transition scheduled: :pending, if: ->(build) do + build.scheduled_at && build.scheduled_at < Time.now end end @@ -269,7 +267,7 @@ module Ci end def action? - %w[manual scheduled].include?(self.when) + %w[manual delayed].include?(self.when) end # rubocop: disable CodeReuse/ServiceClass diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb index aea6b5d6b2f..73fa16fe6bf 100644 --- a/spec/factories/ci/builds.rb +++ b/spec/factories/ci/builds.rb @@ -70,6 +70,18 @@ FactoryBot.define do status 'created' end + trait :scheduled do + schedulable + status 'scheduled' + scheduled_at 1.minute.since + end + + trait :expired_scheduled do + schedulable + status 'scheduled' + scheduled_at 1.minute.ago + end + trait :manual do status 'manual' self.when 'manual' diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index e82d93d5935..939017e7ee7 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -209,6 +209,147 @@ describe Ci::Build do end end + describe '#schedulable?' do + subject { build.schedulable? } + + context 'when build is schedulable' do + let(:build) { create(:ci_build, :created, :schedulable, project: project) } + + it { expect(subject).to be_truthy } + + context 'when feature flag is diabled' do + before do + stub_feature_flags(ci_enable_scheduled_build: false) + end + + it { expect(subject).to be_falsy } + end + end + + context 'when build is not schedulable' do + let(:build) { create(:ci_build, :created, project: project) } + + it { expect(subject).to be_falsy } + end + end + + describe '#schedule' do + subject { build.schedule } + + before do + project.add_developer(user) + end + + let(:build) { create(:ci_build, :created, :schedulable, user: user, project: project) } + + it 'transits to scheduled' do + subject + + expect(build).to be_scheduled + end + + it 'updates scheduled_at column' do + subject + + expect(build.scheduled_at).not_to be_nil + end + + it 'schedules BuildScheduleWorker at the right time' do + Timecop.freeze do + expect(Ci::BuildScheduleWorker) + .to receive(:perform_at).with(1.minute.since, build.id) + + subject + end + end + end + + describe '#unschedule' do + subject { build.unschedule } + + context 'when build is scheduled' do + let(:build) { create(:ci_build, :scheduled, pipeline: pipeline) } + + it 'cleans scheduled_at column' do + subject + + expect(build.scheduled_at).to be_nil + end + + it 'transits to manual' do + subject + + expect(build).to be_manual + end + end + + context 'when build is not scheduled' do + let(:build) { create(:ci_build, :created, pipeline: pipeline) } + + it 'does not transit status' do + subject + + expect(build).to be_created + end + end + end + + describe '#options_scheduled_at' do + subject { build.options_scheduled_at } + + let(:build) { build_stubbed(:ci_build, options: option) } + + context 'when start_in is 1 day' do + let(:option) { { start_in: '1 day' } } + + it 'returns date after 1 day' do + Timecop.freeze do + is_expected.to eq(1.day.since) + end + end + end + + context 'when start_in is 1 week' do + let(:option) { { start_in: '1 week' } } + + it 'returns date after 1 week' do + Timecop.freeze do + is_expected.to eq(1.week.since) + end + end + end + end + + describe '#enqueue_scheduled' do + subject { build.enqueue_scheduled } + + context 'when build is scheduled and the right time has not come yet' do + let(:build) { create(:ci_build, :scheduled, pipeline: pipeline) } + + it 'does not transits the status' do + subject + + expect(build).to be_scheduled + end + end + + context 'when build is scheduled and the right time has already come' do + let(:build) { create(:ci_build, :expired_scheduled, pipeline: pipeline) } + + it 'cleans scheduled_at column' do + subject + + expect(build.scheduled_at).to be_nil + end + + it 'transits to pending' do + subject + + expect(build).to be_pending + end + end + end + describe '#any_runners_online?' do subject { build.any_runners_online? } @@ -1193,6 +1334,12 @@ describe Ci::Build do it { is_expected.to be_truthy } end + context 'when is set to delayed' do + let(:value) { 'delayed' } + + it { is_expected.to be_truthy } + end + context 'when set to something else' do let(:value) { 'something else' } @@ -1463,6 +1610,12 @@ describe Ci::Build do end end + context 'when build is scheduled' do + subject { build_stubbed(:ci_build, :scheduled) } + + it { is_expected.to be_playable } + end + context 'when build is not a manual action' do subject { build_stubbed(:ci_build, :success) } -- cgit v1.2.1 From cc8b8a60b7ac9df0008192a489da6446c7fd5f89 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 19:49:29 +0900 Subject: Add unit spec for Ci::Pipeline --- spec/models/ci/pipeline_spec.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 4755702c0e9..0a570394192 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -75,6 +75,18 @@ describe Ci::Pipeline, :mailer do end end + describe '#schedule' do + subject { pipeline.schedule } + + let(:pipeline) { build(:ci_pipeline, status: :created) } + + it 'changes pipeline status to schedule' do + subject + + expect(pipeline).to be_scheduled + end + end + describe '#valid_commit_sha' do context 'commit.sha can not start with 00000000' do before do @@ -1288,6 +1300,19 @@ describe Ci::Pipeline, :mailer do end end + context 'when updating status to scheduled' do + before do + allow(pipeline) + .to receive_message_chain(:statuses, :latest, :status) + .and_return(:scheduled) + end + + it 'updates pipeline status to scheduled' do + expect { pipeline.update_status } + .to change { pipeline.reload.status }.to 'scheduled' + end + end + context 'when statuses status was not recognized' do before do allow(pipeline) -- cgit v1.2.1 From 8ed7b34066464758e5cab955abb7a06b44c8e677 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 26 Sep 2018 20:21:36 +0900 Subject: Add unit tests for CommitStatus and Ci::Stage --- spec/factories/commit_statuses.rb | 4 +++ spec/models/ci/stage_spec.rb | 24 ++++++++++++++++ spec/models/commit_status_spec.rb | 20 +++++++++++++ spec/models/concerns/has_status_spec.rb | 50 +++++++++++++++++++++++++++++++-- 4 files changed, 96 insertions(+), 2 deletions(-) diff --git a/spec/factories/commit_statuses.rb b/spec/factories/commit_statuses.rb index 53368c64e10..381bf07f6a0 100644 --- a/spec/factories/commit_statuses.rb +++ b/spec/factories/commit_statuses.rb @@ -41,6 +41,10 @@ FactoryBot.define do status 'manual' end + trait :scheduled do + status 'scheduled' + end + after(:build) do |build, evaluator| build.project = build.pipeline.project end diff --git a/spec/models/ci/stage_spec.rb b/spec/models/ci/stage_spec.rb index 22a4556c10c..060a1d95293 100644 --- a/spec/models/ci/stage_spec.rb +++ b/spec/models/ci/stage_spec.rb @@ -89,6 +89,18 @@ describe Ci::Stage, :models do end end + context 'when stage is scheduled because of scheduled builds' do + before do + create(:ci_build, :scheduled, stage_id: stage.id) + end + + it 'updates status to scheduled' do + expect { stage.update_status } + .to change { stage.reload.status } + .to 'scheduled' + end + end + context 'when stage is skipped because is empty' do it 'updates status to skipped' do expect { stage.update_status } @@ -188,6 +200,18 @@ describe Ci::Stage, :models do end end + describe '#schedule' do + subject { stage.schedule } + + let(:stage) { create(:ci_stage_entity, status: :created) } + + it 'updates stage status' do + subject + + expect(stage).to be_scheduled + end + end + describe '#position' do context 'when stage has been imported and does not have position index set' do before do diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb index f3f2bc28d2c..917685399d4 100644 --- a/spec/models/commit_status_spec.rb +++ b/spec/models/commit_status_spec.rb @@ -129,6 +129,20 @@ describe CommitStatus do end end + describe '#cancel' do + subject { job.cancel } + + context 'when status is scheduled' do + let(:job) { build(:commit_status, :scheduled) } + + it 'updates the status' do + subject + + expect(job).to be_canceled + end + end + end + describe '#auto_canceled?' do subject { commit_status.auto_canceled? } @@ -564,6 +578,12 @@ describe CommitStatus do it_behaves_like 'commit status enqueued' end + + context 'when initial state is :scheduled' do + let(:commit_status) { create(:commit_status, :scheduled) } + + it_behaves_like 'commit status enqueued' + end end describe '#present' do diff --git a/spec/models/concerns/has_status_spec.rb b/spec/models/concerns/has_status_spec.rb index fe9a89e8806..6b1038cb8fd 100644 --- a/spec/models/concerns/has_status_spec.rb +++ b/spec/models/concerns/has_status_spec.rb @@ -270,11 +270,11 @@ describe HasStatus do describe '.cancelable' do subject { CommitStatus.cancelable } - %i[running pending created].each do |status| + %i[running pending created scheduled].each do |status| it_behaves_like 'containing the job', status end - %i[failed success skipped canceled].each do |status| + %i[failed success skipped canceled manual].each do |status| it_behaves_like 'not containing the job', status end end @@ -290,6 +290,18 @@ describe HasStatus do it_behaves_like 'not containing the job', status end end + + describe '.scheduled' do + subject { CommitStatus.scheduled } + + %i[scheduled].each do |status| + it_behaves_like 'containing the job', status + end + + %i[failed success skipped canceled].each do |status| + it_behaves_like 'not containing the job', status + end + end end describe '::DEFAULT_STATUS' do @@ -303,4 +315,38 @@ describe HasStatus do expect(described_class::BLOCKED_STATUS).to eq %w[manual scheduled] end end + + describe 'blocked?' do + subject { object.blocked? } + + %w[ci_pipeline ci_stage ci_build generic_commit_status].each do |type| + let(:object) { build(type, status: status) } + + context 'when status is scheduled' do + let(:status) { :scheduled } + + it { is_expected.to be_truthy } + end + + context 'when status is manual' do + let(:status) { :manual } + + it { is_expected.to be_truthy } + end + + context 'when status is created' do + let(:status) { :created } + + it { is_expected.to be_falsy } + end + end + end + + describe '.status_sql' do + subject { Ci::Build.status_sql } + + it 'returns SQL' do + puts subject + end + end end -- cgit v1.2.1 From f228f23a3243ee64cd4bdcf54d010a5eedf0b8a7 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:26:08 +0900 Subject: Fix process build service spec --- spec/services/ci/process_build_service_spec.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/spec/services/ci/process_build_service_spec.rb b/spec/services/ci/process_build_service_spec.rb index 74a81af75f2..962d07e185b 100644 --- a/spec/services/ci/process_build_service_spec.rb +++ b/spec/services/ci/process_build_service_spec.rb @@ -20,9 +20,14 @@ describe Ci::ProcessBuildService, '#execute' do end it 'schedules the build' do - subject + Timecop.freeze do + expect(Ci::BuildScheduleWorker) + .to receive(:perform_at).with(1.minute.since, build.id) + + subject - expect(build).to be_scheduled + expect(build).to be_scheduled + end end end @@ -34,7 +39,7 @@ describe Ci::ProcessBuildService, '#execute' do it 'enqueues the build' do subject - expect(build).to be_pending + expect(build).to be_manual end end end -- cgit v1.2.1 From 6d712148c9595c4c87247757100ca80198cdd889 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:30:16 +0900 Subject: Fix build_spec --- spec/models/ci/build_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 939017e7ee7..83add15fab7 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -243,12 +243,16 @@ describe Ci::Build do let(:build) { create(:ci_build, :created, :schedulable, user: user, project: project) } it 'transits to scheduled' do + allow(Ci::BuildScheduleWorker).to receive(:perform_at) + subject expect(build).to be_scheduled end it 'updates scheduled_at column' do + allow(Ci::BuildScheduleWorker).to receive(:perform_at) + subject expect(build.scheduled_at).not_to be_nil -- cgit v1.2.1 From ddb313aebf2c499264b32567d3509f152c242d7a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:52:15 +0900 Subject: Remove Scheduled Status class from pipeline --- app/services/ci/process_pipeline_service.rb | 2 +- lib/gitlab/ci/status/pipeline/blocked.rb | 2 +- lib/gitlab/ci/status/pipeline/factory.rb | 1 - lib/gitlab/ci/status/pipeline/scheduled.rb | 21 --------------------- 4 files changed, 2 insertions(+), 24 deletions(-) delete mode 100644 lib/gitlab/ci/status/pipeline/scheduled.rb diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 1d1e39232fe..5e8a3976cc0 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -24,7 +24,7 @@ module Ci def process_stage(index) current_status = status_for_prior_stages(index) - return if HasStatus::BLOCKED_STATUS == current_status + return if HasStatus::BLOCKED_STATUS.include?(current_status) if HasStatus::COMPLETED_STATUSES.include?(current_status) created_builds_in_stage(index).select do |build| diff --git a/lib/gitlab/ci/status/pipeline/blocked.rb b/lib/gitlab/ci/status/pipeline/blocked.rb index bf7e484ee9b..59fcd8ad7ff 100644 --- a/lib/gitlab/ci/status/pipeline/blocked.rb +++ b/lib/gitlab/ci/status/pipeline/blocked.rb @@ -8,7 +8,7 @@ module Gitlab end def label - s_('CiStatusLabel|waiting for manual action') + s_('CiStatusLabel|waiting for manual action or delayed job') end def self.matches?(pipeline, user) diff --git a/lib/gitlab/ci/status/pipeline/factory.rb b/lib/gitlab/ci/status/pipeline/factory.rb index 00d8f01cbdc..17f9a75f436 100644 --- a/lib/gitlab/ci/status/pipeline/factory.rb +++ b/lib/gitlab/ci/status/pipeline/factory.rb @@ -5,7 +5,6 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::SuccessWarning, - Status::Pipeline::Scheduled, Status::Pipeline::Blocked]] end diff --git a/lib/gitlab/ci/status/pipeline/scheduled.rb b/lib/gitlab/ci/status/pipeline/scheduled.rb deleted file mode 100644 index 5e8f99e58d7..00000000000 --- a/lib/gitlab/ci/status/pipeline/scheduled.rb +++ /dev/null @@ -1,21 +0,0 @@ -module Gitlab - module Ci - module Status - module Pipeline - class Scheduled < Status::Extended - def text - s_('CiStatusText|scheduled') - end - - def label - s_('CiStatusLabel|waiting for scheduled job') - end - - def self.matches?(pipeline, user) - pipeline.scheduled? - end - end - end - end - end -end -- cgit v1.2.1 From b98be35b61aaf71a263ec03807ab8e5d07a9d637 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:53:54 +0900 Subject: Fix safe model attributes --- spec/lib/gitlab/import_export/safe_model_attributes.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml index e9f1be172b0..1d59cff7ba8 100644 --- a/spec/lib/gitlab/import_export/safe_model_attributes.yml +++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml @@ -300,6 +300,7 @@ CommitStatus: - retried - protected - failure_reason +- scheduled_at Ci::Variable: - id - project_id -- cgit v1.2.1 From 174fd391f07439f94e0c29502384cfb0cb6582da Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:57:43 +0900 Subject: Add schedule_expired to failed status --- lib/gitlab/ci/status/build/failed.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/gitlab/ci/status/build/failed.rb b/lib/gitlab/ci/status/build/failed.rb index 2fa9a0d4541..cdbcb7a47cd 100644 --- a/lib/gitlab/ci/status/build/failed.rb +++ b/lib/gitlab/ci/status/build/failed.rb @@ -10,7 +10,8 @@ module Gitlab stuck_or_timeout_failure: 'stuck or timeout failure', runner_system_failure: 'runner system failure', missing_dependency_failure: 'missing dependency failure', - runner_unsupported: 'unsupported runner' + runner_unsupported: 'unsupported runner', + schedule_expired: 'schedule expired', }.freeze private_constant :REASONS -- cgit v1.2.1 From c6bb038c006f4cfff68666661d3a8fe257c51ed7 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 13:59:12 +0900 Subject: Fix favicon spec --- spec/lib/gitlab/favicon_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/lib/gitlab/favicon_spec.rb b/spec/lib/gitlab/favicon_spec.rb index 68abcb3520a..49a423191bb 100644 --- a/spec/lib/gitlab/favicon_spec.rb +++ b/spec/lib/gitlab/favicon_spec.rb @@ -58,6 +58,7 @@ RSpec.describe Gitlab::Favicon, :request_store do favicon_status_not_found favicon_status_pending favicon_status_running + favicon_status_scheduled favicon_status_skipped favicon_status_success favicon_status_warning -- cgit v1.2.1 From f3348951a80f11b376d5d21843f57102630e1d5d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 14:02:24 +0900 Subject: Fix coding style offence --- app/workers/stuck_ci_jobs_worker.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index c146db1086b..ab090b96c52 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -63,14 +63,6 @@ class StuckCiJobsWorker end end end - # rubocop: enable CodeReuse/ActiveRecord - - def drop_build(type, build, status, timeout, reason) - Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status}, timeout: #{timeout}, reason: #{reason})" - Gitlab::OptimisticLocking.retry_lock(build, 3) do |b| - b.drop(reason) - end - end def drop_stale_scheduled_builds # `ci_builds` table has a partial index on `id` with `scheduled_at <> NULL` condition. @@ -82,4 +74,12 @@ class StuckCiJobsWorker end end end + # rubocop: enable CodeReuse/ActiveRecord + + def drop_build(type, build, status, timeout, reason) + Rails.logger.info "#{self.class}: Dropping #{type} build #{build.id} for runner #{build.runner_id} (status: #{status}, timeout: #{timeout}, reason: #{reason})" + Gitlab::OptimisticLocking.retry_lock(build, 3) do |b| + b.drop(reason) + end + end end -- cgit v1.2.1 From 80a92650faf9d7ca7a706b6a74019d869598fe41 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 16:10:55 +0900 Subject: Add Spec for ProcessPipelineService --- app/models/ci/pipeline.rb | 2 +- app/services/ci/process_build_service.rb | 37 +++- app/services/ci/process_pipeline_service.rb | 30 +--- spec/services/ci/process_pipeline_service_spec.rb | 203 +++++++++++++++++++++- 4 files changed, 236 insertions(+), 36 deletions(-) diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 2d90c9bfe50..f936115014d 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -80,7 +80,7 @@ module Ci state_machine :status, initial: :created do event :enqueue do - transition [:created, :skipped] => :pending + transition [:created, :skipped, :scheduled] => :pending transition [:success, :failed, :canceled] => :running end diff --git a/app/services/ci/process_build_service.rb b/app/services/ci/process_build_service.rb index 0f06683587d..41ea62b4e4a 100644 --- a/app/services/ci/process_build_service.rb +++ b/app/services/ci/process_build_service.rb @@ -2,13 +2,38 @@ module Ci class ProcessBuildService < BaseService - def execute(build) - if build.schedulable? - build.schedule! - elsif build.action? - build.actionize + def execute(build, current_status) + if valid_statuses_for_when(build.when).include?(current_status) + if build.schedulable? + build.schedule! + elsif build.action? + build.actionize + else + build.enqueue + end + true else - build.enqueue + build.skip + false + end + end + + private + + def valid_statuses_for_when(value) + case value + when 'on_success' + %w[success skipped] + when 'on_failure' + %w[failed] + when 'always' + %w[success failed skipped] + when 'manual' + %w[success skipped] + when 'delayed' + %w[success skipped] + else + [] end end end diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 5e8a3976cc0..446188347df 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -29,39 +29,13 @@ module Ci if HasStatus::COMPLETED_STATUSES.include?(current_status) created_builds_in_stage(index).select do |build| Gitlab::OptimisticLocking.retry_lock(build) do |subject| - process_build(subject, current_status) + Ci::ProcessBuildService.new(project, @user) + .execute(build, current_status) end end end end - def process_build(build, current_status) - if valid_statuses_for_when(build.when).include?(current_status) - Ci::ProcessBuildService.new(project, @user).execute(build) - true - else - build.skip - false - end - end - - def valid_statuses_for_when(value) - case value - when 'on_success' - %w[success skipped] - when 'on_failure' - %w[failed] - when 'always' - %w[success failed skipped] - when 'manual' - %w[success skipped] - when 'delayed' - %w[success skipped] - else - [] - end - end - # rubocop: disable CodeReuse/ActiveRecord def status_for_prior_stages(index) pipeline.builds.where('stage_idx < ?', index).latest.status || 'success' diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb index feb5120bc68..d314d774be4 100644 --- a/spec/services/ci/process_pipeline_service_spec.rb +++ b/spec/services/ci/process_pipeline_service_spec.rb @@ -242,6 +242,187 @@ describe Ci::ProcessPipelineService, '#execute' do end end + context 'when delayed jobs are defined' do + context 'when the scene is timed incremental rollout' do + before do + create_build('build', stage_idx: 0) + create_build('rollout10%', **delayed_options, stage_idx: 1) + create_build('rollout100%', **delayed_options, stage_idx: 2) + create_build('cleanup', stage_idx: 3) + + allow(Ci::BuildScheduleWorker).to receive(:perform_at) + end + + context 'when builds are successful' do + it 'properly processes the pipeline' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) + + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) + + enqueue_scheduled('rollout10%') + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'success', 'rollout100%': 'scheduled' }) + + enqueue_scheduled('rollout100%') + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'success', 'rollout100%': 'success', 'cleanup': 'pending' }) + + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'success', 'rollout100%': 'success', 'cleanup': 'success' }) + expect(pipeline.reload.status).to eq 'success' + end + end + + context 'when build job fails' do + it 'properly processes the pipeline' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) + + fail_running_or_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'failed' }) + expect(pipeline.reload.status).to eq 'failed' + end + end + + context 'when rollout 10% is unscheduled' do + it 'properly processes the pipeline' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) + + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) + + unschedule + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'manual' }) + expect(pipeline.reload.status).to eq 'manual' + end + + context 'when user plays rollout 10%' do + it 'schedules rollout100%' do + process_pipeline + succeed_pending + unschedule + play_manual_action('rollout10%') + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'success', 'rollout100%': 'scheduled' }) + expect(pipeline.reload.status).to eq 'scheduled' + end + end + end + + context 'when rollout 10% fails' do + it 'properly processes the pipeline' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) + + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) + + enqueue_scheduled('rollout10%') + fail_running_or_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'failed' }) + expect(pipeline.reload.status).to eq 'failed' + end + + context 'when user retries rollout 10%' do + it 'does not schedule rollout10% again' do + process_pipeline + succeed_pending + enqueue_scheduled('rollout10%') + fail_running_or_pending + retry_build('rollout10%') + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'pending' }) + expect(pipeline.reload.status).to eq 'running' + end + end + end + + context 'when rollout 10% is played immidiately' do + it 'properly processes the pipeline' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) + + succeed_pending + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) + + play_manual_action('rollout10%') + + expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'pending' }) + expect(pipeline.reload.status).to eq 'running' + end + end + end + + context 'when only one scheduled job exists in a pipeline' do + before do + create_build('delayed', **delayed_options, stage_idx: 0) + + allow(Ci::BuildScheduleWorker).to receive(:perform_at) + end + + it 'properly processes the pipeline' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'delayed': 'scheduled' }) + + expect(pipeline.reload.status).to eq 'scheduled' + end + end + + context 'when there are two delayed jobs in a stage' do + before do + create_build('delayed1', **delayed_options, stage_idx: 0) + create_build('delayed2', **delayed_options, stage_idx: 0) + create_build('job', stage_idx: 1) + + allow(Ci::BuildScheduleWorker).to receive(:perform_at) + end + + it 'blocks the stage until all scheduled jobs finished' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'delayed1': 'scheduled', 'delayed2': 'scheduled' }) + + enqueue_scheduled('delayed1') + + expect(builds_names_and_statuses).to eq({ 'delayed1': 'pending', 'delayed2': 'scheduled' }) + expect(pipeline.reload.status).to eq 'scheduled' + end + end + + context 'when a delayed job is allowed to fail' do + before do + create_build('delayed', **delayed_options, allow_failure: true, stage_idx: 0) + create_build('job', stage_idx: 1) + + allow(Ci::BuildScheduleWorker).to receive(:perform_at) + end + + it 'blocks the stage and continues after it failed' do + expect(process_pipeline).to be_truthy + expect(builds_names_and_statuses).to eq({ 'delayed': 'scheduled' }) + + enqueue_scheduled('delayed') + fail_running_or_pending + + expect(builds_names_and_statuses).to eq({ 'delayed': 'failed', 'job': 'pending' }) + expect(pipeline.reload.status).to eq 'pending' + end + end + end + context 'when there are manual action in earlier stages' do context 'when first stage has only optional manual actions' do before do @@ -536,6 +717,10 @@ describe Ci::ProcessPipelineService, '#execute' do builds.pluck(:name) end + def builds_names_and_statuses + builds.inject({}) { |h, b| h[b.name.to_sym] = b.status; h } + end + def all_builds_names all_builds.pluck(:name) end @@ -549,7 +734,7 @@ describe Ci::ProcessPipelineService, '#execute' do end def succeed_pending - builds.pending.update_all(status: 'success') + builds.pending.map(&:success) end def succeed_running_or_pending @@ -568,6 +753,14 @@ describe Ci::ProcessPipelineService, '#execute' do builds.find_by(name: name).play(user) end + def enqueue_scheduled(name) + builds.scheduled.find_by(name: name).enqueue + end + + def retry_build(name) + Ci::Build.retry(builds.find_by(name: name), user) + end + def manual_actions pipeline.manual_actions(true) end @@ -575,4 +768,12 @@ describe Ci::ProcessPipelineService, '#execute' do def create_build(name, **opts) create(:ci_build, :created, pipeline: pipeline, name: name, **opts) end + + def delayed_options + { when: 'delayed', options: { start_in: '1 minute' } } + end + + def unschedule + pipeline.builds.scheduled.map(&:unschedule) + end end -- cgit v1.2.1 From 71fc37c9cf8aee5de3d4d43ec6ea97a56e34537d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 17:50:50 +0900 Subject: Add spec for BuildScheduleWorker and RunScheduledBuildService --- .../ci/run_scheduled_build_service_spec.rb | 62 ++++++++++++++++++++++ spec/workers/ci/build_schedule_worker_spec.rb | 40 ++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 spec/services/ci/run_scheduled_build_service_spec.rb create mode 100644 spec/workers/ci/build_schedule_worker_spec.rb diff --git a/spec/services/ci/run_scheduled_build_service_spec.rb b/spec/services/ci/run_scheduled_build_service_spec.rb new file mode 100644 index 00000000000..145905db0cf --- /dev/null +++ b/spec/services/ci/run_scheduled_build_service_spec.rb @@ -0,0 +1,62 @@ +require 'spec_helper' + +describe Ci::RunScheduledBuildService do + let(:user) { create(:user) } + let(:project) { create(:project) } + let(:pipeline) { create(:ci_pipeline, project: project) } + + subject { described_class.new(project, user).execute(build) } + + context 'when user can update build' do + before do + project.add_developer(user) + + create(:protected_branch, :developers_can_merge, + name: pipeline.ref, project: project) + end + + context 'when build is scheduled' do + context 'when scheduled_at is expired' do + let(:build) { create(:ci_build, :expired_scheduled, user: user, project: project, pipeline: pipeline) } + + it 'can run the build' do + expect { subject }.not_to raise_error + + expect(build).to be_pending + end + end + + context 'when scheduled_at is not expired' do + let(:build) { create(:ci_build, :scheduled, user: user, project: project, pipeline: pipeline) } + + it 'can run the build' do + expect { subject }.to raise_error(StateMachines::InvalidTransition) + + expect(build).to be_scheduled + end + end + end + + context 'when build is not scheduled' do + let(:build) { create(:ci_build, :created, user: user, project: project, pipeline: pipeline) } + + it 'can not run the build' do + expect { subject }.to raise_error(StateMachines::InvalidTransition) + + expect(build).to be_created + end + end + end + + context 'when user can not update build' do + context 'when build is scheduled' do + let(:build) { create(:ci_build, :scheduled, user: user, project: project, pipeline: pipeline) } + + it 'can not run the build' do + expect { subject }.to raise_error(Gitlab::Access::AccessDeniedError) + + expect(build).to be_scheduled + end + end + end +end diff --git a/spec/workers/ci/build_schedule_worker_spec.rb b/spec/workers/ci/build_schedule_worker_spec.rb new file mode 100644 index 00000000000..c76537b9233 --- /dev/null +++ b/spec/workers/ci/build_schedule_worker_spec.rb @@ -0,0 +1,40 @@ +require 'spec_helper' + +describe Ci::BuildScheduleWorker do + subject { described_class.new.perform(build.id) } + + context 'when build is found' do + context 'when build is scheduled' do + let(:build) { create(:ci_build, :scheduled) } + + it 'executes RunScheduledBuildService' do + expect_any_instance_of(Ci::RunScheduledBuildService) + .to receive(:execute).once + + subject + end + end + + context 'when build is not scheduled' do + let(:build) { create(:ci_build, :created) } + + it 'executes RunScheduledBuildService' do + expect_any_instance_of(Ci::RunScheduledBuildService) + .not_to receive(:execute) + + subject + end + end + end + + context 'when build is not found' do + let(:build) { build_stubbed(:ci_build, :scheduled) } + + it 'does nothing' do + expect_any_instance_of(Ci::RunScheduledBuildService) + .not_to receive(:execute) + + subject + end + end +end -- cgit v1.2.1 From 587560757faaedb6c61ef7aa77f11934cb76084b Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 18:17:43 +0900 Subject: Fix StuckCiJobsWorker and added tests --- app/models/commit_status.rb | 2 +- app/workers/stuck_ci_jobs_worker.rb | 2 +- spec/workers/stuck_ci_jobs_worker_spec.rb | 41 +++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index 2fd3365098a..2020dd637a0 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -84,7 +84,7 @@ class CommitStatus < ActiveRecord::Base end event :drop do - transition [:created, :pending, :running] => :failed + transition [:created, :pending, :running, :scheduled] => :failed end event :success do diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index ab090b96c52..821ea75703f 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -68,7 +68,7 @@ class StuckCiJobsWorker # `ci_builds` table has a partial index on `id` with `scheduled_at <> NULL` condition. # Therefore this query's first step uses Index Search, and the following expensive # filter `scheduled_at < ?` will only perform on a small subset (max: 100 rows) - Ci::Build.include(EachBatch).where('scheduled_at <> NULL').each_batch(of: 100) do |relation| + Ci::Build.include(EachBatch).where('scheduled_at IS NOT NULL').each_batch(of: 100) do |relation| relation.where('scheduled_at < ?', BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago).find_each do |build| drop_build(:outdated, build, :scheduled, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired) end diff --git a/spec/workers/stuck_ci_jobs_worker_spec.rb b/spec/workers/stuck_ci_jobs_worker_spec.rb index 856886e3df5..2f8ba4859d7 100644 --- a/spec/workers/stuck_ci_jobs_worker_spec.rb +++ b/spec/workers/stuck_ci_jobs_worker_spec.rb @@ -127,6 +127,47 @@ describe StuckCiJobsWorker do end end + describe 'drop_stale_scheduled_builds' do + let(:status) { 'scheduled' } + let(:updated_at) { } + + context 'when scheduled at 2 hours ago but it is not executed yet' do + let!(:job) { create(:ci_build, :scheduled, scheduled_at: 2.hours.ago) } + + it 'drops the stale scheduled build' do + expect(Ci::Build.scheduled.count).to eq(1) + expect(job).to be_scheduled + + worker.perform + job.reload + + expect(Ci::Build.scheduled.count).to eq(0) + expect(job).to be_failed + expect(job).to be_schedule_expired + end + end + + context 'when scheduled at 30 minutes ago but it is not executed yet' do + let!(:job) { create(:ci_build, :scheduled, scheduled_at: 30.minutes.ago) } + + it 'does not drop the stale scheduled build yet' do + expect(Ci::Build.scheduled.count).to eq(1) + expect(job).to be_scheduled + + worker.perform + + expect(Ci::Build.scheduled.count).to eq(1) + expect(job).to be_scheduled + end + end + + context 'when there are no stale scheduled builds' do + it 'does not drop the stale scheduled build yet' do + expect { worker.perform }.not_to raise_error + end + end + end + describe 'exclusive lease' do let(:status) { 'running' } let(:updated_at) { 2.days.ago } -- cgit v1.2.1 From 6fb1e0d8884fb7e64cb3f98ccd84c9b4db5096ac Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 18:23:02 +0900 Subject: Fix partial index for scheduled_at --- db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb | 2 +- db/schema.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb b/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb index 1b79365a0f6..19326e63839 100644 --- a/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb +++ b/db/migrate/20180924201039_add_partial_index_to_scheduled_at.rb @@ -9,7 +9,7 @@ class AddPartialIndexToScheduledAt < ActiveRecord::Migration disable_ddl_transaction! def up - add_concurrent_index(:ci_builds, :id, where: "scheduled_at <> NULL", name: INDEX_NAME) + add_concurrent_index(:ci_builds, :id, where: "scheduled_at IS NOT NULL", name: INDEX_NAME) end def down diff --git a/db/schema.rb b/db/schema.rb index aec446a2f2e..f19fab6a26b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -344,7 +344,7 @@ ActiveRecord::Schema.define(version: 20180924201039) do add_index "ci_builds", ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref", using: :btree add_index "ci_builds", ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref", using: :btree add_index "ci_builds", ["id"], name: "partial_index_ci_builds_on_id_with_legacy_artifacts", where: "(artifacts_file <> ''::text)", using: :btree - add_index "ci_builds", ["id"], name: "partial_index_ci_builds_on_id_with_scheduled_jobs", where: "(scheduled_at <> NULL::timestamp with time zone)", using: :btree + add_index "ci_builds", ["id"], name: "partial_index_ci_builds_on_id_with_scheduled_jobs", where: "(scheduled_at IS NOT NULL)", using: :btree add_index "ci_builds", ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id", using: :btree add_index "ci_builds", ["protected"], name: "index_ci_builds_on_protected", using: :btree add_index "ci_builds", ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree -- cgit v1.2.1 From eee454e142fb99646649f8b8c9ccd8626c9bd70a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 19:08:11 +0900 Subject: Fix validation methods in Config::Entry::Job. Added spec for that --- lib/gitlab/ci/config/entry/job.rb | 13 ++---- spec/lib/gitlab/ci/config/entry/job_spec.rb | 65 +++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index 3ad048883af..03971254310 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -30,19 +30,14 @@ module Gitlab validates :when, inclusion: { in: %w[on_success on_failure always manual delayed], message: 'should be on_success, on_failure, ' \ - 'always or manual' } + 'always, manual or delayed' } validates :dependencies, array_of_strings: true validates :extends, type: String - - with_options if: :delayed? do - validates :start_in, duration: true, allow_nil: false - end - - with_options unless: :delayed? do - validates :start_in, presence: false - end end + + validates :start_in, duration: true, if: :delayed? + validates :start_in, absence: true, unless: :delayed? end entry :before_script, Entry::Script, diff --git a/spec/lib/gitlab/ci/config/entry/job_spec.rb b/spec/lib/gitlab/ci/config/entry/job_spec.rb index 2c9758401b7..d745c4ca2ad 100644 --- a/spec/lib/gitlab/ci/config/entry/job_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/job_spec.rb @@ -39,6 +39,16 @@ describe Gitlab::Ci::Config::Entry::Job do expect(entry.errors).to include "job name can't be blank" end end + + context 'when delayed job' do + context 'when start_in is specified' do + let(:config) { { script: 'echo', when: 'delayed', start_in: '1 day' } } + + it 'returns error about invalid type' do + expect(entry).to be_valid + end + end + end end context 'when entry value is not correct' do @@ -129,6 +139,43 @@ describe Gitlab::Ci::Config::Entry::Job do end end end + + context 'when delayed job' do + context 'when start_in is specified' do + let(:config) { { script: 'echo', when: 'delayed', start_in: '1 day' } } + + it 'returns error about invalid type' do + expect(entry).to be_valid + end + end + + context 'when start_in is empty' do + let(:config) { { when: 'delayed', start_in: nil } } + + it 'returns error about invalid type' do + expect(entry).not_to be_valid + expect(entry.errors).to include 'job start in should be a duration' + end + end + + context 'when start_in is not formateed ad a duration' do + let(:config) { { when: 'delayed', start_in: 'test' } } + + it 'returns error about invalid type' do + expect(entry).not_to be_valid + expect(entry.errors).to include 'job start in should be a duration' + end + end + end + + context 'when start_in specified without delayed specification' do + let(:config) { { start_in: '1 day' } } + + it 'returns error about invalid type' do + expect(entry).not_to be_valid + expect(entry.errors).to include 'job start in must be blank' + end + end end end @@ -238,6 +285,24 @@ describe Gitlab::Ci::Config::Entry::Job do end end + describe '#delayed?' do + context 'when job is a delayed' do + let(:config) { { script: 'deploy', when: 'delayed' } } + + it 'is a delayed' do + expect(entry).to be_delayed + end + end + + context 'when job is not a delayed' do + let(:config) { { script: 'deploy' } } + + it 'is not a delayed' do + expect(entry).not_to be_delayed + end + end + end + describe '#ignored?' do context 'when job is a manual action' do context 'when it is not specified if job is allowed to fail' do -- cgit v1.2.1 From fcb77970b6ca26f031d5bcf935855a91bbb35158 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 19:32:26 +0900 Subject: Fix Status::Build::Scheduled. Add spec for the class. --- lib/gitlab/ci/status/build/scheduled.rb | 5 +- spec/lib/gitlab/ci/status/build/scheduled_spec.rb | 58 +++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 spec/lib/gitlab/ci/status/build/scheduled_spec.rb diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index 7b46c81fb5d..d7d762cdf7a 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -8,7 +8,10 @@ module Gitlab image: 'illustrations/scheduled-job_countdown.svg', size: 'svg-394', title: _("This is a scheduled to run in ") + " #{execute_in}", - content: _("This job will automatically run after it's timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action.") + content: _("This job will automatically run after it's timer finishes. " \ + "Often they are used for incremental roll-out deploys " \ + "to production environments. When unscheduled it converts " \ + "into a manual action.") } end diff --git a/spec/lib/gitlab/ci/status/build/scheduled_spec.rb b/spec/lib/gitlab/ci/status/build/scheduled_spec.rb new file mode 100644 index 00000000000..3098a17c50d --- /dev/null +++ b/spec/lib/gitlab/ci/status/build/scheduled_spec.rb @@ -0,0 +1,58 @@ +require 'spec_helper' + +describe Gitlab::Ci::Status::Build::Scheduled do + let(:user) { create(:user) } + let(:project) { create(:project, :stubbed_repository) } + let(:build) { create(:ci_build, :scheduled, project: project) } + let(:status) { Gitlab::Ci::Status::Core.new(build, user) } + + subject { described_class.new(status) } + + describe '#illustration' do + it { expect(subject.illustration).to include(:image, :size, :title) } + end + + describe '#status_tooltip' do + context 'when scheduled_at is not expired' do + let(:build) { create(:ci_build, scheduled_at: 1.minute.since, project: project) } + + it 'shows execute_in of the scheduled job' do + Timecop.freeze do + expect(subject.status_tooltip).to include('00:01:00') + end + end + end + + context 'when scheduled_at is expired' do + let(:build) { create(:ci_build, :expired_scheduled, project: project) } + + it 'shows 00:00:00' do + Timecop.freeze do + expect(subject.status_tooltip).to include('00:00:00') + end + end + end + end + + describe '.matches?' do + subject { described_class.matches?(build, user) } + + context 'when build is scheduled and scheduled_at is present' do + let(:build) { create(:ci_build, :expired_scheduled, project: project) } + + it { is_expected.to be_truthy } + end + + context 'when build is scheduled' do + let(:build) { create(:ci_build, status: :scheduled, project: project) } + + it { is_expected.to be_falsy } + end + + context 'when scheduled_at is present' do + let(:build) { create(:ci_build, scheduled_at: 1.minute.since, project: project) } + + it { is_expected.to be_falsy } + end + end +end -- cgit v1.2.1 From 5e4824d9ed8d164ff5a8ed5bfbf1e5a0f1bf1cff Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 19:33:41 +0900 Subject: Fix Status::Pipeline::Blocked spec --- spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb b/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb index 1a2b952d374..49a25b4a389 100644 --- a/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb +++ b/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb @@ -15,7 +15,7 @@ describe Gitlab::Ci::Status::Pipeline::Blocked do describe '#label' do it 'overrides status label' do - expect(subject.label).to eq 'waiting for manual action' + expect(subject.label).to eq 'waiting for manual action or delayed job' end end -- cgit v1.2.1 From 5e35e85acb5403ae1a992e2cd1c9618f6fc9273e Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 19:36:09 +0900 Subject: Add spec for scheduled status --- spec/lib/gitlab/ci/status/scheduled_spec.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 spec/lib/gitlab/ci/status/scheduled_spec.rb diff --git a/spec/lib/gitlab/ci/status/scheduled_spec.rb b/spec/lib/gitlab/ci/status/scheduled_spec.rb new file mode 100644 index 00000000000..c35a6f43d5d --- /dev/null +++ b/spec/lib/gitlab/ci/status/scheduled_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe Gitlab::Ci::Status::Scheduled do + subject do + described_class.new(double('subject'), double('user')) + end + + describe '#text' do + it { expect(subject.text).to eq 'scheduled' } + end + + describe '#label' do + it { expect(subject.label).to eq 'scheduled' } + end + + describe '#icon' do + it { expect(subject.icon).to eq 'status_scheduled' } + end + + describe '#favicon' do + it { expect(subject.favicon).to eq 'favicon_status_scheduled' } + end + + describe '#group' do + it { expect(subject.group).to eq 'scheduled' } + end +end -- cgit v1.2.1 From 9ceb61634e2cf6176bd733e1684b80f97e0bb086 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 27 Sep 2018 19:43:10 +0900 Subject: Add spec for YamlProcessor --- spec/lib/gitlab/ci/yaml_processor_spec.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index a2d429fa859..d75c473eb66 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -121,6 +121,21 @@ module Gitlab end end end + + describe 'delayed job entry' do + context 'when delayed is defined' do + let(:config) do + YAML.dump(rspec: { script: 'rollout 10%', + when: 'delayed', + start_in: '1 day' }) + end + + it 'has the attributes' do + expect(subject[:when]).to eq 'delayed' + expect(subject[:options][:start_in]).to eq '1 day' + end + end + end end describe '#stages_attributes' do @@ -1260,7 +1275,7 @@ module Gitlab config = YAML.dump({ rspec: { script: "test", when: 1 } }) expect do Gitlab::Ci::YamlProcessor.new(config) - end.to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, "jobs:rspec when should be on_success, on_failure, always or manual") + end.to raise_error(Gitlab::Ci::YamlProcessor::ValidationError, "jobs:rspec when should be on_success, on_failure, always, manual or delayed") end it "returns errors if job artifacts:name is not an a string" do -- cgit v1.2.1 From 52c769526cbe749b4e884238a6530df268345e26 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 27 Sep 2018 13:08:13 +0200 Subject: Upgrade gitlab-svgs to include scheduled job assets --- yarn.lock | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 20b587d1fc5..56fc008a0ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -180,11 +180,15 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@gitlab-org/gitlab-svgs@^1.23.0", "@gitlab-org/gitlab-svgs@^1.29.0": +"@gitlab-org/gitlab-svgs@^1.23.0": version "1.29.0" resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.29.0.tgz#03b65b513f9099bbda6ecf94d673a2952f8c6c70" integrity sha512-sCl6nP3ph36+8P3nrw9VanAR648rgOUEBlEoLPHkhKm79xB1dUkXGBtI0uaSJVgbJx40M1/Ts8HSdMv+PF3EIg== +"@gitlab-org/gitlab-svgs@^1.29.0": + version "1.30.0" + resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.30.0.tgz#72dca2fb67bafb3c975a322dc6406aaa29aed86c" + "@gitlab-org/gitlab-ui@^1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-ui/-/gitlab-ui-1.7.1.tgz#e9cce86cb7e34311405e705c1de674276b453f17" -- cgit v1.2.1 From f976418d128e9f00d6bc6e7eb2862e553e82934c Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 27 Sep 2018 13:11:24 +0200 Subject: Fix URL to empty state graphic of scheduled jobs --- lib/gitlab/ci/status/build/scheduled.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index d7d762cdf7a..493c71718a2 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -5,7 +5,7 @@ module Gitlab class Scheduled < Status::Extended def illustration { - image: 'illustrations/scheduled-job_countdown.svg', + image: 'illustrations/illustrations_scheduled-job_countdown.svg', size: 'svg-394', title: _("This is a scheduled to run in ") + " #{execute_in}", content: _("This job will automatically run after it's timer finishes. " \ -- cgit v1.2.1 From ea38e832f0f197c5121504d7e193227d3d9c7867 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 27 Sep 2018 13:44:03 +0200 Subject: Allow remaining time of scheduled jobs to overflow one day --- app/helpers/time_helper.rb | 18 ++++++++++--- app/views/projects/ci/builds/_build.html.haml | 2 +- lib/gitlab/ci/status/build/scheduled.rb | 6 +++-- spec/helpers/time_helper_spec.rb | 38 ++++++++++++++++++++------- 4 files changed, 48 insertions(+), 16 deletions(-) diff --git a/app/helpers/time_helper.rb b/app/helpers/time_helper.rb index 94044d7b85e..737ec33b2dd 100644 --- a/app/helpers/time_helper.rb +++ b/app/helpers/time_helper.rb @@ -21,9 +21,21 @@ module TimeHelper "#{from.to_s(:short)} - #{to.to_s(:short)}" end - def duration_in_numbers(duration) - time_format = duration < 1.hour ? "%M:%S" : "%H:%M:%S" + def duration_in_numbers(duration_in_seconds, allow_overflow = false) + if allow_overflow + seconds = duration_in_seconds % 1.minute + minutes = (duration_in_seconds / 1.minute) % (1.hour / 1.minute) + hours = duration_in_seconds / 1.hour - Time.at(duration).utc.strftime(time_format) + if hours == 0 + "%02d:%02d" % [minutes, seconds] + else + "%02d:%02d:%02d" % [hours, minutes, seconds] + end + else + time_format = duration_in_seconds < 1.hour ? "%M:%S" : "%H:%M:%S" + + Time.at(duration_in_seconds).utc.strftime(time_format) + end end end diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index c706703ae6f..0a9a36e089a 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -106,7 +106,7 @@ .btn.btn-default.has-tooltip{ disabled: true, title: job.scheduled_at } = sprite_icon('planning') - = duration_in_numbers(job.execute_in) + = duration_in_numbers(job.execute_in, true) .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Start now') } = sprite_icon('play') .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Unschedule') } diff --git a/lib/gitlab/ci/status/build/scheduled.rb b/lib/gitlab/ci/status/build/scheduled.rb index 493c71718a2..eebb3f761c5 100644 --- a/lib/gitlab/ci/status/build/scheduled.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -25,9 +25,11 @@ module Gitlab private + include TimeHelper + def execute_in - diff = [0, subject.scheduled_at - Time.now].max - Time.at(diff).utc.strftime("%H:%M:%S") + remaining_seconds = [0, subject.scheduled_at - Time.now].max + duration_in_numbers(remaining_seconds, true) end end end diff --git a/spec/helpers/time_helper_spec.rb b/spec/helpers/time_helper_spec.rb index 0b371d69ecf..37455c3e491 100644 --- a/spec/helpers/time_helper_spec.rb +++ b/spec/helpers/time_helper_spec.rb @@ -20,17 +20,35 @@ describe TimeHelper do end describe "#duration_in_numbers" do - it "returns minutes and seconds" do - durations_and_expectations = { - 100 => "01:40", - 121 => "02:01", - 3721 => "01:02:01", - 0 => "00:00", - 42 => "00:42" - } + using RSpec::Parameterized::TableSyntax + + context "without passing allow_overflow" do + where(:duration, :formatted_string) do + 0 | "00:00" + 1.second | "00:01" + 42.seconds | "00:42" + 2.minutes + 1.second | "02:01" + 3.hours + 2.minutes + 1.second | "03:02:01" + 30.hours | "06:00:00" + end + + with_them do + it { expect(duration_in_numbers(duration)).to eq formatted_string } + end + end + + context "with allow_overflow = true" do + where(:duration, :formatted_string) do + 0 | "00:00" + 1.second | "00:01" + 42.seconds | "00:42" + 2.minutes + 1.second | "02:01" + 3.hours + 2.minutes + 1.second | "03:02:01" + 30.hours | "30:00:00" + end - durations_and_expectations.each do |duration, expectation| - expect(duration_in_numbers(duration)).to eq(expectation) + with_them do + it { expect(duration_in_numbers(duration, true)).to eq formatted_string } end end end -- cgit v1.2.1 From 308d11f4bbf48ae2ff539772c3b565a8db0bc276 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 27 Sep 2018 14:19:44 +0200 Subject: Use correct icon for scheduled jobs in pipeline graph --- lib/gitlab/ci/status/scheduled.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/ci/status/scheduled.rb b/lib/gitlab/ci/status/scheduled.rb index f4464d69eb2..542100e41da 100644 --- a/lib/gitlab/ci/status/scheduled.rb +++ b/lib/gitlab/ci/status/scheduled.rb @@ -11,7 +11,7 @@ module Gitlab end def icon - 'timer' # TODO: 'status_scheduled' + 'status_scheduled' end def favicon -- cgit v1.2.1 From b5a591d8c2c8fff0136037f6c2a8b635f101e07e Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 28 Sep 2018 14:30:43 +0900 Subject: Include delayed jobs action into manual actions --- app/models/ci/build.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index f83dfa5d1c4..b3916b67bd6 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -92,7 +92,7 @@ module Ci scope :with_artifacts_not_expired, ->() { with_artifacts_archive.where('artifacts_expire_at IS NULL OR artifacts_expire_at > ?', Time.now) } scope :with_expired_artifacts, ->() { with_artifacts_archive.where('artifacts_expire_at < ?', Time.now) } scope :last_month, ->() { where('created_at > ?', Date.today - 1.month) } - scope :manual_actions, ->() { where(when: :manual, status: COMPLETED_STATUSES + [:manual]) } + scope :manual_actions, ->() { where(when: %i[manual delayed], status: COMPLETED_STATUSES + %i[manual scheduled]) } scope :ref_protected, -> { where(protected: true) } scope :with_live_trace, -> { where('EXISTS (?)', Ci::BuildTraceChunk.where('ci_builds.id = ci_build_trace_chunks.build_id').select(1)) } -- cgit v1.2.1 From 54263dc1d9719f871fb2f23ecac4e0cfcabebe77 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 28 Sep 2018 14:41:39 +0900 Subject: Fix coding style offence --- app/services/ci/process_build_service.rb | 1 + lib/gitlab/ci/status/build/failed.rb | 2 +- spec/services/ci/process_pipeline_service_spec.rb | 21 ++++++++++++--------- spec/workers/ci/build_schedule_worker_spec.rb | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/services/ci/process_build_service.rb b/app/services/ci/process_build_service.rb index 41ea62b4e4a..8a1a524429e 100644 --- a/app/services/ci/process_build_service.rb +++ b/app/services/ci/process_build_service.rb @@ -11,6 +11,7 @@ module Ci else build.enqueue end + true else build.skip diff --git a/lib/gitlab/ci/status/build/failed.rb b/lib/gitlab/ci/status/build/failed.rb index cdbcb7a47cd..014eb66a26b 100644 --- a/lib/gitlab/ci/status/build/failed.rb +++ b/lib/gitlab/ci/status/build/failed.rb @@ -11,7 +11,7 @@ module Gitlab runner_system_failure: 'runner system failure', missing_dependency_failure: 'missing dependency failure', runner_unsupported: 'unsupported runner', - schedule_expired: 'schedule expired', + schedule_expired: 'schedule expired' }.freeze private_constant :REASONS diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb index d314d774be4..3ce3785b162 100644 --- a/spec/services/ci/process_pipeline_service_spec.rb +++ b/spec/services/ci/process_pipeline_service_spec.rb @@ -257,7 +257,7 @@ describe Ci::ProcessPipelineService, '#execute' do it 'properly processes the pipeline' do expect(process_pipeline).to be_truthy expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) - + succeed_pending expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) @@ -283,7 +283,7 @@ describe Ci::ProcessPipelineService, '#execute' do it 'properly processes the pipeline' do expect(process_pipeline).to be_truthy expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) - + fail_running_or_pending expect(builds_names_and_statuses).to eq({ 'build': 'failed' }) @@ -295,11 +295,11 @@ describe Ci::ProcessPipelineService, '#execute' do it 'properly processes the pipeline' do expect(process_pipeline).to be_truthy expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) - + succeed_pending expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) - + unschedule expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'manual' }) @@ -324,11 +324,11 @@ describe Ci::ProcessPipelineService, '#execute' do it 'properly processes the pipeline' do expect(process_pipeline).to be_truthy expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) - + succeed_pending expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) - + enqueue_scheduled('rollout10%') fail_running_or_pending @@ -354,11 +354,11 @@ describe Ci::ProcessPipelineService, '#execute' do it 'properly processes the pipeline' do expect(process_pipeline).to be_truthy expect(builds_names_and_statuses).to eq({ 'build': 'pending' }) - + succeed_pending expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'scheduled' }) - + play_manual_action('rollout10%') expect(builds_names_and_statuses).to eq({ 'build': 'success', 'rollout10%': 'pending' }) @@ -718,7 +718,10 @@ describe Ci::ProcessPipelineService, '#execute' do end def builds_names_and_statuses - builds.inject({}) { |h, b| h[b.name.to_sym] = b.status; h } + builds.each_with_object({}) do |h, b| + h[b.name.to_sym] = b.status + h + end end def all_builds_names diff --git a/spec/workers/ci/build_schedule_worker_spec.rb b/spec/workers/ci/build_schedule_worker_spec.rb index c76537b9233..4a3fe84d7f7 100644 --- a/spec/workers/ci/build_schedule_worker_spec.rb +++ b/spec/workers/ci/build_schedule_worker_spec.rb @@ -10,7 +10,7 @@ describe Ci::BuildScheduleWorker do it 'executes RunScheduledBuildService' do expect_any_instance_of(Ci::RunScheduledBuildService) .to receive(:execute).once - + subject end end -- cgit v1.2.1 From 97c556bf1d49d9b5362fdd18255244d2da349a17 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 28 Sep 2018 15:55:13 +0900 Subject: Fix spec failure --- app/services/ci/process_build_service.rb | 2 +- spec/services/ci/process_pipeline_service_spec.rb | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/services/ci/process_build_service.rb b/app/services/ci/process_build_service.rb index 8a1a524429e..0fbe93130d0 100644 --- a/app/services/ci/process_build_service.rb +++ b/app/services/ci/process_build_service.rb @@ -5,7 +5,7 @@ module Ci def execute(build, current_status) if valid_statuses_for_when(build.when).include?(current_status) if build.schedulable? - build.schedule! + build.schedule elsif build.action? build.actionize else diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb index 3ce3785b162..4f1e487197e 100644 --- a/spec/services/ci/process_pipeline_service_spec.rb +++ b/spec/services/ci/process_pipeline_service_spec.rb @@ -31,17 +31,14 @@ describe Ci::ProcessPipelineService, '#execute' do succeed_pending expect(builds.success.count).to eq(2) - expect(process_pipeline).to be_truthy succeed_pending expect(builds.success.count).to eq(4) - expect(process_pipeline).to be_truthy succeed_pending expect(builds.success.count).to eq(5) - expect(process_pipeline).to be_falsey end it 'does not process pipeline if existing stage is running' do @@ -718,7 +715,7 @@ describe Ci::ProcessPipelineService, '#execute' do end def builds_names_and_statuses - builds.each_with_object({}) do |h, b| + builds.each_with_object({}) do |b, h| h[b.name.to_sym] = b.status h end -- cgit v1.2.1 From 6d4511135d08aa2dc2ffa8aec236cea3ff77e1e8 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 28 Sep 2018 16:17:01 +0900 Subject: Add spec for ProcessBuildService --- spec/services/ci/process_build_service_spec.rb | 199 +++++++++++++++++++++---- 1 file changed, 171 insertions(+), 28 deletions(-) diff --git a/spec/services/ci/process_build_service_spec.rb b/spec/services/ci/process_build_service_spec.rb index 962d07e185b..692f28c80cb 100644 --- a/spec/services/ci/process_build_service_spec.rb +++ b/spec/services/ci/process_build_service_spec.rb @@ -5,62 +5,205 @@ describe Ci::ProcessBuildService, '#execute' do let(:user) { create(:user) } let(:project) { create(:project) } - subject { described_class.new(project, user).execute(build) } + subject { described_class.new(project, user).execute(build, current_status) } before do project.add_maintainer(user) end - context 'when build is schedulable' do - let(:build) { create(:ci_build, :created, :schedulable, user: user, project: project) } + shared_examples_for 'Enqueuing properly' do |valid_statuses_for_when| + valid_statuses_for_when.each do |status_for_prior_stages| + context "when status for prior stages is #{status_for_prior_stages}" do + let(:current_status) { status_for_prior_stages } - context 'when ci_enable_scheduled_build feature flag is enabled' do - before do - stub_feature_flags(ci_enable_scheduled_build: true) + %w[created skipped manual scheduled].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, when: when_option, user: user, project: project) } + + it 'enqueues the build' do + expect { subject }.to change { build.status }.to('pending') + end + end + end + + %w[pending running success failed canceled].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, when: when_option, user: user, project: project) } + + it 'does not change the build status' do + expect { subject }.not_to change { build.status } + end + end + end end + end - it 'schedules the build' do - Timecop.freeze do - expect(Ci::BuildScheduleWorker) - .to receive(:perform_at).with(1.minute.since, build.id) + (HasStatus::AVAILABLE_STATUSES - valid_statuses_for_when).each do |status_for_prior_stages| + let(:current_status) { status_for_prior_stages } - subject + context "when status for prior stages is #{status_for_prior_stages}" do + %w[created pending].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, when: when_option, user: user, project: project) } - expect(build).to be_scheduled + it 'skips the build' do + expect { subject }.to change { build.status }.to('skipped') + end + end + end + + (HasStatus::AVAILABLE_STATUSES - %w[created pending]).each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, when: when_option, user: user, project: project) } + + it 'does not change build status' do + expect { subject }.not_to change { build.status } + end + end end end end + end + + shared_examples_for 'Actionizing properly' do |valid_statuses_for_when| + valid_statuses_for_when.each do |status_for_prior_stages| + context "when status for prior stages is #{status_for_prior_stages}" do + let(:current_status) { status_for_prior_stages } + + %w[created].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :actionable, user: user, project: project) } - context 'when ci_enable_scheduled_build feature flag is disabled' do - before do - stub_feature_flags(ci_enable_scheduled_build: false) + it 'enqueues the build' do + expect { subject }.to change { build.status }.to('manual') + end + end + end + + %w[manual skipped pending running success failed canceled scheduled].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :actionable, user: user, project: project) } + + it 'does not change the build status' do + expect { subject }.not_to change { build.status } + end + end + end end + end + + (HasStatus::AVAILABLE_STATUSES - valid_statuses_for_when).each do |status_for_prior_stages| + let(:current_status) { status_for_prior_stages } - it 'enqueues the build' do - subject + context "when status for prior stages is #{status_for_prior_stages}" do + %w[created pending].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :actionable, user: user, project: project) } - expect(build).to be_manual + it 'skips the build' do + expect { subject }.to change { build.status }.to('skipped') + end + end + end + + (HasStatus::AVAILABLE_STATUSES - %w[created pending]).each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :actionable, user: user, project: project) } + + it 'does not change build status' do + expect { subject }.not_to change { build.status } + end + end + end end end end - context 'when build is actionable' do - let(:build) { create(:ci_build, :created, :actionable, user: user, project: project) } + shared_examples_for 'Scheduling properly' do |valid_statuses_for_when| + valid_statuses_for_when.each do |status_for_prior_stages| + context "when status for prior stages is #{status_for_prior_stages}" do + let(:current_status) { status_for_prior_stages } + + %w[created].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :schedulable, user: user, project: project) } + + it 'enqueues the build' do + expect { subject }.to change { build.status }.to('scheduled') + end + end + end + + %w[manual skipped pending running success failed canceled scheduled].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :schedulable, user: user, project: project) } + + it 'does not change the build status' do + expect { subject }.not_to change { build.status } + end + end + end + end + end - it 'actionizes the build' do - subject + (HasStatus::AVAILABLE_STATUSES - valid_statuses_for_when).each do |status_for_prior_stages| + let(:current_status) { status_for_prior_stages } - expect(build).to be_manual + context "when status for prior stages is #{status_for_prior_stages}" do + %w[created pending].each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :schedulable, user: user, project: project) } + + it 'skips the build' do + expect { subject }.to change { build.status }.to('skipped') + end + end + end + + (HasStatus::AVAILABLE_STATUSES - %w[created pending]).each do |status| + context "when build status is #{status}" do + let(:build) { create(:ci_build, status.to_sym, :schedulable, user: user, project: project) } + + it 'does not change build status' do + expect { subject }.not_to change { build.status } + end + end + end + end end end - context 'when build does not have any actions' do - let(:build) { create(:ci_build, :created, user: user, project: project) } + context 'when build has on_success option' do + let(:when_option) { :on_success } - it 'enqueues the build' do - subject + it_behaves_like 'Enqueuing properly', %w[success skipped] + end + + context 'when build has on_failure option' do + let(:when_option) { :on_failure } + + it_behaves_like 'Enqueuing properly', %w[failed] + end + + context 'when build has always option' do + let(:when_option) { :always } + + it_behaves_like 'Enqueuing properly', %w[success failed skipped] + end + + context 'when build has manual option' do + let(:when_option) { :manual } + + it_behaves_like 'Actionizing properly', %w[success skipped] + end + + context 'when build has delayed option' do + let(:when_option) { :delayed } - expect(build).to be_pending + before do + allow(Ci::BuildScheduleWorker).to receive(:perform_at) { } end + + it_behaves_like 'Scheduling properly', %w[success skipped] end end -- cgit v1.2.1 From 19fb42b5ca917d94b44544e596b9e474e50e0907 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 28 Sep 2018 17:26:45 +0900 Subject: Add spec for Build::Factory --- spec/lib/gitlab/ci/status/build/factory_spec.rb | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/spec/lib/gitlab/ci/status/build/factory_spec.rb b/spec/lib/gitlab/ci/status/build/factory_spec.rb index 8b92088902b..1073c4b7ccd 100644 --- a/spec/lib/gitlab/ci/status/build/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/build/factory_spec.rb @@ -319,4 +319,53 @@ describe Gitlab::Ci::Status::Build::Factory do end end end + + context 'when build is a delayed action' do + let(:build) { create(:ci_build, :scheduled) } + + it 'matches correct core status' do + expect(factory.core_status).to be_a Gitlab::Ci::Status::Scheduled + end + + it 'matches correct extended statuses' do + expect(factory.extended_statuses) + .to eq [Gitlab::Ci::Status::Build::Scheduled, + Gitlab::Ci::Status::Build::Play, + Gitlab::Ci::Status::Build::Action] + end + + it 'fabricates action detailed status' do + expect(status).to be_a Gitlab::Ci::Status::Build::Action + end + + it 'fabricates status with correct details' do + expect(status.text).to eq 'scheduled' + expect(status.group).to eq 'scheduled' + expect(status.icon).to eq 'status_scheduled' + expect(status.favicon).to eq 'favicon_status_scheduled' + expect(status.illustration).to include(:image, :size, :title, :content) + expect(status.label).to include 'manual play action' + expect(status).to have_details + expect(status.action_path).to include 'play' + end + + context 'when user has ability to play action' do + it 'fabricates status that has action' do + expect(status).to have_action + end + end + + context 'when user does not have ability to play action' do + before do + allow(build.project).to receive(:empty_repo?).and_return(false) + + create(:protected_branch, :no_one_can_push, + name: build.ref, project: build.project) + end + + it 'fabricates status that has no action' do + expect(status).not_to have_action + end + end + end end -- cgit v1.2.1 From ef9c8520dc8d572928a2a382ab3c92214356efc3 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Fri, 28 Sep 2018 11:28:43 +0200 Subject: Upgrade gitlab-svgs to include new scheduled job assets --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 56fc008a0ea..f2e948b0dc2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -186,8 +186,8 @@ integrity sha512-sCl6nP3ph36+8P3nrw9VanAR648rgOUEBlEoLPHkhKm79xB1dUkXGBtI0uaSJVgbJx40M1/Ts8HSdMv+PF3EIg== "@gitlab-org/gitlab-svgs@^1.29.0": - version "1.30.0" - resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.30.0.tgz#72dca2fb67bafb3c975a322dc6406aaa29aed86c" + version "1.31.0" + resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.31.0.tgz#495b074669f93af40e34f9978ce887773dea470a" "@gitlab-org/gitlab-ui@^1.7.1": version "1.7.1" -- cgit v1.2.1 From 93cd5edbc1fe0023d82227ab135314d068263441 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Fri, 28 Sep 2018 11:47:55 +0200 Subject: Add black border to scheduled icon in pipeline graphs --- app/assets/stylesheets/pages/pipelines.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/pages/pipelines.scss b/app/assets/stylesheets/pages/pipelines.scss index 8bb8b83dc5e..14395cc59b0 100644 --- a/app/assets/stylesheets/pages/pipelines.scss +++ b/app/assets/stylesheets/pages/pipelines.scss @@ -760,6 +760,7 @@ } &.ci-status-icon-canceled, + &.ci-status-icon-scheduled, &.ci-status-icon-disabled, &.ci-status-icon-not-found, &.ci-status-icon-manual { -- cgit v1.2.1 From fb4d06d1df731c5e13e0f464f451d66cbe389571 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Fri, 28 Sep 2018 11:50:00 +0200 Subject: Use time-out icon for unschedule job action --- app/views/projects/ci/builds/_build.html.haml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index 0a9a36e089a..4bef4ba2d7e 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -110,8 +110,7 @@ .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Start now') } = sprite_icon('play') .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Unschedule') } - = sprite_icon('cancel') - -# sprite_icon('status_scheduled_borderless') + = sprite_icon('time-out') - elsif allow_retry - if job.playable? && !admin && can?(current_user, :update_build, job) = link_to play_project_job_path(job.project, job, return_to: request.original_url), method: :post, title: 'Play', class: 'btn btn-build' do -- cgit v1.2.1 From a220e72c7027ecf48da73daf0d2de5315b4bc675 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Fri, 28 Sep 2018 11:52:30 +0200 Subject: Add black border to scheduled job badge --- app/assets/stylesheets/pages/status.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/pages/status.scss b/app/assets/stylesheets/pages/status.scss index 620297e589d..7d59dd3b5d1 100644 --- a/app/assets/stylesheets/pages/status.scss +++ b/app/assets/stylesheets/pages/status.scss @@ -27,6 +27,7 @@ &.ci-canceled, &.ci-disabled, + &.ci-scheduled, &.ci-manual { color: $gl-text-color; border-color: $gl-text-color; -- cgit v1.2.1 From 70d015d1ba5adde82c6f38567ad51cfb85dae5f6 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 13:10:30 +0900 Subject: Cleanup drop_stale_scheduled_builds code --- app/workers/stuck_ci_jobs_worker.rb | 9 +++++++-- scheduled_job_fixture.rb | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index 821ea75703f..5028965862f 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -10,6 +10,7 @@ class StuckCiJobsWorker BUILD_PENDING_OUTDATED_TIMEOUT = 1.day BUILD_SCHEDULED_OUTDATED_TIMEOUT = 1.hour BUILD_PENDING_STUCK_TIMEOUT = 1.hour + BUILD_SCHEDULED_OUTDATED_BATCH_SIZE = 100 def perform return unless try_obtain_lease @@ -68,8 +69,12 @@ class StuckCiJobsWorker # `ci_builds` table has a partial index on `id` with `scheduled_at <> NULL` condition. # Therefore this query's first step uses Index Search, and the following expensive # filter `scheduled_at < ?` will only perform on a small subset (max: 100 rows) - Ci::Build.include(EachBatch).where('scheduled_at IS NOT NULL').each_batch(of: 100) do |relation| - relation.where('scheduled_at < ?', BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago).find_each do |build| + Ci::Build.include(EachBatch) + .where('scheduled_at IS NOT NULL') + .each_batch(of: BUILD_SCHEDULED_OUTDATED_BATCH_SIZE) do |relation| + relation + .where('scheduled_at < ?', BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago) + .find_each(batch_size: BUILD_SCHEDULED_OUTDATED_BATCH_SIZE) do |build| drop_build(:outdated, build, :scheduled, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired) end end diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb index ae33c6be6ad..ed205bf656c 100644 --- a/scheduled_job_fixture.rb +++ b/scheduled_job_fixture.rb @@ -189,4 +189,26 @@ class ScheduledJobFixture def cancel_pipeline Ci::Pipeline.last.cancel_running end + + def create_stale_scheduled_builds + count = 100 + rows = [] + last_pipeline = Ci::Pipeline.last + last_stage = last_pipeline.stages.last + + count.times do |i| + rows << { + name: "delayed-job-bulk-#{i}", + project_id: project.id, + commit_id: last_pipeline.id, + status: 'scheduled', + scheduled_at: 1.day.ago, + user_id: user.id, + stage_id: last_stage.id, + type: 'Ci::Build' + } + end + + Gitlab::Database.bulk_insert('ci_builds', rows) + end end -- cgit v1.2.1 From efaa3669c182e68d43b68a1f4257b483aad55f01 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 13:38:37 +0900 Subject: Change the order of status_sql to avoid the query for scheduled status at the earlier step --- app/models/concerns/has_status.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/concerns/has_status.rb b/app/models/concerns/has_status.rb index 88a0c9919e7..b92643f87f8 100644 --- a/app/models/concerns/has_status.rb +++ b/app/models/concerns/has_status.rb @@ -33,7 +33,6 @@ module HasStatus warnings = scope_warnings.select('count(*) > 0').to_sql.presence || 'false' "(CASE - WHEN (#{scheduled})>0 THEN 'scheduled' WHEN (#{builds})=(#{skipped}) AND (#{warnings}) THEN 'success' WHEN (#{builds})=(#{skipped}) THEN 'skipped' WHEN (#{builds})=(#{success}) THEN 'success' @@ -43,6 +42,7 @@ module HasStatus WHEN (#{builds})=(#{created})+(#{skipped})+(#{pending}) THEN 'pending' WHEN (#{running})+(#{pending})>0 THEN 'running' WHEN (#{manual})>0 THEN 'manual' + WHEN (#{scheduled})>0 THEN 'scheduled' WHEN (#{created})>0 THEN 'running' ELSE 'failed' END)" -- cgit v1.2.1 From 384da9279eefd7ebcdfd684ff234540d935ededd Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 13:57:11 +0900 Subject: Fix spec --- spec/lib/gitlab/ci/status/pipeline/factory_spec.rb | 6 +++--- spec/services/ci/run_scheduled_build_service_spec.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb b/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb index 8e3d4464898..d83f260927f 100644 --- a/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb @@ -32,10 +32,10 @@ describe Gitlab::Ci::Status::Pipeline::Factory do it 'does not match extended statuses' do expect(factory.extended_statuses).to be_empty end - end - it "fabricates a core status #{simple_status}" do - expect(status).to be_a expected_status + it "fabricates a core status #{simple_status}" do + expect(status).to be_a expected_status + end end it 'extends core status with common pipeline methods' do diff --git a/spec/services/ci/run_scheduled_build_service_spec.rb b/spec/services/ci/run_scheduled_build_service_spec.rb index 145905db0cf..be2aad33ef4 100644 --- a/spec/services/ci/run_scheduled_build_service_spec.rb +++ b/spec/services/ci/run_scheduled_build_service_spec.rb @@ -29,7 +29,7 @@ describe Ci::RunScheduledBuildService do context 'when scheduled_at is not expired' do let(:build) { create(:ci_build, :scheduled, user: user, project: project, pipeline: pipeline) } - it 'can run the build' do + it 'can not run the build' do expect { subject }.to raise_error(StateMachines::InvalidTransition) expect(build).to be_scheduled -- cgit v1.2.1 From 7fc74818a32a713d971582f8730b163dade8df3d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 15:27:34 +0900 Subject: Add scheduled_actions as an explicit group of actions --- app/models/ci/build.rb | 3 ++- app/models/ci/pipeline.rb | 1 + app/serializers/build_action_entity.rb | 1 + app/serializers/job_entity.rb | 1 + app/serializers/pipeline_details_entity.rb | 1 + app/serializers/pipeline_serializer.rb | 1 + 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index b3916b67bd6..4f1f5d047a3 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -92,7 +92,8 @@ module Ci scope :with_artifacts_not_expired, ->() { with_artifacts_archive.where('artifacts_expire_at IS NULL OR artifacts_expire_at > ?', Time.now) } scope :with_expired_artifacts, ->() { with_artifacts_archive.where('artifacts_expire_at < ?', Time.now) } scope :last_month, ->() { where('created_at > ?', Date.today - 1.month) } - scope :manual_actions, ->() { where(when: %i[manual delayed], status: COMPLETED_STATUSES + %i[manual scheduled]) } + scope :manual_actions, ->() { where(when: :manual, status: COMPLETED_STATUSES + %i[manual]) } + scope :scheduled_actions, ->() { where(when: :delayed, status: COMPLETED_STATUSES + %i[scheduled]) } scope :ref_protected, -> { where(protected: true) } scope :with_live_trace, -> { where('EXISTS (?)', Ci::BuildTraceChunk.where('ci_builds.id = ci_build_trace_chunks.build_id').select(1)) } diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index f936115014d..b74c65c2627 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -35,6 +35,7 @@ module Ci has_many :retryable_builds, -> { latest.failed_or_canceled.includes(:project) }, foreign_key: :commit_id, class_name: 'Ci::Build' has_many :cancelable_statuses, -> { cancelable }, foreign_key: :commit_id, class_name: 'CommitStatus' has_many :manual_actions, -> { latest.manual_actions.includes(:project) }, foreign_key: :commit_id, class_name: 'Ci::Build' + has_many :scheduled_actions, -> { latest.scheduled_actions.includes(:project) }, foreign_key: :commit_id, class_name: 'Ci::Build' has_many :artifacts, -> { latest.with_artifacts_not_expired.includes(:project) }, foreign_key: :commit_id, class_name: 'Ci::Build' has_many :auto_canceled_pipelines, class_name: 'Ci::Pipeline', foreign_key: 'auto_canceled_by_id' diff --git a/app/serializers/build_action_entity.rb b/app/serializers/build_action_entity.rb index f9da3f63911..3e81f8f0218 100644 --- a/app/serializers/build_action_entity.rb +++ b/app/serializers/build_action_entity.rb @@ -12,6 +12,7 @@ class BuildActionEntity < Grape::Entity end expose :playable?, as: :playable + expose :scheduled_at private diff --git a/app/serializers/job_entity.rb b/app/serializers/job_entity.rb index 26b29993fec..dd6c2fa1a6d 100644 --- a/app/serializers/job_entity.rb +++ b/app/serializers/job_entity.rb @@ -25,6 +25,7 @@ class JobEntity < Grape::Entity end expose :playable?, as: :playable + expose :scheduled_at expose :created_at expose :updated_at expose :detailed_status, as: :status, with: DetailedStatusEntity diff --git a/app/serializers/pipeline_details_entity.rb b/app/serializers/pipeline_details_entity.rb index 3b56767f774..d78ad4af4dc 100644 --- a/app/serializers/pipeline_details_entity.rb +++ b/app/serializers/pipeline_details_entity.rb @@ -5,5 +5,6 @@ class PipelineDetailsEntity < PipelineEntity expose :ordered_stages, as: :stages, using: StageEntity expose :artifacts, using: BuildArtifactEntity expose :manual_actions, using: BuildActionEntity + expose :scheduled_actions, using: BuildActionEntity end end diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb index 4f31af3c46d..7451433a841 100644 --- a/app/serializers/pipeline_serializer.rb +++ b/app/serializers/pipeline_serializer.rb @@ -13,6 +13,7 @@ class PipelineSerializer < BaseSerializer :cancelable_statuses, :trigger_requests, :manual_actions, + :scheduled_actions, :artifacts, { pending_builds: :project, -- cgit v1.2.1 From bc5d649a4c456aab4ec7eddc52d13d172a5adace Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 16:09:41 +0900 Subject: Add unschedule action to status build --- app/serializers/build_action_entity.rb | 6 ++++- lib/gitlab/ci/status/build/factory.rb | 1 + lib/gitlab/ci/status/build/unschedule.rb | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 lib/gitlab/ci/status/build/unschedule.rb diff --git a/app/serializers/build_action_entity.rb b/app/serializers/build_action_entity.rb index 3e81f8f0218..0db7875aa87 100644 --- a/app/serializers/build_action_entity.rb +++ b/app/serializers/build_action_entity.rb @@ -12,7 +12,11 @@ class BuildActionEntity < Grape::Entity end expose :playable?, as: :playable - expose :scheduled_at + expose :scheduled_at, if: -> (build) { build.scheduled? } + + expose :unschedule_path, if: -> (build) { build.scheduled? } do |build| + unschedule_project_job_path(build.project, build) + end private diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index 3f762c42747..4a74d6d6ed1 100644 --- a/lib/gitlab/ci/status/build/factory.rb +++ b/lib/gitlab/ci/status/build/factory.rb @@ -15,6 +15,7 @@ module Gitlab Status::Build::Retryable], [Status::Build::Failed], [Status::Build::FailedAllowed, + Status::Build::Unschedule, Status::Build::Play, Status::Build::Stop], [Status::Build::Action], diff --git a/lib/gitlab/ci/status/build/unschedule.rb b/lib/gitlab/ci/status/build/unschedule.rb new file mode 100644 index 00000000000..e1b7b83428c --- /dev/null +++ b/lib/gitlab/ci/status/build/unschedule.rb @@ -0,0 +1,41 @@ +module Gitlab + module Ci + module Status + module Build + class Unschedule < Status::Extended + def label + 'unschedule action' + end + + def has_action? + can?(user, :update_build, subject) + end + + def action_icon + 'time-out' + end + + def action_title + 'Unschedule' + end + + def action_button_title + _('Unschedule job') + end + + def action_path + unschedule_project_job_path(subject.project, subject) + end + + def action_method + :post + end + + def self.matches?(build, user) + build.scheduled? + end + end + end + end + end +end -- cgit v1.2.1 From 533f5ca4c9f899910f9cdc4f0e0b43d619a9c7df Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 17:09:07 +0900 Subject: Fix spec --- spec/services/ci/process_pipeline_service_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb index 4f1e487197e..8c7258c42ad 100644 --- a/spec/services/ci/process_pipeline_service_spec.rb +++ b/spec/services/ci/process_pipeline_service_spec.rb @@ -395,7 +395,7 @@ describe Ci::ProcessPipelineService, '#execute' do enqueue_scheduled('delayed1') expect(builds_names_and_statuses).to eq({ 'delayed1': 'pending', 'delayed2': 'scheduled' }) - expect(pipeline.reload.status).to eq 'scheduled' + expect(pipeline.reload.status).to eq 'running' end end -- cgit v1.2.1 From eb238ec16004d9d22c20193eb8a8ee6cf0df4c8b Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 1 Oct 2018 19:00:34 +0900 Subject: Fix scheduled icon for stages --- app/assets/stylesheets/framework/icons.scss | 1 + app/helpers/ci_status_helper.rb | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/framework/icons.scss b/app/assets/stylesheets/framework/icons.scss index f002edced8a..abd26e38d18 100644 --- a/app/assets/stylesheets/framework/icons.scss +++ b/app/assets/stylesheets/framework/icons.scss @@ -64,6 +64,7 @@ } } +.ci-status-icon-scheduled, .ci-status-icon-manual { svg { fill: $gl-text-color; diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb index f343607a343..6f9e2ef78cd 100644 --- a/app/helpers/ci_status_helper.rb +++ b/app/helpers/ci_status_helper.rb @@ -7,7 +7,6 @@ # # See 'detailed_status?` method and `Gitlab::Ci::Status` module. # -# TODO: DO I need to update this deprecated module? module CiStatusHelper def ci_label_for_status(status) if detailed_status?(status) @@ -21,6 +20,8 @@ module CiStatusHelper 'passed with warnings' when 'manual' 'waiting for manual action' + when 'scheduled' + 'waiting for delayed job' else status end @@ -40,6 +41,8 @@ module CiStatusHelper s_('CiStatusText|passed') when 'manual' s_('CiStatusText|blocked') + when 'scheduled' + s_('CiStatusText|scheduled') else # All states are already being translated inside the detailed statuses: # :running => Gitlab::Ci::Status::Running @@ -84,6 +87,8 @@ module CiStatusHelper 'status_skipped' when 'manual' 'status_manual' + when 'scheduled' + 'status_scheduled' else 'status_canceled' end -- cgit v1.2.1 From 6369ff1ce172cefc84574f2dde055399b64bf7b5 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Mon, 1 Oct 2018 12:47:07 +0200 Subject: Add actions to scheduled job buttons on job list page --- app/views/projects/ci/builds/_build.html.haml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index 4bef4ba2d7e..c09137ec085 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -107,9 +107,15 @@ title: job.scheduled_at } = sprite_icon('planning') = duration_in_numbers(job.execute_in, true) - .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Start now') } + = link_to play_project_job_path(job.project, job, return_to: request.original_url), + method: :post, + title: s_('DelayedJobs|Start now'), + class: 'btn btn-default btn-build has-tooltip' do = sprite_icon('play') - .btn.btn-default.btn-build.has-tooltip{ title: s_('DelayedJobs|Unschedule') } + = link_to unschedule_project_job_path(job.project, job, return_to: request.original_url), + method: :post, + title: s_('DelayedJobs|Unschedule'), + class: 'btn btn-default btn-build has-tooltip' do = sprite_icon('time-out') - elsif allow_retry - if job.playable? && !admin && can?(current_user, :update_build, job) -- cgit v1.2.1 From 786ae683679d90a0e55bfe844ac694aeb7d68ce6 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Mon, 1 Oct 2018 12:55:09 +0200 Subject: Do not omit leading zeros in duration_in_numbers helper --- app/helpers/time_helper.rb | 6 +----- spec/helpers/time_helper_spec.rb | 8 ++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/helpers/time_helper.rb b/app/helpers/time_helper.rb index 737ec33b2dd..3e6a301b77d 100644 --- a/app/helpers/time_helper.rb +++ b/app/helpers/time_helper.rb @@ -27,11 +27,7 @@ module TimeHelper minutes = (duration_in_seconds / 1.minute) % (1.hour / 1.minute) hours = duration_in_seconds / 1.hour - if hours == 0 - "%02d:%02d" % [minutes, seconds] - else - "%02d:%02d:%02d" % [hours, minutes, seconds] - end + "%02d:%02d:%02d" % [hours, minutes, seconds] else time_format = duration_in_seconds < 1.hour ? "%M:%S" : "%H:%M:%S" diff --git a/spec/helpers/time_helper_spec.rb b/spec/helpers/time_helper_spec.rb index 37455c3e491..cc310766433 100644 --- a/spec/helpers/time_helper_spec.rb +++ b/spec/helpers/time_helper_spec.rb @@ -39,10 +39,10 @@ describe TimeHelper do context "with allow_overflow = true" do where(:duration, :formatted_string) do - 0 | "00:00" - 1.second | "00:01" - 42.seconds | "00:42" - 2.minutes + 1.second | "02:01" + 0 | "00:00:00" + 1.second | "00:00:01" + 42.seconds | "00:00:42" + 2.minutes + 1.second | "00:02:01" 3.hours + 2.minutes + 1.second | "03:02:01" 30.hours | "30:00:00" end -- cgit v1.2.1 From fc8d4c7046807ac65e36ce65df982ff5c4ff4a9a Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Mon, 1 Oct 2018 15:21:33 +0200 Subject: Add scheduled job dropdown to pipelines list --- .../javascripts/lib/utils/datetime_utility.js | 20 +++++++++++++++++ .../pipelines/components/pipelines_actions.vue | 17 +++++++++++++-- .../pipelines/components/pipelines_table_row.vue | 7 ++++-- spec/javascripts/datetime_utility_spec.js | 25 ++++++++++++++++------ 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/lib/utils/datetime_utility.js b/app/assets/javascripts/lib/utils/datetime_utility.js index 1f66fa811ea..abfcf1eaf3f 100644 --- a/app/assets/javascripts/lib/utils/datetime_utility.js +++ b/app/assets/javascripts/lib/utils/datetime_utility.js @@ -370,3 +370,23 @@ window.gl.utils = { getTimeago, localTimeAgo, }; + +/** + * Formats milliseconds as timestamp (e.g. 01:02:03). + * + * @param milliseconds + * @returns {string} + */ +export const formatTime = milliseconds => { + const remainingSeconds = Math.floor(milliseconds / 1000) % 60; + const remainingMinutes = Math.floor(milliseconds / 1000 / 60) % 60; + const remainingHours = Math.floor(milliseconds / 1000 / 60 / 60); + let formattedTime = ''; + if (remainingHours < 10) formattedTime += '0'; + formattedTime += `${remainingHours}:`; + if (remainingMinutes < 10) formattedTime += '0'; + formattedTime += `${remainingMinutes}:`; + if (remainingSeconds < 10) formattedTime += '0'; + formattedTime += remainingSeconds; + return formattedTime; +}; diff --git a/app/assets/javascripts/pipelines/components/pipelines_actions.vue b/app/assets/javascripts/pipelines/components/pipelines_actions.vue index 017dd560621..fa5ad62f438 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_actions.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_actions.vue @@ -1,4 +1,5 @@ @@ -63,8 +69,8 @@ export default { diff --git a/app/assets/javascripts/pipelines/components/pipelines_table_row.vue b/app/assets/javascripts/pipelines/components/pipelines_table_row.vue index a39cc265601..bae6ff43ee4 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_table_row.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_table_row.vue @@ -59,6 +59,9 @@ export default { }; }, computed: { + actions() { + return [...this.pipeline.details.manual_actions, ...this.pipeline.details.scheduled_actions]; + }, /** * If provided, returns the commit tag. * Needed to render the commit component column. @@ -321,8 +324,8 @@ export default { >
{ const date = new Date(); date.setFullYear(date.getFullYear() - 1); - expect( - datetimeUtility.timeFor(date), - ).toBe('Past due'); + expect(datetimeUtility.timeFor(date)).toBe('Past due'); }); it('returns remaining time when in the future', () => { @@ -19,9 +17,7 @@ describe('Date time utils', () => { // short of a full year, timeFor will return '11 months remaining' date.setDate(date.getDate() + 1); - expect( - datetimeUtility.timeFor(date), - ).toBe('1 year remaining'); + expect(datetimeUtility.timeFor(date)).toBe('1 year remaining'); }); }); @@ -168,3 +164,20 @@ describe('getTimeframeWindowFrom', () => { }); }); }); + +describe('formatTime', () => { + const expectedTimestamps = [ + [0, '00:00:00'], + [1000, '00:00:01'], + [42000, '00:00:42'], + [121000, '00:02:01'], + [10921000, '03:02:01'], + [108000000, '30:00:00'], + ]; + + expectedTimestamps.forEach(([milliseconds, expectedTimestamp]) => { + it(`formats ${milliseconds}ms as ${expectedTimestamp}`, () => { + expect(datetimeUtility.formatTime(milliseconds)).toBe(expectedTimestamp); + }); + }); +}); -- cgit v1.2.1 From 51a8177658b2a90e78b762667b37807a72d7a982 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Mon, 1 Oct 2018 18:12:30 +0200 Subject: Add badge for scheduled jobs --- app/views/projects/ci/builds/_build.html.haml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index c09137ec085..be24e7dadaf 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -49,6 +49,8 @@ %span.badge.badge-danger allowed to fail - if job.action? %span.badge.badge-info manual + - if job.scheduled? + %span.badge.badge-info= s_('DelayedJobs|scheduled') - if pipeline_link %td -- cgit v1.2.1 From 336affe911885a84c2f14193e3fa43f0320c0cb2 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 09:44:22 +0900 Subject: Add scheduled status --- lib/gitlab/ci/status/pipeline/blocked.rb | 2 +- lib/gitlab/ci/status/pipeline/factory.rb | 1 + lib/gitlab/ci/status/pipeline/scheduled.rb | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 lib/gitlab/ci/status/pipeline/scheduled.rb diff --git a/lib/gitlab/ci/status/pipeline/blocked.rb b/lib/gitlab/ci/status/pipeline/blocked.rb index 59fcd8ad7ff..bf7e484ee9b 100644 --- a/lib/gitlab/ci/status/pipeline/blocked.rb +++ b/lib/gitlab/ci/status/pipeline/blocked.rb @@ -8,7 +8,7 @@ module Gitlab end def label - s_('CiStatusLabel|waiting for manual action or delayed job') + s_('CiStatusLabel|waiting for manual action') end def self.matches?(pipeline, user) diff --git a/lib/gitlab/ci/status/pipeline/factory.rb b/lib/gitlab/ci/status/pipeline/factory.rb index 17f9a75f436..00d8f01cbdc 100644 --- a/lib/gitlab/ci/status/pipeline/factory.rb +++ b/lib/gitlab/ci/status/pipeline/factory.rb @@ -5,6 +5,7 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::SuccessWarning, + Status::Pipeline::Scheduled, Status::Pipeline::Blocked]] end diff --git a/lib/gitlab/ci/status/pipeline/scheduled.rb b/lib/gitlab/ci/status/pipeline/scheduled.rb new file mode 100644 index 00000000000..9ec6994bd2f --- /dev/null +++ b/lib/gitlab/ci/status/pipeline/scheduled.rb @@ -0,0 +1,21 @@ +module Gitlab + module Ci + module Status + module Pipeline + class Scheduled < Status::Extended + def text + s_('CiStatusText|scheduled') + end + + def label + s_('CiStatusLabel|waiting for delayed job') + end + + def self.matches?(pipeline, user) + pipeline.scheduled? + end + end + end + end + end +end -- cgit v1.2.1 From 8bc065e02dcc4582aebbc7d28a30f7468a15ccc0 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 13:32:35 +0900 Subject: Rename failure reason to stale_schedule --- app/models/commit_status.rb | 2 +- app/presenters/commit_status_presenter.rb | 2 +- app/workers/stuck_ci_jobs_worker.rb | 2 +- lib/gitlab/ci/status/build/failed.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index 2020dd637a0..06507345fe8 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -50,7 +50,7 @@ class CommitStatus < ActiveRecord::Base runner_system_failure: 4, missing_dependency_failure: 5, runner_unsupported: 6, - schedule_expired: 7 + stale_schedule: 7 } ## diff --git a/app/presenters/commit_status_presenter.rb b/app/presenters/commit_status_presenter.rb index b2b9fb55cba..29eaad759bb 100644 --- a/app/presenters/commit_status_presenter.rb +++ b/app/presenters/commit_status_presenter.rb @@ -9,7 +9,7 @@ class CommitStatusPresenter < Gitlab::View::Presenter::Delegated runner_system_failure: 'There has been a runner system failure, please try again', missing_dependency_failure: 'There has been a missing dependency failure', runner_unsupported: 'Your runner is outdated, please upgrade your runner', - schedule_expired: 'Scheduled job could not be executed by some reason, please try again' + stale_schedule: 'Delayed job could not be executed by some reason, please try again' }.freeze private_constant :CALLOUT_FAILURE_MESSAGES diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb index 5028965862f..cc5762156d7 100644 --- a/app/workers/stuck_ci_jobs_worker.rb +++ b/app/workers/stuck_ci_jobs_worker.rb @@ -75,7 +75,7 @@ class StuckCiJobsWorker relation .where('scheduled_at < ?', BUILD_SCHEDULED_OUTDATED_TIMEOUT.ago) .find_each(batch_size: BUILD_SCHEDULED_OUTDATED_BATCH_SIZE) do |build| - drop_build(:outdated, build, :scheduled, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :schedule_expired) + drop_build(:outdated, build, :scheduled, BUILD_SCHEDULED_OUTDATED_TIMEOUT, :stale_schedule) end end end diff --git a/lib/gitlab/ci/status/build/failed.rb b/lib/gitlab/ci/status/build/failed.rb index 014eb66a26b..50b0d044265 100644 --- a/lib/gitlab/ci/status/build/failed.rb +++ b/lib/gitlab/ci/status/build/failed.rb @@ -11,7 +11,7 @@ module Gitlab runner_system_failure: 'runner system failure', missing_dependency_failure: 'missing dependency failure', runner_unsupported: 'unsupported runner', - schedule_expired: 'schedule expired' + stale_schedule: 'stale schedule' }.freeze private_constant :REASONS -- cgit v1.2.1 From 46fc55993a295b3832f82359d9a6ac4cd1ee8aa7 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 13:43:45 +0900 Subject: Add feature flag spec for process_build_service --- spec/services/ci/process_build_service_spec.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/spec/services/ci/process_build_service_spec.rb b/spec/services/ci/process_build_service_spec.rb index 692f28c80cb..9f47439dc4a 100644 --- a/spec/services/ci/process_build_service_spec.rb +++ b/spec/services/ci/process_build_service_spec.rb @@ -204,6 +204,20 @@ describe Ci::ProcessBuildService, '#execute' do allow(Ci::BuildScheduleWorker).to receive(:perform_at) { } end - it_behaves_like 'Scheduling properly', %w[success skipped] + context 'when ci_enable_scheduled_build is enabled' do + before do + stub_feature_flags(ci_enable_scheduled_build: true) + end + + it_behaves_like 'Scheduling properly', %w[success skipped] + end + + context 'when ci_enable_scheduled_build is enabled' do + before do + stub_feature_flags(ci_enable_scheduled_build: false) + end + + it_behaves_like 'Actionizing properly', %w[success skipped] + end end end -- cgit v1.2.1 From 63829ae4e81171a7fd6bee801e90708136da573d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 16:04:31 +0900 Subject: Show sheculed label for present and past jobs --- app/views/projects/ci/builds/_build.html.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index be24e7dadaf..2b699770998 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -47,10 +47,10 @@ %span.badge.badge-info triggered - if job.try(:allow_failure) %span.badge.badge-danger allowed to fail - - if job.action? - %span.badge.badge-info manual - - if job.scheduled? + - if job.schedulable? %span.badge.badge-info= s_('DelayedJobs|scheduled') + - elsif job.action? + %span.badge.badge-info manual - if pipeline_link %td -- cgit v1.2.1 From f1226cd5a9240c03438ef5f24a57bce4ad3ec554 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 17:32:49 +0900 Subject: Remove scheduled job fixture --- scheduled_job_fixture.rb | 214 ----------------------------------------------- 1 file changed, 214 deletions(-) delete mode 100644 scheduled_job_fixture.rb diff --git a/scheduled_job_fixture.rb b/scheduled_job_fixture.rb deleted file mode 100644 index ed205bf656c..00000000000 --- a/scheduled_job_fixture.rb +++ /dev/null @@ -1,214 +0,0 @@ -## -# ### -# IMPORTANT -# - Enable the feature flag `ci_enable_scheduled_build` on rails console! You can do `Feature.enable('ci_enable_scheduled_build')` -# This feature is off by default! -# -# -# This is a debug script to reproduce specific scenarios for scheduled jobs (https://gitlab.com/gitlab-org/gitlab-ce/issues/51352) -# By using this script, you don't need to setup GitLab runner. -# This script is specifically made for FE/UX engineers. They can quickly check how scheduled jobs behave. -# -# *** THIS IS NOT TO BE MERGED *** -# -# ### How to use ### -# -# ### Prerequisite -# 1. Create a project (for example with path `incremental-rollout`) -# 1. Create a .gitlab-ci.yml with the following content -# -=begin -stages: -- build -- test -- production -- rollout 10% -- rollout 50% -- rollout 100% -- cleanup - -build: - stage: build - script: sleep 1s - -test: - stage: test - script: sleep 3s - -rollout 10%: - stage: rollout 10% - script: date - when: delayed - start_in: 10 seconds - allow_failure: false - -rollout 50%: - stage: rollout 50% - script: date - when: delayed - start_in: 10 seconds - allow_failure: false - -rollout 100%: - stage: rollout 100% - script: date - when: delayed - start_in: 10 seconds - allow_failure: false - -cleanup: - stage: cleanup - script: date -=end -# -# ### How to load this script -# -# ``` -# bundle exec rails console # Login to rails console -# require '/path/to/scheduled_job_fixture.rb' # Load this script -# ``` -# -# ### Reproduce the scenario ~ when all stages succeeded ~ -# -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') -# 1. Wait until rollout 10% job is triggered -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('rollout 10%') -# 1. Wait until rollout 50% job is triggered -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('rollout 50%') -# 1. Wait until rollout 100% job is triggered -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('rollout 100%') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('cleanup') -# -# Expectation: Users see a succeccful pipeline -# -# ### Reproduce the scenario ~ when rollout 10% jobs failed ~ -# -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') -# 1. Wait until rollout 10% job is triggered -# 1. ScheduledJobFixture.new(16, 1).drop_jobs('rollout 10%') -# -# Expectation: Following stages should be skipped. -# -# ### Reproduce the scenario ~ when user clicked cancel button before build job finished ~ -# -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).cancel_pipeline -# -# Expectation: All stages should be canceled. -# -# ### Reproduce the scenario ~ when user canceled the pipeline after rollout 10% job is scheduled ~ -# -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') -# 1. Run next command before rollout 10% job is triggered -# 1. ScheduledJobFixture.new(16, 1).cancel_pipeline -# -# Expectation: rollout 10% job will be canceled. Following stages will be skipped. -# -# ### Reproduce the scenario ~ when user canceled rollout 10% job after rollout 10% job is scheduled ~ -# -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') -# 1. Run next command before rollout 10% job is triggered -# 1. ScheduledJobFixture.new(16, 1).cancel_jobs('rollout 10%') -# -# Expectation: rollout 10% job will be canceled. Following stages will be skipped. -# -# ### Reproduce the scenario ~ when user played rollout 10% job immidiately ~ -# -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') -# 1. Play rollout 10% job before rollout 10% job is triggered -# -# Expectation: rollout 10% becomes pending immidiately -# -# ### Reproduce the scenario ~ when rollout 10% job is allowed to fail ~ -# -# 1. Set `allow_failure: true` to rollout 10% job -# 1. ScheduledJobFixture.new(16, 1).create_pipeline('master') -# 1. ScheduledJobFixture.new(16, 1).finish_stage_until('test') -# 1. Wait until rollout 10% job is triggered -# 1. ScheduledJobFixture.new(16, 1).drop_jobs('rollout 10%') -# -# Expectation: rollout 50% job should be triggered -# - -class ScheduledJobFixture - attr_reader :project - attr_reader :user - - include GitlabRoutingHelper - - def initialize(project_id, user_id) - @project = Project.find_by_id(project_id) - @user = User.find_by_id(user_id) - end - - def create_pipeline(ref) - pipeline = Ci::CreatePipelineService.new(project, user, ref: ref).execute(:web) - Rails.application.routes.url_helpers.namespace_project_pipeline_url(project.namespace, project, pipeline) - end - - def finish_stage_until(stage_name) - pipeline = Ci::Pipeline.last - pipeline.stages.order(:id).each do |stage| - stage.builds.map(&:success) - stage.update_status - pipeline.update_status - - return if stage.name == stage_name - end - end - - def run_jobs(stage_name) - pipeline = Ci::Pipeline.last - stage = pipeline.stages.find_by_name(stage_name) - stage.builds.map(&:run) - stage.update_status - pipeline.update_status - end - - def drop_jobs(stage_name) - pipeline = Ci::Pipeline.last - stage = pipeline.stages.find_by_name(stage_name) - stage.builds.map(&:drop) - stage.update_status - pipeline.update_status - end - - def cancel_jobs(stage_name) - pipeline = Ci::Pipeline.last - stage = pipeline.stages.find_by_name(stage_name) - stage.builds.map(&:cancel) - stage.update_status - pipeline.update_status - end - - def cancel_pipeline - Ci::Pipeline.last.cancel_running - end - - def create_stale_scheduled_builds - count = 100 - rows = [] - last_pipeline = Ci::Pipeline.last - last_stage = last_pipeline.stages.last - - count.times do |i| - rows << { - name: "delayed-job-bulk-#{i}", - project_id: project.id, - commit_id: last_pipeline.id, - status: 'scheduled', - scheduled_at: 1.day.ago, - user_id: user.id, - stage_id: last_stage.id, - type: 'Ci::Build' - } - end - - Gitlab::Database.bulk_insert('ci_builds', rows) - end -end -- cgit v1.2.1 From 4dd70b9e1e67b50d846b4fb48c0ff942104119a5 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 18:10:58 +0900 Subject: Fix spec --- spec/lib/gitlab/ci/status/build/factory_spec.rb | 6 +++--- spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb | 2 +- spec/lib/gitlab/ci/status/pipeline/factory_spec.rb | 7 ++++++- spec/lib/gitlab/import_export/all_models.yml | 1 + spec/workers/stuck_ci_jobs_worker_spec.rb | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/spec/lib/gitlab/ci/status/build/factory_spec.rb b/spec/lib/gitlab/ci/status/build/factory_spec.rb index 1073c4b7ccd..aa53ecd5967 100644 --- a/spec/lib/gitlab/ci/status/build/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/build/factory_spec.rb @@ -330,7 +330,7 @@ describe Gitlab::Ci::Status::Build::Factory do it 'matches correct extended statuses' do expect(factory.extended_statuses) .to eq [Gitlab::Ci::Status::Build::Scheduled, - Gitlab::Ci::Status::Build::Play, + Gitlab::Ci::Status::Build::Unschedule, Gitlab::Ci::Status::Build::Action] end @@ -344,9 +344,9 @@ describe Gitlab::Ci::Status::Build::Factory do expect(status.icon).to eq 'status_scheduled' expect(status.favicon).to eq 'favicon_status_scheduled' expect(status.illustration).to include(:image, :size, :title, :content) - expect(status.label).to include 'manual play action' + expect(status.label).to include 'unschedule action' expect(status).to have_details - expect(status.action_path).to include 'play' + expect(status.action_path).to include 'unschedule' end context 'when user has ability to play action' do diff --git a/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb b/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb index 49a25b4a389..1a2b952d374 100644 --- a/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb +++ b/spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb @@ -15,7 +15,7 @@ describe Gitlab::Ci::Status::Pipeline::Blocked do describe '#label' do it 'overrides status label' do - expect(subject.label).to eq 'waiting for manual action or delayed job' + expect(subject.label).to eq 'waiting for manual action' end end diff --git a/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb b/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb index d83f260927f..694d4ce160a 100644 --- a/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/pipeline/factory_spec.rb @@ -23,11 +23,16 @@ describe Gitlab::Ci::Status::Pipeline::Factory do expect(factory.core_status).to be_a expected_status end - if HasStatus::BLOCKED_STATUS.include?(simple_status) + if simple_status == 'manual' it 'matches a correct extended statuses' do expect(factory.extended_statuses) .to eq [Gitlab::Ci::Status::Pipeline::Blocked] end + elsif simple_status == 'scheduled' + it 'matches a correct extended statuses' do + expect(factory.extended_statuses) + .to eq [Gitlab::Ci::Status::Pipeline::Scheduled] + end else it 'does not match extended statuses' do expect(factory.extended_statuses).to be_empty diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index ec2bdbe22e1..fe167033941 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -117,6 +117,7 @@ pipelines: - retryable_builds - cancelable_statuses - manual_actions +- scheduled_actions - artifacts - pipeline_schedule - merge_requests diff --git a/spec/workers/stuck_ci_jobs_worker_spec.rb b/spec/workers/stuck_ci_jobs_worker_spec.rb index 2f8ba4859d7..f38bc11f7f0 100644 --- a/spec/workers/stuck_ci_jobs_worker_spec.rb +++ b/spec/workers/stuck_ci_jobs_worker_spec.rb @@ -143,7 +143,7 @@ describe StuckCiJobsWorker do expect(Ci::Build.scheduled.count).to eq(0) expect(job).to be_failed - expect(job).to be_schedule_expired + expect(job).to be_stale_schedule end end -- cgit v1.2.1 From 49af84c2b0df199f1d8cda16a126ce6701e07743 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 18:35:34 +0900 Subject: enqueue in process_build_service --- app/services/ci/process_build_service.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/services/ci/process_build_service.rb b/app/services/ci/process_build_service.rb index 0fbe93130d0..d9f8e7cb452 100644 --- a/app/services/ci/process_build_service.rb +++ b/app/services/ci/process_build_service.rb @@ -9,7 +9,7 @@ module Ci elsif build.action? build.actionize else - build.enqueue + enqueue(build) end true @@ -21,6 +21,10 @@ module Ci private + def enqueue(build) + build.enqueue + end + def valid_statuses_for_when(value) case value when 'on_success' -- cgit v1.2.1 From 7fe14c42a913c683bd6f7c4f8791fff63db3c499 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 18:47:41 +0900 Subject: Add integration spec --- spec/controllers/projects/jobs_controller_spec.rb | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb index fd11cb31a2a..f1eefdbaaaf 100644 --- a/spec/controllers/projects/jobs_controller_spec.rb +++ b/spec/controllers/projects/jobs_controller_spec.rb @@ -632,6 +632,46 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do end end + describe 'POST unschedule' do + before do + project.add_developer(user) + + create(:protected_branch, :developers_can_merge, + name: 'master', project: project) + + sign_in(user) + + post_unschedule + end + + context 'when job is scheduled' do + let(:job) { create(:ci_build, :scheduled, pipeline: pipeline) } + + it 'redirects to the unscheduled job page' do + expect(response).to have_gitlab_http_status(:found) + expect(response).to redirect_to(namespace_project_job_path(id: job.id)) + end + + it 'transits to manual' do + expect(job.reload).to be_manual + end + end + + context 'when job is not scheduled' do + let(:job) { create(:ci_build, pipeline: pipeline) } + + it 'renders unprocessable_entity' do + expect(response).to have_gitlab_http_status(:unprocessable_entity) + end + end + + def post_unschedule + post :unschedule, namespace_id: project.namespace, + project_id: project, + id: job.id + end + end + describe 'POST cancel_all' do before do project.add_developer(user) -- cgit v1.2.1 From 9613f7e2fb2d5b4190adff29107b1bca6993fd41 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 2 Oct 2018 19:45:39 +0900 Subject: Stub feature flag for spec --- spec/models/ci/build_spec.rb | 4 ++++ spec/services/ci/run_scheduled_build_service_spec.rb | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 83add15fab7..ffad82c7820 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -327,6 +327,10 @@ describe Ci::Build do describe '#enqueue_scheduled' do subject { build.enqueue_scheduled } + before do + stub_feature_flags(ci_enable_scheduled_build: true) + end + context 'when build is scheduled and the right time has not come yet' do let(:build) { create(:ci_build, :scheduled, pipeline: pipeline) } diff --git a/spec/services/ci/run_scheduled_build_service_spec.rb b/spec/services/ci/run_scheduled_build_service_spec.rb index be2aad33ef4..2c921dac238 100644 --- a/spec/services/ci/run_scheduled_build_service_spec.rb +++ b/spec/services/ci/run_scheduled_build_service_spec.rb @@ -7,6 +7,10 @@ describe Ci::RunScheduledBuildService do subject { described_class.new(project, user).execute(build) } + before do + stub_feature_flags(ci_enable_scheduled_build: true) + end + context 'when user can update build' do before do project.add_developer(user) -- cgit v1.2.1 From c9e8b59c8540f7be198463db4477130046a8d655 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Tue, 2 Oct 2018 12:58:18 +0200 Subject: Add missing translations from scheduled job UI --- locale/gitlab.pot | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index cc11577b624..29ab9f7d6eb 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -1221,9 +1221,15 @@ msgstr "" msgid "CiStatusLabel|pending" msgstr "" +msgid "CiStatusLabel|scheduled" +msgstr "" + msgid "CiStatusLabel|skipped" msgstr "" +msgid "CiStatusLabel|waiting for delayed job" +msgstr "" + msgid "CiStatusLabel|waiting for manual action" msgstr "" @@ -1248,6 +1254,9 @@ msgstr "" msgid "CiStatusText|pending" msgstr "" +msgid "CiStatusText|scheduled" +msgstr "" + msgid "CiStatusText|skipped" msgstr "" @@ -2134,6 +2143,21 @@ msgstr "" msgid "Define a custom pattern with cron syntax" msgstr "" +msgid "DelayedJobs|Are you sure you want to run %{jobName} immediately? This job will run automatically after it's timer finishes." +msgstr "" + +msgid "DelayedJobs|Are you sure you want to run %{job_name} immediately? This job will run automatically after it's timer finishes." +msgstr "" + +msgid "DelayedJobs|Start now" +msgstr "" + +msgid "DelayedJobs|Unschedule" +msgstr "" + +msgid "DelayedJobs|scheduled" +msgstr "" + msgid "Delete" msgstr "" @@ -6051,6 +6075,9 @@ msgstr "" msgid "This is a confidential issue." msgstr "" +msgid "This is a scheduled to run in " +msgstr "" + msgid "This is the author's first Merge Request to this project." msgstr "" @@ -6111,6 +6138,9 @@ msgstr "" msgid "This job requires a manual action" msgstr "" +msgid "This job will automatically run after it's timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action." +msgstr "" + msgid "This means you can not push code until you create an empty repository or import existing one." msgstr "" @@ -6463,6 +6493,9 @@ msgstr "" msgid "Unresolve discussion" msgstr "" +msgid "Unschedule job" +msgstr "" + msgid "Unstage" msgstr "" -- cgit v1.2.1 From 64ad6458486dc53da0a646419e4702319df6dace Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Tue, 2 Oct 2018 14:34:02 +0200 Subject: Add confirmation for immediately starting scheduled jobs --- .../javascripts/pipelines/components/pipelines_actions.vue | 14 +++++++++++--- app/views/projects/ci/builds/_build.html.haml | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/pipelines/components/pipelines_actions.vue b/app/assets/javascripts/pipelines/components/pipelines_actions.vue index fa5ad62f438..1768c7dc2b3 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_actions.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_actions.vue @@ -1,4 +1,5 @@ diff --git a/package.json b/package.json index 714bdb285fe..3321115a84b 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@gitlab-org/gitlab-svgs": "^1.29.0", - "@gitlab-org/gitlab-ui": "^1.7.1", + "@gitlab-org/gitlab-ui": "https://gitlab.com/gitlab-org/gitlab-ui/-/jobs/101969901/artifacts/raw/gitlab-ui.jivl-add-text-button-component.tgz", "autosize": "^4.0.0", "axios": "^0.17.1", "babel-core": "^6.26.3", diff --git a/spec/javascripts/boards/board_new_issue_spec.js b/spec/javascripts/boards/board_new_issue_spec.js index ee37821ad08..1245e3e099a 100644 --- a/spec/javascripts/boards/board_new_issue_spec.js +++ b/spec/javascripts/boards/board_new_issue_spec.js @@ -69,7 +69,6 @@ describe('Issue boards new issue form', () => { vm.$el.querySelector('.btn-success').click(); expect(vm.submit.calls.count()).toBe(1); - expect(vm.$refs['submit-button']).toBe(vm.$el.querySelector('.btn-success')); }) .then(done) .catch(done.fail); diff --git a/yarn.lock b/yarn.lock index 20b587d1fc5..4cfdfa51092 100644 --- a/yarn.lock +++ b/yarn.lock @@ -185,10 +185,9 @@ resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.29.0.tgz#03b65b513f9099bbda6ecf94d673a2952f8c6c70" integrity sha512-sCl6nP3ph36+8P3nrw9VanAR648rgOUEBlEoLPHkhKm79xB1dUkXGBtI0uaSJVgbJx40M1/Ts8HSdMv+PF3EIg== -"@gitlab-org/gitlab-ui@^1.7.1": +"@gitlab-org/gitlab-ui@https://gitlab.com/gitlab-org/gitlab-ui/-/jobs/101969901/artifacts/raw/gitlab-ui.jivl-add-text-button-component.tgz": version "1.7.1" - resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-ui/-/gitlab-ui-1.7.1.tgz#e9cce86cb7e34311405e705c1de674276b453f17" - integrity sha512-X12W39lFnWmfmYcHBokrauKvp6VLW9u0rFdgBXWlnrRL2hBShnyeBsBXKLMGUGnofMtgYv3iYO/rFW9IB79lFg== + resolved "https://gitlab.com/gitlab-org/gitlab-ui/-/jobs/101969901/artifacts/raw/gitlab-ui.jivl-add-text-button-component.tgz#e17416d3b829a03ee8d9eef8b58b39dc8c9fb867" dependencies: "@gitlab-org/gitlab-svgs" "^1.23.0" bootstrap-vue "^2.0.0-rc.11" -- cgit v1.2.1 From bc94598490b181820c1b3275f5b4ebc874263c17 Mon Sep 17 00:00:00 2001 From: Jose Vargas Date: Tue, 2 Oct 2018 16:43:06 -0500 Subject: Update GitLab-ui version in package.json --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 3321115a84b..004260ec9f9 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@gitlab-org/gitlab-svgs": "^1.29.0", - "@gitlab-org/gitlab-ui": "https://gitlab.com/gitlab-org/gitlab-ui/-/jobs/101969901/artifacts/raw/gitlab-ui.jivl-add-text-button-component.tgz", + "@gitlab-org/gitlab-ui": "^1.8.0", "autosize": "^4.0.0", "axios": "^0.17.1", "babel-core": "^6.26.3", diff --git a/yarn.lock b/yarn.lock index 4cfdfa51092..059eaa5fc39 100644 --- a/yarn.lock +++ b/yarn.lock @@ -185,9 +185,10 @@ resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.29.0.tgz#03b65b513f9099bbda6ecf94d673a2952f8c6c70" integrity sha512-sCl6nP3ph36+8P3nrw9VanAR648rgOUEBlEoLPHkhKm79xB1dUkXGBtI0uaSJVgbJx40M1/Ts8HSdMv+PF3EIg== -"@gitlab-org/gitlab-ui@https://gitlab.com/gitlab-org/gitlab-ui/-/jobs/101969901/artifacts/raw/gitlab-ui.jivl-add-text-button-component.tgz": - version "1.7.1" - resolved "https://gitlab.com/gitlab-org/gitlab-ui/-/jobs/101969901/artifacts/raw/gitlab-ui.jivl-add-text-button-component.tgz#e17416d3b829a03ee8d9eef8b58b39dc8c9fb867" +"@gitlab-org/gitlab-ui@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-ui/-/gitlab-ui-1.8.0.tgz#dee33d78f68c91644273dbd51734b796108263ee" + integrity sha512-Owm8bkP4vEihiLD3pmMw1r+UWr3WYGaGUtj0JcwaAg3d05ZneozFEZjazIOWeYTcFsk+ZvNmSk1UA+ARIauhgQ== dependencies: "@gitlab-org/gitlab-svgs" "^1.23.0" bootstrap-vue "^2.0.0-rc.11" -- cgit v1.2.1 From 59d4a86014d28523f473d5827443be8600cd51e9 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Tue, 2 Oct 2018 21:58:57 +0000 Subject: Avoid close icon leaving the modal header --- app/assets/stylesheets/framework/modal.scss | 11 +++++++++++ changelogs/unreleased/feature-flags-mvc.yml | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 changelogs/unreleased/feature-flags-mvc.yml diff --git a/app/assets/stylesheets/framework/modal.scss b/app/assets/stylesheets/framework/modal.scss index f10eaedcc04..7e30747963a 100644 --- a/app/assets/stylesheets/framework/modal.scss +++ b/app/assets/stylesheets/framework/modal.scss @@ -19,6 +19,17 @@ } } + // leave enough space for the close icon + .modal-title { + &.mw-100, + &.w-100 { + // after upgrading to Bootstrap 4.2 we can use $modal-header-padding-x here + // https://github.com/twbs/bootstrap/pull/26976 + margin-right: -2rem; + padding-right: 2rem; + } + } + .page-title { margin-top: 0; } diff --git a/changelogs/unreleased/feature-flags-mvc.yml b/changelogs/unreleased/feature-flags-mvc.yml new file mode 100644 index 00000000000..6a709f7cf07 --- /dev/null +++ b/changelogs/unreleased/feature-flags-mvc.yml @@ -0,0 +1,5 @@ +--- +title: Avoid close icon leaving the modal header +merge_request: 21904 +author: +type: changed -- cgit v1.2.1 From 9ba554c8a053c5c9ad52a4e38956c4b9a6f140f7 Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Thu, 27 Sep 2018 13:58:23 -0500 Subject: Filter system notes with public and private cross references --- app/models/note.rb | 27 +++++---- app/models/system_note_metadata.rb | 5 ++ ...urity-fix-leaking-private-project-namespace.yml | 5 ++ lib/banzai/object_renderer.rb | 1 + lib/banzai/redactor.rb | 8 ++- spec/models/note_spec.rb | 67 +++++++++++++++------- 6 files changed, 80 insertions(+), 33 deletions(-) create mode 100644 changelogs/unreleased/security-fix-leaking-private-project-namespace.yml diff --git a/app/models/note.rb b/app/models/note.rb index bea02d69b65..1b595ef60b4 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -38,10 +38,12 @@ class Note < ActiveRecord::Base alias_attribute :last_edited_at, :updated_at alias_attribute :last_edited_by, :updated_by - # Attribute containing rendered and redacted Markdown as generated by - # Banzai::ObjectRenderer. + # Number of user visible references as generated by Banzai::ObjectRenderer attr_accessor :redacted_note_html + # Total of all references as generated by Banzai::ObjectRenderer + attr_accessor :total_reference_count + # An Array containing the number of visible references as generated by # Banzai::ObjectRenderer attr_accessor :user_visible_reference_count @@ -288,15 +290,7 @@ class Note < ActiveRecord::Base end def cross_reference_not_visible_for?(user) - cross_reference? && !has_referenced_mentionables?(user) - end - - def has_referenced_mentionables?(user) - if user_visible_reference_count.present? - user_visible_reference_count > 0 - else - referenced_mentionables(user).any? - end + cross_reference? && !all_referenced_mentionables_allowed?(user) end def award_emoji? @@ -466,9 +460,18 @@ class Note < ActiveRecord::Base self.discussion_id ||= discussion_class.discussion_id(self) end + def all_referenced_mentionables_allowed?(user) + if user_visible_reference_count.present? && total_reference_count.present? + # if they are not equal, then there are private/confidential references as well + user_visible_reference_count > 0 && user_visible_reference_count == total_reference_count + else + referenced_mentionables(user).any? + end + end + def force_cross_reference_regex_check? return unless system? - SystemNoteMetadata::TYPES_WITH_CROSS_REFERENCES.include?(system_note_metadata&.action) + system_note_metadata&.cross_reference_types&.include?(system_note_metadata&.action) end end diff --git a/app/models/system_note_metadata.rb b/app/models/system_note_metadata.rb index 6fadbcefa53..d555ebe5322 100644 --- a/app/models/system_note_metadata.rb +++ b/app/models/system_note_metadata.rb @@ -9,6 +9,7 @@ class SystemNoteMetadata < ActiveRecord::Base TYPES_WITH_CROSS_REFERENCES = %w[ commit cross_reference close duplicate + moved ].freeze ICON_TYPES = %w[ @@ -26,4 +27,8 @@ class SystemNoteMetadata < ActiveRecord::Base def icon_types ICON_TYPES end + + def cross_reference_types + TYPES_WITH_CROSS_REFERENCES + end end diff --git a/changelogs/unreleased/security-fix-leaking-private-project-namespace.yml b/changelogs/unreleased/security-fix-leaking-private-project-namespace.yml new file mode 100644 index 00000000000..589d16c0c35 --- /dev/null +++ b/changelogs/unreleased/security-fix-leaking-private-project-namespace.yml @@ -0,0 +1,5 @@ +--- +title: Properly filter private references from system notes +merge_request: +author: +type: security diff --git a/lib/banzai/object_renderer.rb b/lib/banzai/object_renderer.rb index a176f1e261b..7137c1da57d 100644 --- a/lib/banzai/object_renderer.rb +++ b/lib/banzai/object_renderer.rb @@ -38,6 +38,7 @@ module Banzai redacted_data = redacted[index] object.__send__("redacted_#{attribute}_html=", redacted_data[:document].to_html(save_options).html_safe) # rubocop:disable GitlabSecurity/PublicSend object.user_visible_reference_count = redacted_data[:visible_reference_count] if object.respond_to?(:user_visible_reference_count) + object.total_reference_count = redacted_data[:total_reference_count] if object.respond_to?(:total_reference_count) end end diff --git a/lib/banzai/redactor.rb b/lib/banzai/redactor.rb index 28928d6f376..e77bee78496 100644 --- a/lib/banzai/redactor.rb +++ b/lib/banzai/redactor.rb @@ -37,7 +37,13 @@ module Banzai all_document_nodes.each do |entry| nodes_for_document = entry[:nodes] - doc_data = { document: entry[:document], visible_reference_count: nodes_for_document.count } + + doc_data = { + document: entry[:document], + total_reference_count: nodes_for_document.count, + visible_reference_count: nodes_for_document.count + } + metadata << doc_data nodes_for_document.each do |node| diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb index 947be44c903..1783dd3206b 100644 --- a/spec/models/note_spec.rb +++ b/spec/models/note_spec.rb @@ -231,33 +231,60 @@ describe Note do let(:ext_proj) { create(:project, :public) } let(:ext_issue) { create(:issue, project: ext_proj) } - let(:note) do - create :note, - noteable: ext_issue, project: ext_proj, - note: "mentioned in issue #{private_issue.to_reference(ext_proj)}", - system: true - end + shared_examples "checks references" do + it "returns true" do + expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_truthy + end - it "returns true" do - expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_truthy - end + it "returns false" do + expect(note.cross_reference_not_visible_for?(private_user)).to be_falsy + end - it "returns false" do - expect(note.cross_reference_not_visible_for?(private_user)).to be_falsy + it "returns false if user visible reference count set" do + note.user_visible_reference_count = 1 + note.total_reference_count = 1 + + expect(note).not_to receive(:reference_mentionables) + expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_falsy + end + + it "returns true if ref count is 0" do + note.user_visible_reference_count = 0 + + expect(note).not_to receive(:reference_mentionables) + expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_truthy + end end - it "returns false if user visible reference count set" do - note.user_visible_reference_count = 1 + context "when there is one reference in note" do + let(:note) do + create :note, + noteable: ext_issue, project: ext_proj, + note: "mentioned in issue #{private_issue.to_reference(ext_proj)}", + system: true + end - expect(note).not_to receive(:reference_mentionables) - expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_falsy + it_behaves_like "checks references" end - it "returns true if ref count is 0" do - note.user_visible_reference_count = 0 + context "when there are two references in note" do + let(:note) do + create :note, + noteable: ext_issue, project: ext_proj, + note: "mentioned in issue #{private_issue.to_reference(ext_proj)} and " \ + "public issue #{ext_issue.to_reference(ext_proj)}", + system: true + end + + it_behaves_like "checks references" - expect(note).not_to receive(:reference_mentionables) - expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_truthy + it "returns true if user visible reference count set and there is a private reference" do + note.user_visible_reference_count = 1 + note.total_reference_count = 2 + + expect(note).not_to receive(:reference_mentionables) + expect(note.cross_reference_not_visible_for?(ext_issue.author)).to be_truthy + end end end @@ -269,7 +296,7 @@ describe Note do end context 'when the note might contain cross references' do - SystemNoteMetadata::TYPES_WITH_CROSS_REFERENCES.each do |type| + SystemNoteMetadata.new.cross_reference_types.each do |type| let(:note) { create(:note, :system) } let!(:metadata) { create(:system_note_metadata, note: note, action: type) } -- cgit v1.2.1 From 5905d89b924fc518a3896ac6b4ccec11a164df5d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 15:05:50 +0900 Subject: Add spec for build presenter --- spec/presenters/ci/build_presenter_spec.rb | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/spec/presenters/ci/build_presenter_spec.rb b/spec/presenters/ci/build_presenter_spec.rb index 547d95e0908..b2fe10bb0b0 100644 --- a/spec/presenters/ci/build_presenter_spec.rb +++ b/spec/presenters/ci/build_presenter_spec.rb @@ -218,6 +218,42 @@ describe Ci::BuildPresenter do end end + describe '#execute_in' do + subject { presenter.execute_in } + + context 'when build is scheduled' do + context 'when schedule is not expired' do + let(:build) { create(:ci_build, :scheduled) } + + it 'returns execution time' do + Timecop.freeze do + is_expected.to eq(60.0) + end + end + end + + context 'when schedule is expired' do + let(:build) { create(:ci_build, :expired_scheduled) } + + it 'returns execution time' do + Timecop.freeze do + is_expected.to eq(0) + end + end + end + end + + context 'when build is not delayed' do + let(:build) { create(:ci_build) } + + it 'does not return execution time' do + Timecop.freeze do + is_expected.to be_falsy + end + end + end + end + describe '#callout_failure_message' do let(:build) { create(:ci_build, :failed, :api_failure) } -- cgit v1.2.1 From 66b3bd5e2689c735675dc192746c972ebf627a97 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 15:09:48 +0900 Subject: Add spec for build_action_entity_spec --- spec/serializers/build_action_entity_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spec/serializers/build_action_entity_spec.rb b/spec/serializers/build_action_entity_spec.rb index 15720d86583..9e2bee2ee60 100644 --- a/spec/serializers/build_action_entity_spec.rb +++ b/spec/serializers/build_action_entity_spec.rb @@ -22,5 +22,17 @@ describe BuildActionEntity do it 'contains whether it is playable' do expect(subject[:playable]).to eq job.playable? end + + context 'when job is scheduled' do + let(:job) { create(:ci_build, :scheduled) } + + it 'returns scheduled_at' do + expect(subject[:scheduled_at]).to eq(job.scheduled_at) + end + + it 'returns unschedule path' do + expect(subject[:unschedule_path]).to include "jobs/#{job.id}/unschedule" + end + end end end -- cgit v1.2.1 From 137f74b56396bc8feee87ead9c827ccc0fb47cd2 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 15:17:12 +0900 Subject: Add job_entity_spec --- app/serializers/job_entity.rb | 10 +++++++++- spec/serializers/job_entity_spec.rb | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/serializers/job_entity.rb b/app/serializers/job_entity.rb index dd6c2fa1a6d..0b19cb16955 100644 --- a/app/serializers/job_entity.rb +++ b/app/serializers/job_entity.rb @@ -24,8 +24,12 @@ class JobEntity < Grape::Entity path_to(:play_namespace_project_job, build) end + expose :unschedule_path, if: -> (*) { scheduled? } do |build| + path_to(:unschedule_namespace_project_job, build) + end + expose :playable?, as: :playable - expose :scheduled_at + expose :scheduled_at, if: -> (*) { scheduled? } expose :created_at expose :updated_at expose :detailed_status, as: :status, with: DetailedStatusEntity @@ -48,6 +52,10 @@ class JobEntity < Grape::Entity build.playable? && can?(request.current_user, :update_build, build) end + def scheduled? + build.scheduled? + end + def detailed_status build.detailed_status(request.current_user) end diff --git a/spec/serializers/job_entity_spec.rb b/spec/serializers/job_entity_spec.rb index 8e1ca3f308d..5fc27da4906 100644 --- a/spec/serializers/job_entity_spec.rb +++ b/spec/serializers/job_entity_spec.rb @@ -109,6 +109,18 @@ describe JobEntity do end end + context 'when job is scheduled' do + let(:job) { create(:ci_build, :scheduled) } + + it 'contains path to unschedule action' do + expect(subject).to include(:unschedule_path) + end + + it 'contains scheduled_at' do + expect(subject[:scheduled_at]).to eq(job.scheduled_at) + end + end + context 'when job is generic commit status' do let(:job) { create(:generic_commit_status, target_url: 'http://google.com') } -- cgit v1.2.1 From 64d1eabf86d1717d033b38a72b1b6563b8d001c7 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 15:18:44 +0900 Subject: Add spec for pipeline_details_entity_spec --- spec/serializers/pipeline_details_entity_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/serializers/pipeline_details_entity_spec.rb b/spec/serializers/pipeline_details_entity_spec.rb index 45e18086894..8e73a3e67c6 100644 --- a/spec/serializers/pipeline_details_entity_spec.rb +++ b/spec/serializers/pipeline_details_entity_spec.rb @@ -29,7 +29,7 @@ describe PipelineDetailsEntity do expect(subject[:details]) .to include :duration, :finished_at expect(subject[:details]) - .to include :stages, :artifacts, :manual_actions + .to include :stages, :artifacts, :manual_actions, :scheduled_actions expect(subject[:details][:status]).to include :icon, :favicon, :text, :label end -- cgit v1.2.1 From 5f3c1a541228a6b042e9bfd33eb6058008a3a345 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 15:25:17 +0900 Subject: Add spec for Gitlab::Ci::Status::Build::Unschedule --- spec/lib/gitlab/ci/status/build/unschedule_spec.rb | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 spec/lib/gitlab/ci/status/build/unschedule_spec.rb diff --git a/spec/lib/gitlab/ci/status/build/unschedule_spec.rb b/spec/lib/gitlab/ci/status/build/unschedule_spec.rb new file mode 100644 index 00000000000..ed046d66ca5 --- /dev/null +++ b/spec/lib/gitlab/ci/status/build/unschedule_spec.rb @@ -0,0 +1,94 @@ +require 'spec_helper' + +describe Gitlab::Ci::Status::Build::Unschedule do + let(:status) { double('core status') } + let(:user) { double('user') } + + subject do + described_class.new(status) + end + + describe '#label' do + it { expect(subject.label).to eq 'unschedule action' } + end + + describe 'action details' do + let(:user) { create(:user) } + let(:build) { create(:ci_build) } + let(:status) { Gitlab::Ci::Status::Core.new(build, user) } + + describe '#has_action?' do + context 'when user is allowed to update build' do + before do + stub_not_protect_default_branch + + build.project.add_developer(user) + end + + it { is_expected.to have_action } + end + + context 'when user is not allowed to update build' do + it { is_expected.not_to have_action } + end + end + + describe '#action_path' do + it { expect(subject.action_path).to include "#{build.id}/unschedule" } + end + + describe '#action_icon' do + it { expect(subject.action_icon).to eq 'time-out' } + end + + describe '#action_title' do + it { expect(subject.action_title).to eq 'Unschedule' } + end + + describe '#action_button_title' do + it { expect(subject.action_button_title).to eq 'Unschedule job' } + end + end + + describe '.matches?' do + subject { described_class.matches?(build, user) } + + context 'when build is scheduled' do + context 'when build unschedules an delayed job' do + let(:build) { create(:ci_build, :scheduled) } + + it 'is a correct match' do + expect(subject).to be true + end + end + + context 'when build unschedules an normal job' do + let(:build) { create(:ci_build) } + + it 'does not match' do + expect(subject).to be false + end + end + end + end + + describe '#status_tooltip' do + it 'does not override status status_tooltip' do + expect(status).to receive(:status_tooltip) + + subject.status_tooltip + end + end + + describe '#badge_tooltip' do + let(:user) { create(:user) } + let(:build) { create(:ci_build, :playable) } + let(:status) { Gitlab::Ci::Status::Core.new(build, user) } + + it 'does not override status badge_tooltip' do + expect(status).to receive(:badge_tooltip) + + subject.badge_tooltip + end + end +end -- cgit v1.2.1 From 1da4ae719a704125738f2be2544ba134ebfec385 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 15:28:17 +0900 Subject: Add spec for Status::Pipeline::Scheduled --- spec/factories/ci/pipelines.rb | 4 +++ .../gitlab/ci/status/pipeline/scheduled_spec.rb | 42 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 spec/lib/gitlab/ci/status/pipeline/scheduled_spec.rb diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb index 9fef424e425..8a44ce52849 100644 --- a/spec/factories/ci/pipelines.rb +++ b/spec/factories/ci/pipelines.rb @@ -54,6 +54,10 @@ FactoryBot.define do status :manual end + trait :scheduled do + status :scheduled + end + trait :success do status :success end diff --git a/spec/lib/gitlab/ci/status/pipeline/scheduled_spec.rb b/spec/lib/gitlab/ci/status/pipeline/scheduled_spec.rb new file mode 100644 index 00000000000..29afa08b56b --- /dev/null +++ b/spec/lib/gitlab/ci/status/pipeline/scheduled_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +describe Gitlab::Ci::Status::Pipeline::Scheduled do + let(:pipeline) { double('pipeline') } + + subject do + described_class.new(pipeline) + end + + describe '#text' do + it 'overrides status text' do + expect(subject.text).to eq 'scheduled' + end + end + + describe '#label' do + it 'overrides status label' do + expect(subject.label).to eq 'waiting for delayed job' + end + end + + describe '.matches?' do + let(:user) { double('user') } + subject { described_class.matches?(pipeline, user) } + + context 'when pipeline is scheduled' do + let(:pipeline) { create(:ci_pipeline, :scheduled) } + + it 'is a correct match' do + expect(subject).to be true + end + end + + context 'when pipeline is not scheduled' do + let(:pipeline) { create(:ci_pipeline, :success) } + + it 'does not match' do + expect(subject).to be false + end + end + end +end -- cgit v1.2.1 From 2645862f687eb32718bef3a033a5d5a1845510a6 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 3 Oct 2018 06:49:25 +0000 Subject: Add encrypted sensitive word to export spec --- spec/features/projects/import_export/export_file_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/projects/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb index a2b96514d64..f76f9ba7577 100644 --- a/spec/features/projects/import_export/export_file_spec.rb +++ b/spec/features/projects/import_export/export_file_spec.rb @@ -12,7 +12,7 @@ describe 'Import/Export - project export integration test', :js do let(:export_path) { "#{Dir.tmpdir}/import_file_spec" } let(:config_hash) { YAML.load_file(Gitlab::ImportExport.config_file).deep_stringify_keys } - let(:sensitive_words) { %w[pass secret token key] } + let(:sensitive_words) { %w[pass secret token key encrypted] } let(:safe_list) do { token: [ProjectHook, Ci::Trigger, CommitStatus], -- cgit v1.2.1 From 9621bbb94cde3d33fce3c2c25fb98748f7a1824a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 3 Oct 2018 16:11:08 +0900 Subject: Add feature spec --- spec/features/projects/jobs_spec.rb | 25 +++++++++++++++ spec/features/projects/pipelines/pipeline_spec.rb | 34 ++++++++++++++++++++ spec/features/projects/pipelines/pipelines_spec.rb | 37 ++++++++++++++++++++++ 3 files changed, 96 insertions(+) diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb index d0bf4975b81..5b767c96910 100644 --- a/spec/features/projects/jobs_spec.rb +++ b/spec/features/projects/jobs_spec.rb @@ -429,6 +429,31 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do end end + context 'Delayed job' do + let(:job) { create(:ci_build, :scheduled, pipeline: pipeline) } + + before do + project.add_developer(user) + visit project_job_path(project, job) + end + + it 'shows delayed job' do + expect(page).to have_content(job.detailed_status(user).illustration[:title]) + expect(page).to have_content('This is a scheduled to run in') + expect(page).to have_content("This job will automatically run after it's timer finishes.") + expect(page).to have_link('Unschedule job') + end + + it 'unschedule delayed job and shows manual action', :js do + click_link 'Unschedule job' + + wait_for_requests + expect(page).to have_content('This job requires a manual action') + expect(page).to have_content('This job depends on a user to trigger its process. Often they are used to deploy code to production environments') + expect(page).to have_link('Trigger this manual action') + end + end + context 'Non triggered job' do let(:job) { create(:ci_build, :created, pipeline: pipeline) } diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb index 603503a531c..b728f4c00f2 100644 --- a/spec/features/projects/pipelines/pipeline_spec.rb +++ b/spec/features/projects/pipelines/pipeline_spec.rb @@ -31,6 +31,11 @@ describe 'Pipeline', :js do pipeline: pipeline, stage: 'deploy', name: 'manual-build') end + let!(:build_scheduled) do + create(:ci_build, :scheduled, + pipeline: pipeline, stage: 'deploy', name: 'delayed-job') + end + let!(:build_external) do create(:generic_commit_status, status: 'success', pipeline: pipeline, @@ -105,6 +110,25 @@ describe 'Pipeline', :js do end end + context 'when pipeline has scheduled builds' do + it 'shows the scheduled icon and a unschedule action for the scheduled build' do + page.within('#ci-badge-delayed-job') do + expect(page).to have_selector('.js-ci-status-icon-scheduled') + expect(page).to have_content('delayed-job') + end + + page.within('#ci-badge-delayed-job .ci-action-icon-container.js-icon-time-out') do + expect(page).to have_selector('svg') + end + end + + it 'should be possible to unschedule the scheduled job' do + find('#ci-badge-delayed-job .ci-action-icon-container').click + + expect(page).not_to have_content('Unschedule job') + end + end + context 'when pipeline has failed builds' do it 'shows the failed icon and a retry action for the failed build' do page.within('#ci-badge-test') do @@ -315,6 +339,16 @@ describe 'Pipeline', :js do it { expect(build_manual.reload).to be_pending } end + context 'unscheduling scheduled job' do + before do + within '.pipeline-holder' do + click_link('Unschedule') + end + end + + it { expect(build_scheduled.reload).to be_manual } + end + context 'failed jobs' do it 'displays a tooltip with the failure reason' do page.within('.ci-table') do diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb index 41822babbc9..43f9608e8e3 100644 --- a/spec/features/projects/pipelines/pipelines_spec.rb +++ b/spec/features/projects/pipelines/pipelines_spec.rb @@ -232,6 +232,43 @@ describe 'Pipelines', :js do end end + context 'with delayed job' do + let!(:delayed_job) do + create(:ci_build, :scheduled, + pipeline: pipeline, + name: 'delayed job', + stage: 'test', + commands: 'test') + end + + before do + visit_project_pipelines + end + + it 'has a dropdown with play button' do + expect(page).to have_selector('.dropdown-new.btn.btn-default .icon-play') + end + + it 'has link to the scheduled action' do + find('.js-pipeline-dropdown-manual-actions').click + + expect(page).to have_button('delayed job') + end + + context 'when scheduled action was played' do + before do + accept_confirm do + find('.js-pipeline-dropdown-manual-actions').click + click_button('delayed job') + end + end + + it 'enqueues scheduled action job' do + expect(page).to have_selector('.js-pipeline-dropdown-manual-actions:disabled') + end + end + end + context 'for generic statuses' do context 'when running' do let!(:running) do -- cgit v1.2.1 From 1ee06e30890a54e5112133967ea750429875c40b Mon Sep 17 00:00:00 2001 From: sliaquat Date: Wed, 3 Oct 2018 13:12:25 +0500 Subject: Add element classes used in ee branch qa-257-group-saml-sso --- app/views/layouts/nav/sidebar/_group.html.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/layouts/nav/sidebar/_group.html.haml b/app/views/layouts/nav/sidebar/_group.html.haml index 43170587797..4aa22138498 100644 --- a/app/views/layouts/nav/sidebar/_group.html.haml +++ b/app/views/layouts/nav/sidebar/_group.html.haml @@ -10,7 +10,7 @@ = group_icon(@group, class: "avatar s40 avatar-tile") .sidebar-context-title = @group.name - %ul.sidebar-top-level-items + %ul.sidebar-top-level-items.qa-group-sidebar - if group_sidebar_link?(:overview) = nav_link(path: ['groups#show', 'groups#activity', 'groups#subgroups', 'analytics#show'], html_options: { class: 'home' }) do = link_to group_path(@group) do @@ -109,9 +109,9 @@ = link_to edit_group_path(@group) do .nav-icon-container = sprite_icon('settings') - %span.nav-item-name.qa-settings-item + %span.nav-item-name.qa-group-settings-item = _('Settings') - %ul.sidebar-sub-level-items + %ul.sidebar-sub-level-items.qa-group-sidebar-submenu = nav_link(path: %w[groups#projects groups#edit badges#index ci_cd#show], html_options: { class: "fly-out-top-item" } ) do = link_to edit_group_path(@group) do %strong.fly-out-top-item-name -- cgit v1.2.1 From 38f3d59fd0b2dd4eef5c94512ea6216a0e5d56b5 Mon Sep 17 00:00:00 2001 From: Chantal Rollison Date: Wed, 3 Oct 2018 08:15:00 +0000 Subject: #13650 added wip search functionality and tests --- .../javascripts/filtered_search/dropdown_hint.js | 6 ++- .../javascripts/filtered_search/dropdown_utils.js | 4 +- .../filtered_search_dropdown_manager.js | 17 +++++-- .../filtered_search/filtered_search_manager.js | 40 +++++++++++---- .../filtered_search/filtered_search_token_keys.js | 27 ++++++++++ .../filtered_search_visual_tokens.js | 54 ++++++++++++++++---- .../pages/groups/merge_requests/index.js | 2 + .../pages/projects/merge_requests/index/index.js | 3 ++ app/finders/merge_requests_finder.rb | 27 +++++++++- app/models/merge_request.rb | 2 +- app/views/shared/issuable/_search_bar.html.haml | 28 +++++++---- changelogs/unreleased/ccr-wip_filter.yml | 5 ++ doc/api/merge_requests.md | 1 + .../img/filter_wip_merge_requests.png | Bin 0 -> 17346 bytes .../work_in_progress_merge_requests.md | 11 +++- lib/api/merge_requests.rb | 2 +- .../issues/filtered_search/dropdown_hint_spec.rb | 18 +++++++ spec/finders/merge_requests_finder_spec.rb | 56 +++++++++++++++++---- .../filtered_search/dropdown_utils_spec.js | 5 +- .../filtered_search_visual_tokens_spec.js | 8 ++- spec/models/merge_request_spec.rb | 2 +- spec/requests/api/merge_requests_spec.rb | 38 ++++++++++++++ 22 files changed, 300 insertions(+), 56 deletions(-) create mode 100644 changelogs/unreleased/ccr-wip_filter.yml create mode 100644 doc/user/project/merge_requests/img/filter_wip_merge_requests.png diff --git a/app/assets/javascripts/filtered_search/dropdown_hint.js b/app/assets/javascripts/filtered_search/dropdown_hint.js index 8aecf9725e6..c568f4e4ebf 100644 --- a/app/assets/javascripts/filtered_search/dropdown_hint.js +++ b/app/assets/javascripts/filtered_search/dropdown_hint.js @@ -51,7 +51,11 @@ export default class DropdownHint extends FilteredSearchDropdown { FilteredSearchVisualTokens.addSearchVisualToken(searchTerms.join(' ')); } - FilteredSearchDropdownManager.addWordToInput(token.replace(':', ''), '', false, this.container); + const key = token.replace(':', ''); + const { uppercaseTokenName } = this.tokenKeys.searchByKey(key); + FilteredSearchDropdownManager.addWordToInput(key, '', false, { + uppercaseTokenName, + }); } this.dismissDropdown(); this.dispatchInputEvent(); diff --git a/app/assets/javascripts/filtered_search/dropdown_utils.js b/app/assets/javascripts/filtered_search/dropdown_utils.js index 27fff488603..6da6ca10008 100644 --- a/app/assets/javascripts/filtered_search/dropdown_utils.js +++ b/app/assets/javascripts/filtered_search/dropdown_utils.js @@ -143,7 +143,9 @@ export default class DropdownUtils { const dataValue = selected.getAttribute('data-value'); if (dataValue) { - FilteredSearchDropdownManager.addWordToInput(filter, dataValue, true); + FilteredSearchDropdownManager.addWordToInput(filter, dataValue, true, { + capitalizeTokenValue: selected.hasAttribute('data-capitalize'), + }); } // Return boolean based on whether it was set diff --git a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js index 207616b9de2..cd3d532c958 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js +++ b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js @@ -91,6 +91,11 @@ export default class FilteredSearchDropdownManager { gl: DropdownEmoji, element: this.container.querySelector('#js-dropdown-my-reaction'), }, + wip: { + reference: null, + gl: DropdownNonUser, + element: this.container.querySelector('#js-dropdown-wip'), + }, status: { reference: null, gl: NullDropdown, @@ -136,10 +141,16 @@ export default class FilteredSearchDropdownManager { return endpoint; } - static addWordToInput(tokenName, tokenValue = '', clicked = false) { + static addWordToInput(tokenName, tokenValue = '', clicked = false, options = {}) { + const { + uppercaseTokenName = false, + capitalizeTokenValue = false, + } = options; const input = FilteredSearchContainer.container.querySelector('.filtered-search'); - - FilteredSearchVisualTokens.addFilterVisualToken(tokenName, tokenValue); + FilteredSearchVisualTokens.addFilterVisualToken(tokenName, tokenValue, { + uppercaseTokenName, + capitalizeTokenValue, + }); input.value = ''; if (clicked) { diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js b/app/assets/javascripts/filtered_search/filtered_search_manager.js index d25f6f95b22..54533ebb70d 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_manager.js +++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js @@ -405,7 +405,10 @@ export default class FilteredSearchManager { if (isLastVisualTokenValid) { tokens.forEach((t) => { input.value = input.value.replace(`${t.key}:${t.symbol}${t.value}`, ''); - FilteredSearchVisualTokens.addFilterVisualToken(t.key, `${t.symbol}${t.value}`); + FilteredSearchVisualTokens.addFilterVisualToken(t.key, `${t.symbol}${t.value}`, { + uppercaseTokenName: this.filteredSearchTokenKeys.shouldUppercaseTokenName(t.key), + capitalizeTokenValue: this.filteredSearchTokenKeys.shouldCapitalizeTokenValue(t.key), + }); }); const fragments = searchToken.split(':'); @@ -421,7 +424,10 @@ export default class FilteredSearchManager { FilteredSearchVisualTokens.addSearchVisualToken(searchTerms); } - FilteredSearchVisualTokens.addFilterVisualToken(tokenKey); + FilteredSearchVisualTokens.addFilterVisualToken(tokenKey, null, { + uppercaseTokenName: this.filteredSearchTokenKeys.shouldUppercaseTokenName(tokenKey), + capitalizeTokenValue: this.filteredSearchTokenKeys.shouldCapitalizeTokenValue(tokenKey), + }); input.value = input.value.replace(`${tokenKey}:`, ''); } } else { @@ -429,7 +435,10 @@ export default class FilteredSearchManager { const valueCompletedRegex = /([~%@]{0,1}".+")|([~%@]{0,1}'.+')|^((?![~%@]')(?![~%@]")(?!')(?!")).*/g; if (searchToken.match(valueCompletedRegex) && input.value[input.value.length - 1] === ' ') { - FilteredSearchVisualTokens.addFilterVisualToken(searchToken); + const tokenKey = FilteredSearchVisualTokens.getLastTokenPartial(); + FilteredSearchVisualTokens.addFilterVisualToken(searchToken, null, { + capitalizeTokenValue: this.filteredSearchTokenKeys.shouldCapitalizeTokenValue(tokenKey), + }); // Trim the last space as seen in the if statement above input.value = input.value.replace(searchToken, '').trim(); @@ -480,7 +489,7 @@ export default class FilteredSearchManager { FilteredSearchVisualTokens.addFilterVisualToken( condition.tokenKey, condition.value, - canEdit, + { canEdit }, ); } else { // Sanitize value since URL converts spaces into + @@ -506,10 +515,15 @@ export default class FilteredSearchManager { hasFilteredSearch = true; const canEdit = this.canEdit && this.canEdit(sanitizedKey, sanitizedValue); + const { uppercaseTokenName, capitalizeTokenValue } = match; FilteredSearchVisualTokens.addFilterVisualToken( sanitizedKey, `${symbol}${quotationsToUse}${sanitizedValue}${quotationsToUse}`, - canEdit, + { + canEdit, + uppercaseTokenName, + capitalizeTokenValue, + }, ); } else if (!match && keyParam === 'assignee_id') { const id = parseInt(value, 10); @@ -517,7 +531,7 @@ export default class FilteredSearchManager { hasFilteredSearch = true; const tokenName = 'assignee'; const canEdit = this.canEdit && this.canEdit(tokenName); - FilteredSearchVisualTokens.addFilterVisualToken(tokenName, `@${usernameParams[id]}`, canEdit); + FilteredSearchVisualTokens.addFilterVisualToken(tokenName, `@${usernameParams[id]}`, { canEdit }); } } else if (!match && keyParam === 'author_id') { const id = parseInt(value, 10); @@ -525,7 +539,7 @@ export default class FilteredSearchManager { hasFilteredSearch = true; const tokenName = 'author'; const canEdit = this.canEdit && this.canEdit(tokenName); - FilteredSearchVisualTokens.addFilterVisualToken(tokenName, `@${usernameParams[id]}`, canEdit); + FilteredSearchVisualTokens.addFilterVisualToken(tokenName, `@${usernameParams[id]}`, { canEdit }); } } else if (!match && keyParam === 'search') { hasFilteredSearch = true; @@ -561,15 +575,17 @@ export default class FilteredSearchManager { this.saveCurrentSearchQuery(); - const { tokens, searchToken } - = this.tokenizer.processTokens(searchQuery, this.filteredSearchTokenKeys.getKeys()); + const tokenKeys = this.filteredSearchTokenKeys.getKeys(); + const { tokens, searchToken } = this.tokenizer.processTokens(searchQuery, tokenKeys); const currentState = state || getParameterByName('state') || 'opened'; paths.push(`state=${currentState}`); tokens.forEach((token) => { const condition = this.filteredSearchTokenKeys .searchByConditionKeyValue(token.key, token.value.toLowerCase()); - const { param } = this.filteredSearchTokenKeys.searchByKey(token.key) || {}; + const tokenConfig = this.filteredSearchTokenKeys.searchByKey(token.key) || {}; + const { param } = tokenConfig; + // Replace hyphen with underscore to use as request parameter // e.g. 'my-reaction' => 'my_reaction' const underscoredKey = token.key.replace('-', '_'); @@ -581,6 +597,10 @@ export default class FilteredSearchManager { } else { let tokenValue = token.value; + if (tokenConfig.lowercaseValueOnSubmit) { + tokenValue = tokenValue.toLowerCase(); + } + if ((tokenValue[0] === '\'' && tokenValue[tokenValue.length - 1] === '\'') || (tokenValue[0] === '"' && tokenValue[tokenValue.length - 1] === '"')) { tokenValue = tokenValue.slice(1, tokenValue.length - 1); diff --git a/app/assets/javascripts/filtered_search/filtered_search_token_keys.js b/app/assets/javascripts/filtered_search/filtered_search_token_keys.js index 5d131b396a0..a09ad3e4758 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_token_keys.js +++ b/app/assets/javascripts/filtered_search/filtered_search_token_keys.js @@ -23,6 +23,16 @@ export default class FilteredSearchTokenKeys { return this.conditions; } + shouldUppercaseTokenName(tokenKey) { + const token = this.searchByKey(tokenKey.toLowerCase()); + return token && token.uppercaseTokenName; + } + + shouldCapitalizeTokenValue(tokenKey) { + const token = this.searchByKey(tokenKey.toLowerCase()); + return token && token.capitalizeTokenValue; + } + searchByKey(key) { return this.tokenKeys.find(tokenKey => tokenKey.key === key) || null; } @@ -55,4 +65,21 @@ export default class FilteredSearchTokenKeys { return this.conditions .find(condition => condition.tokenKey === key && condition.value === value) || null; } + + addExtraTokensForMergeRequests() { + const wipToken = { + key: 'wip', + type: 'string', + param: '', + symbol: '', + icon: 'admin', + tag: 'Yes or No', + lowercaseValueOnSubmit: true, + uppercaseTokenName: true, + capitalizeTokenValue: true, + }; + + this.tokenKeys.push(wipToken); + this.tokenKeysWithAlternative.push(wipToken); + } } diff --git a/app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js b/app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js index 56fe1ab4e90..0854c1822fb 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js +++ b/app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js @@ -55,12 +55,18 @@ export default class FilteredSearchVisualTokens { } } - static createVisualTokenElementHTML(canEdit = true) { + static createVisualTokenElementHTML(options = {}) { + const { + canEdit = true, + uppercaseTokenName = false, + capitalizeTokenValue = false, + } = options; + return `
-
+
-
+
@@ -182,16 +188,26 @@ export default class FilteredSearchVisualTokens { } } - static addVisualTokenElement(name, value, isSearchTerm, canEdit) { + static addVisualTokenElement(name, value, options = {}) { + const { + isSearchTerm = false, + canEdit, + uppercaseTokenName, + capitalizeTokenValue, + } = options; const li = document.createElement('li'); li.classList.add('js-visual-token'); li.classList.add(isSearchTerm ? 'filtered-search-term' : 'filtered-search-token'); if (value) { - li.innerHTML = FilteredSearchVisualTokens.createVisualTokenElementHTML(canEdit); + li.innerHTML = FilteredSearchVisualTokens.createVisualTokenElementHTML({ + canEdit, + uppercaseTokenName, + capitalizeTokenValue, + }); FilteredSearchVisualTokens.renderVisualTokenValue(li, name, value); } else { - li.innerHTML = '
'; + li.innerHTML = `
`; } li.querySelector('.name').innerText = name; @@ -212,20 +228,32 @@ export default class FilteredSearchVisualTokens { } } - static addFilterVisualToken(tokenName, tokenValue, canEdit) { + static addFilterVisualToken(tokenName, tokenValue, { + canEdit, + uppercaseTokenName = false, + capitalizeTokenValue = false, + } = {}) { const { lastVisualToken, isLastVisualTokenValid } = FilteredSearchVisualTokens.getLastVisualTokenBeforeInput(); const { addVisualTokenElement } = FilteredSearchVisualTokens; if (isLastVisualTokenValid) { - addVisualTokenElement(tokenName, tokenValue, false, canEdit); + addVisualTokenElement(tokenName, tokenValue, { + canEdit, + uppercaseTokenName, + capitalizeTokenValue, + }); } else { const previousTokenName = lastVisualToken.querySelector('.name').innerText; const tokensContainer = FilteredSearchContainer.container.querySelector('.tokens-container'); tokensContainer.removeChild(lastVisualToken); const value = tokenValue || tokenName; - addVisualTokenElement(previousTokenName, value, false, canEdit); + addVisualTokenElement(previousTokenName, value, { + canEdit, + uppercaseTokenName, + capitalizeTokenValue, + }); } } @@ -235,7 +263,9 @@ export default class FilteredSearchVisualTokens { if (lastVisualToken && lastVisualToken.classList.contains('filtered-search-term')) { lastVisualToken.querySelector('.name').innerText += ` ${searchTerm}`; } else { - FilteredSearchVisualTokens.addVisualTokenElement(searchTerm, null, true); + FilteredSearchVisualTokens.addVisualTokenElement(searchTerm, null, { + isSearchTerm: true, + }); } } @@ -306,7 +336,9 @@ export default class FilteredSearchVisualTokens { let value; if (token.classList.contains('filtered-search-token')) { - FilteredSearchVisualTokens.addFilterVisualToken(nameElement.innerText); + FilteredSearchVisualTokens.addFilterVisualToken(nameElement.innerText, null, { + uppercaseTokenName: nameElement.classList.contains('text-uppercase'), + }); const valueContainerElement = token.querySelector('.value-container'); value = valueContainerElement.dataset.originalValue; diff --git a/app/assets/javascripts/pages/groups/merge_requests/index.js b/app/assets/javascripts/pages/groups/merge_requests/index.js index b798a254459..339ce67438a 100644 --- a/app/assets/javascripts/pages/groups/merge_requests/index.js +++ b/app/assets/javascripts/pages/groups/merge_requests/index.js @@ -4,6 +4,8 @@ import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered import { FILTERED_SEARCH } from '~/pages/constants'; document.addEventListener('DOMContentLoaded', () => { + IssuableFilteredSearchTokenKeys.addExtraTokensForMergeRequests(); + initFilteredSearch({ page: FILTERED_SEARCH.MERGE_REQUESTS, isGroupDecendent: true, diff --git a/app/assets/javascripts/pages/projects/merge_requests/index/index.js b/app/assets/javascripts/pages/projects/merge_requests/index/index.js index 3647048a872..ec39db12e74 100644 --- a/app/assets/javascripts/pages/projects/merge_requests/index/index.js +++ b/app/assets/javascripts/pages/projects/merge_requests/index/index.js @@ -7,10 +7,13 @@ import { FILTERED_SEARCH } from '~/pages/constants'; import { ISSUABLE_INDEX } from '~/pages/projects/constants'; document.addEventListener('DOMContentLoaded', () => { + IssuableFilteredSearchTokenKeys.addExtraTokensForMergeRequests(); + initFilteredSearch({ page: FILTERED_SEARCH.MERGE_REQUESTS, filteredSearchTokenKeys: IssuableFilteredSearchTokenKeys, }); + new IssuableIndex(ISSUABLE_INDEX.MERGE_REQUEST); // eslint-disable-line no-new new ShortcutsNavigation(); // eslint-disable-line no-new new UsersSelect(); // eslint-disable-line no-new diff --git a/app/finders/merge_requests_finder.rb b/app/finders/merge_requests_finder.rb index b698a3c7b09..50c051c3aa1 100644 --- a/app/finders/merge_requests_finder.rb +++ b/app/finders/merge_requests_finder.rb @@ -27,13 +27,17 @@ # updated_before: datetime # class MergeRequestsFinder < IssuableFinder + def self.scalar_params + @scalar_params ||= super + [:wip] + end + def klass MergeRequest end def filter_items(_items) items = by_source_branch(super) - + items = by_wip(items) by_target_branch(items) end @@ -61,5 +65,24 @@ class MergeRequestsFinder < IssuableFinder items.where(target_branch: target_branch) end - # rubocop: enable CodeReuse/ActiveRecord + + def item_project_ids(items) + items&.reorder(nil)&.select(:target_project_id) + end + + def by_wip(items) + if params[:wip] == 'yes' + items.where(wip_match(items.arel_table)) + elsif params[:wip] == 'no' + items.where.not(wip_match(items.arel_table)) + else + items + end + end + + def wip_match(table) + table[:title].matches('WIP:%') + .or(table[:title].matches('WIP %')) + .or(table[:title].matches('[WIP]%')) + end end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 0481a4a3d28..6559f94a696 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -261,7 +261,7 @@ class MergeRequest < ActiveRecord::Base end end - WIP_REGEX = /\A\s*(\[WIP\]\s*|WIP:\s*|WIP\s+)+\s*/i.freeze + WIP_REGEX = /\A*(\[WIP\]\s*|WIP:\s*|WIP\s+)+\s*/i.freeze def self.work_in_progress?(title) !!(title =~ WIP_REGEX) diff --git a/app/views/shared/issuable/_search_bar.html.haml b/app/views/shared/issuable/_search_bar.html.haml index 659e03fd67d..c4d177361e7 100644 --- a/app/views/shared/issuable/_search_bar.html.haml +++ b/app/views/shared/issuable/_search_bar.html.haml @@ -33,13 +33,13 @@ #js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown %ul{ data: { dropdown: true } } %li.filter-dropdown-item{ data: { action: 'submit' } } - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } = sprite_icon('search') %span Press Enter or click to search %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %li.filter-dropdown-item - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } -# Encapsulate static class name `{{icon}}` inside #{} to bypass -# haml lint's ClassAttributeWithStaticValue %svg @@ -60,7 +60,7 @@ #js-dropdown-assignee.filtered-search-input-dropdown-menu.dropdown-menu %ul{ data: { dropdown: true } } %li.filter-dropdown-item{ data: { value: 'none' } } - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } No Assignee %li.divider.droplab-item-ignore - if current_user @@ -73,38 +73,46 @@ #js-dropdown-milestone.filtered-search-input-dropdown-menu.dropdown-menu %ul{ data: { dropdown: true } } %li.filter-dropdown-item{ data: { value: 'none' } } - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } No Milestone %li.filter-dropdown-item{ data: { value: 'upcoming' } } - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } Upcoming %li.filter-dropdown-item{ 'data-value' => 'started' } - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } Started %li.divider.droplab-item-ignore %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %li.filter-dropdown-item - %button.btn.btn-link.js-data-value + %button.btn.btn-link.js-data-value{ type: 'button' } {{title}} #js-dropdown-label.filtered-search-input-dropdown-menu.dropdown-menu %ul{ data: { dropdown: true } } %li.filter-dropdown-item{ data: { value: 'none' } } - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } No Label %li.divider.droplab-item-ignore %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %li.filter-dropdown-item - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } %span.dropdown-label-box{ style: 'background: {{color}}' } %span.label-title.js-data-value {{title}} #js-dropdown-my-reaction.filtered-search-input-dropdown-menu.dropdown-menu %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %li.filter-dropdown-item - %button.btn.btn-link + %button.btn.btn-link{ type: 'button' } %gl-emoji %span.js-data-value.prepend-left-10 {{name}} + #js-dropdown-wip.filtered-search-input-dropdown-menu.dropdown-menu + %ul.filter-dropdown{ data: { dropdown: true } } + %li.filter-dropdown-item{ data: { value: 'yes', capitalize: true } } + %button.btn.btn-link{ type: 'button' } + = _('Yes') + %li.filter-dropdown-item{ data: { value: 'no', capitalize: true } } + %button.btn.btn-link{ type: 'button' } + = _('No') = render_if_exists 'shared/issuable/filter_weight', type: type diff --git a/changelogs/unreleased/ccr-wip_filter.yml b/changelogs/unreleased/ccr-wip_filter.yml new file mode 100644 index 00000000000..07d85ec02ae --- /dev/null +++ b/changelogs/unreleased/ccr-wip_filter.yml @@ -0,0 +1,5 @@ +--- +title: Added search functionality for Work In Progress (WIP) merge requests +merge_request: 18119 +author: Chantal Rollison +type: added diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md index 4c099581f07..b37e7698ab4 100644 --- a/doc/api/merge_requests.md +++ b/doc/api/merge_requests.md @@ -47,6 +47,7 @@ Parameters: | `source_branch` | string | no | Return merge requests with the given source branch | | `target_branch` | string | no | Return merge requests with the given target branch | | `search` | string | no | Search merge requests against their `title` and `description` | +| `wip` | string | no | Filter merge requests against their `wip` status. `yes` to return *only* WIP merge requests, `no` to return *non* WIP merge requests | ```json [ diff --git a/doc/user/project/merge_requests/img/filter_wip_merge_requests.png b/doc/user/project/merge_requests/img/filter_wip_merge_requests.png new file mode 100644 index 00000000000..40913718385 Binary files /dev/null and b/doc/user/project/merge_requests/img/filter_wip_merge_requests.png differ diff --git a/doc/user/project/merge_requests/work_in_progress_merge_requests.md b/doc/user/project/merge_requests/work_in_progress_merge_requests.md index f01da06fa6e..66ac7740157 100644 --- a/doc/user/project/merge_requests/work_in_progress_merge_requests.md +++ b/doc/user/project/merge_requests/work_in_progress_merge_requests.md @@ -7,7 +7,7 @@ have been marked a **Work In Progress**. ![Blocked Accept Button](img/wip_blocked_accept_button.png) To mark a merge request a Work In Progress, simply start its title with `[WIP]` -or `WIP:`. As an alternative, you're also able to do it by sending a commit +or `WIP:`. As an alternative, you're also able to do it by sending a commit with its title starting with `wip` or `WIP` to the merge request's source branch. ![Mark as WIP](img/wip_mark_as_wip.png) @@ -15,4 +15,11 @@ with its title starting with `wip` or `WIP` to the merge request's source branch To allow a Work In Progress merge request to be accepted again when it's ready, simply remove the `WIP` prefix. -![Unark as WIP](img/wip_unmark_as_wip.png) +![Unmark as WIP](img/wip_unmark_as_wip.png) + +## Filtering merge requests with WIP Status + +To filter merge requests with the `WIP` status, you can type `wip` +and select the value for your filter from the merge request search input. + +![Filter WIP MRs](img/filter_wip_merge_requests.png) diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 764905ca00f..440d94ae186 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -33,7 +33,6 @@ module API # rubocop: disable CodeReuse/ActiveRecord def find_merge_requests(args = {}) args = declared_params.merge(args) - args[:milestone_title] = args.delete(:milestone) args[:label_name] = args.delete(:labels) args[:scope] = args[:scope].underscore if args[:scope] @@ -97,6 +96,7 @@ module API optional :source_branch, type: String, desc: 'Return merge requests with the given source branch' optional :target_branch, type: String, desc: 'Return merge requests with the given target branch' optional :search, type: String, desc: 'Search merge requests for text present in the title or description' + optional :wip, type: String, values: %w[yes no], desc: 'Search merge requests for WIP in the title' use :pagination end end diff --git a/spec/features/issues/filtered_search/dropdown_hint_spec.rb b/spec/features/issues/filtered_search/dropdown_hint_spec.rb index b99c5a7f4e3..0e296ab2109 100644 --- a/spec/features/issues/filtered_search/dropdown_hint_spec.rb +++ b/spec/features/issues/filtered_search/dropdown_hint_spec.rb @@ -15,6 +15,7 @@ describe 'Dropdown hint', :js do before do project.add_maintainer(user) create(:issue, project: project) + create(:merge_request, source_project: project, target_project: project) end context 'when user not logged in' do @@ -224,4 +225,21 @@ describe 'Dropdown hint', :js do end end end + + context 'merge request page' do + before do + sign_in(user) + visit project_merge_requests_path(project) + filtered_search.click + end + + it 'shows the WIP menu item and opens the WIP options dropdown' do + click_hint('wip') + + expect(page).to have_css(js_dropdown_hint, visible: false) + expect(page).to have_css('#js-dropdown-wip', visible: true) + expect_tokens([{ name: 'wip' }]) + expect_filtered_search_input_empty + end + end end diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb index 35d0eeda8f6..33d01697c75 100644 --- a/spec/finders/merge_requests_finder_spec.rb +++ b/spec/finders/merge_requests_finder_spec.rb @@ -16,12 +16,18 @@ describe MergeRequestsFinder do p end let(:project4) { create(:project, :public, group: subgroup) } + let(:project5) { create(:project, :public, group: subgroup) } + let(:project6) { create(:project, :public, group: subgroup) } let!(:merge_request1) { create(:merge_request, :simple, author: user, source_project: project2, target_project: project1) } let!(:merge_request2) { create(:merge_request, :conflict, author: user, source_project: project2, target_project: project1, state: 'closed') } - let!(:merge_request3) { create(:merge_request, :simple, author: user, source_project: project2, target_project: project2, state: 'locked') } - let!(:merge_request4) { create(:merge_request, :simple, author: user, source_project: project3, target_project: project3) } - let!(:merge_request5) { create(:merge_request, :simple, author: user, source_project: project4, target_project: project4) } + let!(:merge_request3) { create(:merge_request, :simple, author: user, source_project: project2, target_project: project2, state: 'locked', title: 'thing WIP thing') } + let!(:merge_request4) { create(:merge_request, :simple, author: user, source_project: project3, target_project: project3, title: 'WIP thing') } + let!(:merge_request5) { create(:merge_request, :simple, author: user, source_project: project4, target_project: project4, title: '[WIP]') } + let!(:merge_request6) { create(:merge_request, :simple, author: user, source_project: project5, target_project: project5, title: 'WIP: thing') } + let!(:merge_request7) { create(:merge_request, :simple, author: user, source_project: project6, target_project: project6, title: 'wip thing') } + let!(:merge_request8) { create(:merge_request, :simple, author: user, source_project: project1, target_project: project1, title: '[wip] thing') } + let!(:merge_request9) { create(:merge_request, :simple, author: user, source_project: project1, target_project: project2, title: 'wip: thing') } before do project1.add_maintainer(user) @@ -29,19 +35,21 @@ describe MergeRequestsFinder do project3.add_developer(user) project2.add_developer(user2) project4.add_developer(user) + project5.add_developer(user) + project6.add_developer(user) end describe "#execute" do it 'filters by scope' do params = { scope: 'authored', state: 'opened' } merge_requests = described_class.new(user, params).execute - expect(merge_requests.size).to eq(3) + expect(merge_requests.size).to eq(7) end it 'filters by project' do params = { project_id: project1.id, scope: 'authored', state: 'opened' } merge_requests = described_class.new(user, params).execute - expect(merge_requests.size).to eq(1) + expect(merge_requests.size).to eq(2) end it 'filters by group' do @@ -49,7 +57,7 @@ describe MergeRequestsFinder do merge_requests = described_class.new(user, params).execute - expect(merge_requests.size).to eq(2) + expect(merge_requests.size).to eq(3) end it 'filters by group including subgroups', :nested_groups do @@ -57,13 +65,13 @@ describe MergeRequestsFinder do merge_requests = described_class.new(user, params).execute - expect(merge_requests.size).to eq(3) + expect(merge_requests.size).to eq(6) end it 'filters by non_archived' do params = { non_archived: true } merge_requests = described_class.new(user, params).execute - expect(merge_requests.size).to eq(4) + expect(merge_requests.size).to eq(8) end it 'filters by iid' do @@ -98,6 +106,36 @@ describe MergeRequestsFinder do expect(merge_requests).to contain_exactly(merge_request3) end + it 'filters by wip' do + params = { wip: 'yes' } + + merge_requests = described_class.new(user, params).execute + + expect(merge_requests).to contain_exactly(merge_request4, merge_request5, merge_request6, merge_request7, merge_request8, merge_request9) + end + + it 'filters by not wip' do + params = { wip: 'no' } + + merge_requests = described_class.new(user, params).execute + + expect(merge_requests).to contain_exactly(merge_request1, merge_request2, merge_request3) + end + + it 'returns all items if no valid wip param exists' do + params = { wip: '' } + + merge_requests = described_class.new(user, params).execute + + expect(merge_requests).to contain_exactly(merge_request1, merge_request2, merge_request3, merge_request4, merge_request5, merge_request6, merge_request7, merge_request8, merge_request9) + end + + it 'adds wip to scalar params' do + scalar_params = described_class.scalar_params + + expect(scalar_params).to include(:wip, :assignee_id) + end + context 'filtering by group milestone' do let!(:group) { create(:group, :public) } let(:group_milestone) { create(:milestone, group: group) } @@ -207,7 +245,7 @@ describe MergeRequestsFinder do it 'returns the number of rows for the default state' do finder = described_class.new(user) - expect(finder.row_count).to eq(3) + expect(finder.row_count).to eq(7) end it 'returns the number of rows for a given state' do diff --git a/spec/javascripts/filtered_search/dropdown_utils_spec.js b/spec/javascripts/filtered_search/dropdown_utils_spec.js index 8792e99d461..68bbbf838da 100644 --- a/spec/javascripts/filtered_search/dropdown_utils_spec.js +++ b/spec/javascripts/filtered_search/dropdown_utils_spec.js @@ -288,13 +288,13 @@ describe('Dropdown Utils', () => { describe('setDataValueIfSelected', () => { beforeEach(() => { - spyOn(FilteredSearchDropdownManager, 'addWordToInput') - .and.callFake(() => {}); + spyOn(FilteredSearchDropdownManager, 'addWordToInput').and.callFake(() => {}); }); it('calls addWordToInput when dataValue exists', () => { const selected = { getAttribute: () => 'value', + hasAttribute: () => false, }; DropdownUtils.setDataValueIfSelected(null, selected); @@ -304,6 +304,7 @@ describe('Dropdown Utils', () => { it('returns true when dataValue exists', () => { const selected = { getAttribute: () => 'value', + hasAttribute: () => false, }; const result = DropdownUtils.setDataValueIfSelected(null, selected); diff --git a/spec/javascripts/filtered_search/filtered_search_visual_tokens_spec.js b/spec/javascripts/filtered_search/filtered_search_visual_tokens_spec.js index 756a654765b..53a6d1d62b0 100644 --- a/spec/javascripts/filtered_search/filtered_search_visual_tokens_spec.js +++ b/spec/javascripts/filtered_search/filtered_search_visual_tokens_spec.js @@ -240,13 +240,17 @@ describe('Filtered Search Visual Tokens', () => { beforeEach(() => { setFixtures(`
- ${subject.createVisualTokenElementHTML()} + ${subject.createVisualTokenElementHTML('custom-token')}
`); tokenElement = document.querySelector('.test-area').firstElementChild; }); + it('should add class name to token element', () => { + expect(document.querySelector('.test-area .custom-token')).toBeDefined(); + }); + it('contains name div', () => { expect(tokenElement.querySelector('.name')).toEqual(jasmine.anything()); }); @@ -280,7 +284,7 @@ describe('Filtered Search Visual Tokens', () => { describe('addVisualTokenElement', () => { it('renders search visual tokens', () => { - subject.addVisualTokenElement('search term', null, true); + subject.addVisualTokenElement('search term', null, { isSearchTerm: true }); const token = tokensContainer.querySelector('.js-visual-token'); expect(token.classList.contains('filtered-search-term')).toEqual(true); diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 48f4e53b93e..666d7e69f89 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -746,7 +746,7 @@ describe MergeRequest do end describe "#wipless_title" do - ['WIP ', 'WIP:', 'WIP: ', '[WIP]', '[WIP] ', ' [WIP] WIP [WIP] WIP: WIP '].each do |wip_prefix| + ['WIP ', 'WIP:', 'WIP: ', '[WIP]', '[WIP] ', '[WIP] WIP [WIP] WIP: WIP '].each do |wip_prefix| it "removes the '#{wip_prefix}' prefix" do wipless_title = subject.title subject.title = "#{wip_prefix}#{subject.title}" diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index e987eee6e91..07d19e3ad29 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -81,6 +81,35 @@ describe API::MergeRequests do let(:user2) { create(:user) } it 'returns an array of all merge requests except unauthorized ones' do + get api('/merge_requests', user), scope: :all + + expect(response).to have_gitlab_http_status(200) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.map { |mr| mr['id'] }) + .to contain_exactly(merge_request.id, merge_request_closed.id, merge_request_merged.id, merge_request_locked.id, merge_request2.id) + end + + it "returns an array of no merge_requests when wip=yes" do + get api("/merge_requests", user), wip: 'yes' + + expect(response).to have_gitlab_http_status(200) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + + it "returns an array of no merge_requests when wip=no" do + get api("/merge_requests", user), wip: 'no' + + expect(response).to have_gitlab_http_status(200) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.map { |mr| mr['id'] }) + .to contain_exactly(merge_request.id, merge_request_closed.id, merge_request_merged.id, merge_request_locked.id, merge_request2.id) + end + + it 'does not return unauthorized merge requests' do private_project = create(:project, :private) merge_request3 = create(:merge_request, :simple, source_project: private_project, target_project: private_project, source_branch: 'other-branch') @@ -244,6 +273,15 @@ describe API::MergeRequests do expect(response).to have_gitlab_http_status(404) end + it "returns an array of no merge_requests when wip=yes" do + get api("/projects/#{project.id}/merge_requests", user), wip: 'yes' + + expect(response).to have_gitlab_http_status(200) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + it 'returns merge_request by "iids" array' do get api(endpoint_path, user), iids: [merge_request.iid, merge_request_closed.iid] -- cgit v1.2.1 From 8c1568d9766c674054f90af0816dbeebcdb8e2ce Mon Sep 17 00:00:00 2001 From: George Tsiolis Date: Wed, 3 Oct 2018 08:31:03 +0000 Subject: Add copy to clipboard button for application id and secret --- app/assets/stylesheets/pages/commits.scss | 1 + app/views/admin/applications/show.html.haml | 21 ++++++++++++++------- app/views/doorkeeper/applications/show.html.haml | 19 +++++++++++++------ ...lipboard-button-to-application-id-and-secret.yml | 5 +++++ locale/gitlab.pot | 13 ++++++++----- .../admin/admin_manage_applications_spec.rb | 4 ++-- .../profiles/user_manages_applications_spec.rb | 4 ++-- 7 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 changelogs/unreleased/add-clipboard-button-to-application-id-and-secret.yml diff --git a/app/assets/stylesheets/pages/commits.scss b/app/assets/stylesheets/pages/commits.scss index 10764e0f3df..628a4ca38da 100644 --- a/app/assets/stylesheets/pages/commits.scss +++ b/app/assets/stylesheets/pages/commits.scss @@ -223,6 +223,7 @@ } } +.clipboard-group, .commit-sha-group { display: inline-flex; diff --git a/app/views/admin/applications/show.html.haml b/app/views/admin/applications/show.html.haml index 593a6d816e3..e69143abe45 100644 --- a/app/views/admin/applications/show.html.haml +++ b/app/views/admin/applications/show.html.haml @@ -1,4 +1,5 @@ - page_title @application.name, "Applications" + %h3.page-title Application: #{@application.name} @@ -6,23 +7,29 @@ %table.table %tr %td - Application Id + = _('Application ID') %td - %code#application_id= @application.uid + .clipboard-group + .input-group + %input.label.label-monospace{ id: "application_id", type: "text", autocomplete: 'off', value: @application.uid, readonly: true } + .input-group-append + = clipboard_button(target: '#application_id', title: _("Copy ID to clipboard"), class: "btn btn btn-default") %tr %td - Secret: + = _('Secret') %td - %code#secret= @application.secret - + .clipboard-group + .input-group + %input.label.label-monospace{ id: "secret", type: "text", autocomplete: 'off', value: @application.secret, readonly: true } + .input-group-append + = clipboard_button(target: '#application_id', title: _("Copy secret to clipboard"), class: "btn btn btn-default") %tr %td - Callback url + = _('Callback URL') %td - @application.redirect_uri.split.each do |uri| %div %span.monospace= uri - %tr %td Trusted diff --git a/app/views/doorkeeper/applications/show.html.haml b/app/views/doorkeeper/applications/show.html.haml index bb76ac6d5f6..776bbc36ec2 100644 --- a/app/views/doorkeeper/applications/show.html.haml +++ b/app/views/doorkeeper/applications/show.html.haml @@ -10,18 +10,25 @@ %table.table %tr %td - = _('Application Id') + = _('Application ID') %td - %code#application_id= @application.uid + .clipboard-group + .input-group + %input.label.label-monospace{ id: "application_id", type: "text", autocomplete: 'off', value: @application.uid, readonly: true } + .input-group-append + = clipboard_button(target: '#application_id', title: _("Copy ID to clipboard"), class: "btn btn btn-default") %tr %td - = _('Secret:') + = _('Secret') %td - %code#secret= @application.secret - + .clipboard-group + .input-group + %input.label.label-monospace{ id: "secret", type: "text", autocomplete: 'off', value: @application.secret, readonly: true } + .input-group-append + = clipboard_button(target: '#application_id', title: _("Copy secret to clipboard"), class: "btn btn btn-default") %tr %td - = _('Callback url') + = _('Callback URL') %td - @application.redirect_uri.split.each do |uri| %div diff --git a/changelogs/unreleased/add-clipboard-button-to-application-id-and-secret.yml b/changelogs/unreleased/add-clipboard-button-to-application-id-and-secret.yml new file mode 100644 index 00000000000..7c707cfe5a0 --- /dev/null +++ b/changelogs/unreleased/add-clipboard-button-to-application-id-and-secret.yml @@ -0,0 +1,5 @@ +--- +title: Add copy to clipboard button for application id and secret +merge_request: 21978 +author: George Tsiolis +type: other diff --git a/locale/gitlab.pot b/locale/gitlab.pot index cc11577b624..646397b7757 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -598,7 +598,7 @@ msgstr "" msgid "Application" msgstr "" -msgid "Application Id" +msgid "Application ID" msgstr "" msgid "Application: %{name}" @@ -1101,9 +1101,6 @@ msgstr "" msgid "Callback URL" msgstr "" -msgid "Callback url" -msgstr "" - msgid "Can't find HEAD commit for this branch" msgstr "" @@ -1930,6 +1927,9 @@ msgstr "" msgid "Copy HTTPS clone URL" msgstr "" +msgid "Copy ID to clipboard" +msgstr "" + msgid "Copy SSH clone URL" msgstr "" @@ -1951,6 +1951,9 @@ msgstr "" msgid "Copy reference to clipboard" msgstr "" +msgid "Copy secret to clipboard" +msgstr "" + msgid "Copy to clipboard" msgstr "" @@ -5318,7 +5321,7 @@ msgstr "" msgid "Seconds to wait for a storage access attempt" msgstr "" -msgid "Secret:" +msgid "Secret" msgstr "" msgid "Select" diff --git a/spec/features/admin/admin_manage_applications_spec.rb b/spec/features/admin/admin_manage_applications_spec.rb index f979d2f6090..a4904272706 100644 --- a/spec/features/admin/admin_manage_applications_spec.rb +++ b/spec/features/admin/admin_manage_applications_spec.rb @@ -16,7 +16,7 @@ RSpec.describe 'admin manage applications' do check :doorkeeper_application_trusted click_on 'Submit' expect(page).to have_content('Application: test') - expect(page).to have_content('Application Id') + expect(page).to have_content('Application ID') expect(page).to have_content('Secret') expect(page).to have_content('Trusted Y') @@ -28,7 +28,7 @@ RSpec.describe 'admin manage applications' do click_on 'Submit' expect(page).to have_content('test_changed') - expect(page).to have_content('Application Id') + expect(page).to have_content('Application ID') expect(page).to have_content('Secret') expect(page).to have_content('Trusted N') diff --git a/spec/features/profiles/user_manages_applications_spec.rb b/spec/features/profiles/user_manages_applications_spec.rb index 387584fef62..34aaab240cc 100644 --- a/spec/features/profiles/user_manages_applications_spec.rb +++ b/spec/features/profiles/user_manages_applications_spec.rb @@ -16,7 +16,7 @@ describe 'User manages applications' do click_on 'Save application' expect(page).to have_content 'Application: test' - expect(page).to have_content 'Application Id' + expect(page).to have_content 'Application ID' expect(page).to have_content 'Secret' click_on 'Edit' @@ -26,7 +26,7 @@ describe 'User manages applications' do click_on 'Save application' expect(page).to have_content 'test_changed' - expect(page).to have_content 'Application Id' + expect(page).to have_content 'Application ID' expect(page).to have_content 'Secret' visit applications_profile_path -- cgit v1.2.1 From 65d7bf20e3b962f7f0db3dbc1dc331ec076a6823 Mon Sep 17 00:00:00 2001 From: Johann Hubert Sonntagbauer Date: Wed, 3 Oct 2018 08:34:13 +0000 Subject: Fix props name casing in time time tracker vue component --- .../time_tracking/sidebar_time_tracking.vue | 8 ++-- .../components/time_tracking/time_tracker.vue | 46 ++++++++-------------- .../javascripts/sidebar/mount_milestone_sidebar.js | 10 +++-- .../components/time_tracking/time_tracker_spec.js | 33 +++++++++------- 4 files changed, 44 insertions(+), 53 deletions(-) diff --git a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue index 2e1d6e9643a..8660b0546cf 100644 --- a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue +++ b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue @@ -51,10 +51,10 @@ export default { diff --git a/app/assets/javascripts/diffs/components/changed_files.vue b/app/assets/javascripts/diffs/components/changed_files.vue deleted file mode 100644 index 97751db1254..00000000000 --- a/app/assets/javascripts/diffs/components/changed_files.vue +++ /dev/null @@ -1,171 +0,0 @@ - - - diff --git a/app/assets/javascripts/diffs/components/changed_files_dropdown.vue b/app/assets/javascripts/diffs/components/changed_files_dropdown.vue deleted file mode 100644 index 0ec6b8b7f21..00000000000 --- a/app/assets/javascripts/diffs/components/changed_files_dropdown.vue +++ /dev/null @@ -1,126 +0,0 @@ - - - diff --git a/app/assets/javascripts/diffs/components/compare_versions.vue b/app/assets/javascripts/diffs/components/compare_versions.vue index 1c9ad8e77f1..9bbf62c0eb6 100644 --- a/app/assets/javascripts/diffs/components/compare_versions.vue +++ b/app/assets/javascripts/diffs/components/compare_versions.vue @@ -1,9 +1,18 @@ diff --git a/app/assets/javascripts/diffs/components/compare_versions_dropdown.vue b/app/assets/javascripts/diffs/components/compare_versions_dropdown.vue index 96cccb49378..c3acc352d5e 100644 --- a/app/assets/javascripts/diffs/components/compare_versions_dropdown.vue +++ b/app/assets/javascripts/diffs/components/compare_versions_dropdown.vue @@ -108,7 +108,7 @@ export default { + + diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue index bcbe374a90c..4e04e50c52a 100644 --- a/app/assets/javascripts/diffs/components/diff_file.vue +++ b/app/assets/javascripts/diffs/components/diff_file.vue @@ -1,5 +1,5 @@ + + + + diff --git a/app/assets/javascripts/diffs/components/tree_list.vue b/app/assets/javascripts/diffs/components/tree_list.vue new file mode 100644 index 00000000000..cfe4273742f --- /dev/null +++ b/app/assets/javascripts/diffs/components/tree_list.vue @@ -0,0 +1,101 @@ + + + diff --git a/app/assets/javascripts/diffs/constants.js b/app/assets/javascripts/diffs/constants.js index 2795dddfc48..6a50d2c1426 100644 --- a/app/assets/javascripts/diffs/constants.js +++ b/app/assets/javascripts/diffs/constants.js @@ -29,3 +29,5 @@ export const LENGTH_OF_AVATAR_TOOLTIP = 17; export const LINES_TO_BE_RENDERED_DIRECTLY = 100; export const MAX_LINES_TO_BE_RENDERED = 2000; + +export const MR_TREE_SHOW_KEY = 'mr_tree_show'; diff --git a/app/assets/javascripts/diffs/mixins/changed_files.js b/app/assets/javascripts/diffs/mixins/changed_files.js deleted file mode 100644 index da1339f0ffa..00000000000 --- a/app/assets/javascripts/diffs/mixins/changed_files.js +++ /dev/null @@ -1,38 +0,0 @@ -export default { - props: { - diffFiles: { - type: Array, - required: true, - }, - }, - methods: { - fileChangedIcon(diffFile) { - if (diffFile.deletedFile) { - return 'file-deletion'; - } else if (diffFile.newFile) { - return 'file-addition'; - } - return 'file-modified'; - }, - fileChangedClass(diffFile) { - if (diffFile.deletedFile) { - return 'cred'; - } else if (diffFile.newFile) { - return 'cgreen'; - } - - return ''; - }, - truncatedDiffPath(path) { - const maxLength = 60; - - if (path.length > maxLength) { - const start = path.length - maxLength; - const end = start + maxLength; - return `...${path.slice(start, end)}`; - } - - return path; - }, - }, -}; diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 98d8d5943f9..1e0b27b538d 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -12,6 +12,7 @@ import { PARALLEL_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE, DIFF_VIEW_COOKIE_NAME, + MR_TREE_SHOW_KEY, } from '../constants'; export const setBaseConfig = ({ commit }, options) => { @@ -195,5 +196,23 @@ export const saveDiffDiscussion = ({ dispatch }, { note, formData }) => { .catch(() => createFlash(s__('MergeRequests|Saving the comment failed'))); }; +export const toggleTreeOpen = ({ commit }, path) => { + commit(types.TOGGLE_FOLDER_OPEN, path); +}; + +export const scrollToFile = ({ state, commit }, path) => { + const { fileHash } = state.treeEntries[path]; + document.location.hash = fileHash; + + commit(types.UPDATE_CURRENT_DIFF_FILE_ID, fileHash); + + setTimeout(() => commit(types.UPDATE_CURRENT_DIFF_FILE_ID, ''), 1000); +}; + +export const toggleShowTreeList = ({ commit, state }) => { + commit(types.TOGGLE_SHOW_TREE_LIST); + localStorage.setItem(MR_TREE_SHOW_KEY, state.showTreeList); +}; + // prevent babel-plugin-rewire from generating an invalid default during karma tests export default () => {}; diff --git a/app/assets/javascripts/diffs/store/getters.js b/app/assets/javascripts/diffs/store/getters.js index 968ba3c5e13..d4c205882ff 100644 --- a/app/assets/javascripts/diffs/store/getters.js +++ b/app/assets/javascripts/diffs/store/getters.js @@ -110,5 +110,9 @@ export const shouldRenderInlineCommentRow = state => line => { export const getDiffFileByHash = state => fileHash => state.diffFiles.find(file => file.fileHash === fileHash); +export const allBlobs = state => Object.values(state.treeEntries).filter(f => f.type === 'blob'); + +export const diffFilesLength = state => state.diffFiles.length; + // prevent babel-plugin-rewire from generating an invalid default during karma tests export default () => {}; diff --git a/app/assets/javascripts/diffs/store/modules/diff_state.js b/app/assets/javascripts/diffs/store/modules/diff_state.js index eb596b251c1..ae8930c8968 100644 --- a/app/assets/javascripts/diffs/store/modules/diff_state.js +++ b/app/assets/javascripts/diffs/store/modules/diff_state.js @@ -1,10 +1,11 @@ import Cookies from 'js-cookie'; import { getParameterValues } from '~/lib/utils/url_utility'; -import { INLINE_DIFF_VIEW_TYPE, DIFF_VIEW_COOKIE_NAME } from '../../constants'; +import { INLINE_DIFF_VIEW_TYPE, DIFF_VIEW_COOKIE_NAME, MR_TREE_SHOW_KEY } from '../../constants'; const viewTypeFromQueryString = getParameterValues('view')[0]; const viewTypeFromCookie = Cookies.get(DIFF_VIEW_COOKIE_NAME); const defaultViewType = INLINE_DIFF_VIEW_TYPE; +const storedTreeShow = localStorage.getItem(MR_TREE_SHOW_KEY); export default () => ({ isLoading: true, @@ -17,4 +18,8 @@ export default () => ({ mergeRequestDiff: null, diffLineCommentForms: {}, diffViewType: viewTypeFromQueryString || viewTypeFromCookie || defaultViewType, + tree: [], + treeEntries: {}, + showTreeList: storedTreeShow === null ? true : storedTreeShow === 'true', + currentDiffFileId: '', }); diff --git a/app/assets/javascripts/diffs/store/mutation_types.js b/app/assets/javascripts/diffs/store/mutation_types.js index f61efbe6e1e..6474ee628e2 100644 --- a/app/assets/javascripts/diffs/store/mutation_types.js +++ b/app/assets/javascripts/diffs/store/mutation_types.js @@ -11,3 +11,6 @@ export const EXPAND_ALL_FILES = 'EXPAND_ALL_FILES'; export const RENDER_FILE = 'RENDER_FILE'; export const SET_LINE_DISCUSSIONS_FOR_FILE = 'SET_LINE_DISCUSSIONS_FOR_FILE'; export const REMOVE_LINE_DISCUSSIONS_FOR_FILE = 'REMOVE_LINE_DISCUSSIONS_FOR_FILE'; +export const TOGGLE_FOLDER_OPEN = 'TOGGLE_FOLDER_OPEN'; +export const TOGGLE_SHOW_TREE_LIST = 'TOGGLE_SHOW_TREE_LIST'; +export const UPDATE_CURRENT_DIFF_FILE_ID = 'UPDATE_CURRENT_DIFF_FILE_ID'; diff --git a/app/assets/javascripts/diffs/store/mutations.js b/app/assets/javascripts/diffs/store/mutations.js index 59a2c09e54f..0b4485ecdb5 100644 --- a/app/assets/javascripts/diffs/store/mutations.js +++ b/app/assets/javascripts/diffs/store/mutations.js @@ -1,5 +1,6 @@ import Vue from 'vue'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; +import { sortTree } from '~/ide/stores/utils'; import { findDiffFile, addLineReferences, @@ -7,6 +8,7 @@ import { addContextLines, prepareDiffData, isDiscussionApplicableToLine, + generateTreeList, } from './utils'; import * as types from './mutation_types'; @@ -23,9 +25,12 @@ export default { [types.SET_DIFF_DATA](state, data) { const diffData = convertObjectPropsToCamelCase(data, { deep: true }); prepareDiffData(diffData); + const { tree, treeEntries } = generateTreeList(diffData.diffFiles); Object.assign(state, { ...diffData, + tree: sortTree(tree), + treeEntries, }); }, @@ -163,4 +168,13 @@ export default { } } }, + [types.TOGGLE_FOLDER_OPEN](state, path) { + state.treeEntries[path].opened = !state.treeEntries[path].opened; + }, + [types.TOGGLE_SHOW_TREE_LIST](state) { + state.showTreeList = !state.showTreeList; + }, + [types.UPDATE_CURRENT_DIFF_FILE_ID](state, fileId) { + state.currentDiffFileId = fileId; + }, }; diff --git a/app/assets/javascripts/diffs/store/utils.js b/app/assets/javascripts/diffs/store/utils.js index 631e3de311e..4ae588042e4 100644 --- a/app/assets/javascripts/diffs/store/utils.js +++ b/app/assets/javascripts/diffs/store/utils.js @@ -267,3 +267,49 @@ export function isDiscussionApplicableToLine({ discussion, diffPosition, latestD return latestDiff && discussion.active && lineCode === discussion.line_code; } + +export const generateTreeList = files => + files.reduce( + (acc, file) => { + const { fileHash, addedLines, removedLines, newFile, deletedFile, newPath } = file; + const split = newPath.split('/'); + + split.forEach((name, i) => { + const parent = acc.treeEntries[split.slice(0, i).join('/')]; + const path = `${parent ? `${parent.path}/` : ''}${name}`; + + if (!acc.treeEntries[path]) { + const type = path === newPath ? 'blob' : 'tree'; + acc.treeEntries[path] = { + key: path, + path, + name, + type, + tree: [], + }; + + const entry = acc.treeEntries[path]; + + if (type === 'blob') { + Object.assign(entry, { + changed: true, + tempFile: newFile, + deleted: deletedFile, + fileHash, + addedLines, + removedLines, + }); + } else { + Object.assign(entry, { + opened: true, + }); + } + + (parent ? parent.tree : acc.tree).push(entry); + } + }); + + return acc; + }, + { treeEntries: {}, tree: [] }, + ); diff --git a/app/assets/javascripts/ide/components/changed_file_icon.vue b/app/assets/javascripts/ide/components/changed_file_icon.vue deleted file mode 100644 index 720ae11aaa6..00000000000 --- a/app/assets/javascripts/ide/components/changed_file_icon.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/app/assets/javascripts/ide/components/commit_sidebar/editor_header.vue b/app/assets/javascripts/ide/components/commit_sidebar/editor_header.vue index 3aca38399fb..b0e60edcbe5 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/editor_header.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/editor_header.vue @@ -3,7 +3,7 @@ import $ from 'jquery'; import { mapActions } from 'vuex'; import { __ } from '~/locale'; import FileIcon from '~/vue_shared/components/file_icon.vue'; -import ChangedFileIcon from '../changed_file_icon.vue'; +import ChangedFileIcon from '~/vue_shared/components/changed_file_icon.vue'; export default { components: { diff --git a/app/assets/javascripts/ide/components/file_finder/item.vue b/app/assets/javascripts/ide/components/file_finder/item.vue index a612739d641..72ce37be63a 100644 --- a/app/assets/javascripts/ide/components/file_finder/item.vue +++ b/app/assets/javascripts/ide/components/file_finder/item.vue @@ -1,7 +1,7 @@ + + + + diff --git a/app/assets/javascripts/vue_shared/components/file_row.vue b/app/assets/javascripts/vue_shared/components/file_row.vue index c797ad62a5d..36a345130c0 100644 --- a/app/assets/javascripts/vue_shared/components/file_row.vue +++ b/app/assets/javascripts/vue_shared/components/file_row.vue @@ -1,12 +1,14 @@ diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a9417369ca2..ee438e160f2 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -366,6 +366,7 @@ class ProjectsController < Projects::ApplicationController repository_access_level snippets_access_level wiki_access_level + pages_access_level ] ] end diff --git a/app/graphql/types/permission_types/project.rb b/app/graphql/types/permission_types/project.rb index 066ce64a254..ab37c282fe5 100644 --- a/app/graphql/types/permission_types/project.rb +++ b/app/graphql/types/permission_types/project.rb @@ -16,7 +16,7 @@ module Types :create_deployment, :push_to_delete_protected_branch, :admin_wiki, :admin_project, :update_pages, :admin_remote_mirror, :create_label, :update_wiki, :destroy_wiki, - :create_pages, :destroy_pages + :create_pages, :destroy_pages, :read_pages_content end end end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 8b17e6ef75d..0016f89db5c 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -454,6 +454,7 @@ module ProjectsHelper buildsAccessLevel: feature.builds_access_level, wikiAccessLevel: feature.wiki_access_level, snippetsAccessLevel: feature.snippets_access_level, + pagesAccessLevel: feature.pages_access_level, containerRegistryEnabled: !!project.container_registry_enabled, lfsEnabled: !!project.lfs_enabled } @@ -468,7 +469,10 @@ module ProjectsHelper registryAvailable: Gitlab.config.registry.enabled, registryHelpPath: help_page_path('user/project/container_registry'), lfsAvailable: Gitlab.config.lfs.enabled, - lfsHelpPath: help_page_path('workflow/lfs/manage_large_binaries_with_git_lfs') + lfsHelpPath: help_page_path('workflow/lfs/manage_large_binaries_with_git_lfs'), + pagesAvailable: Gitlab.config.pages.enabled, + pagesAccessControlEnabled: Gitlab.config.pages.access_control, + pagesHelpPath: help_page_path('user/project/pages/index.md') } end diff --git a/app/models/project.rb b/app/models/project.rb index 59f088156c7..dc2732cc6c2 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -55,8 +55,8 @@ class Project < ActiveRecord::Base cache_markdown_field :description, pipeline: :description delegate :feature_available?, :builds_enabled?, :wiki_enabled?, - :merge_requests_enabled?, :issues_enabled?, to: :project_feature, - allow_nil: true + :merge_requests_enabled?, :issues_enabled?, :pages_enabled?, :public_pages?, + to: :project_feature, allow_nil: true delegate :base_dir, :disk_path, :ensure_storage_path_exists, to: :storage @@ -356,7 +356,7 @@ class Project < ActiveRecord::Base # "enabled" here means "not disabled". It includes private features! scope :with_feature_enabled, ->(feature) { access_level_attribute = ProjectFeature.access_level_attribute(feature) - with_project_feature.where(project_features: { access_level_attribute => [nil, ProjectFeature::PRIVATE, ProjectFeature::ENABLED] }) + with_project_feature.where(project_features: { access_level_attribute => [nil, ProjectFeature::PRIVATE, ProjectFeature::ENABLED, ProjectFeature::PUBLIC] }) } # Picks a feature where the level is exactly that given. @@ -418,15 +418,15 @@ class Project < ActiveRecord::Base end end - # project features may be "disabled", "internal" or "enabled". If "internal", + # project features may be "disabled", "internal", "enabled" or "public". If "internal", # they are only available to team members. This scope returns projects where - # the feature is either enabled, or internal with permission for the user. + # the feature is either public, enabled, or internal with permission for the user. # # This method uses an optimised version of `with_feature_access_level` for # logged in users to more efficiently get private projects with the given # feature. def self.with_feature_available_for_user(feature, user) - visible = [nil, ProjectFeature::ENABLED] + visible = [nil, ProjectFeature::ENABLED, ProjectFeature::PUBLIC] if user&.admin? with_feature_enabled(feature) diff --git a/app/models/project_feature.rb b/app/models/project_feature.rb index 754c2461d23..39f2b8fe0de 100644 --- a/app/models/project_feature.rb +++ b/app/models/project_feature.rb @@ -13,14 +13,16 @@ class ProjectFeature < ActiveRecord::Base # Disabled: not enabled for anyone # Private: enabled only for team members # Enabled: enabled for everyone able to access the project + # Public: enabled for everyone (only allowed for pages) # # Permission levels DISABLED = 0 PRIVATE = 10 ENABLED = 20 + PUBLIC = 30 - FEATURES = %i(issues merge_requests wiki snippets builds repository).freeze + FEATURES = %i(issues merge_requests wiki snippets builds repository pages).freeze class << self def access_level_attribute(feature) @@ -46,6 +48,7 @@ class ProjectFeature < ActiveRecord::Base validates :project, presence: true validate :repository_children_level + validate :allowed_access_levels default_value_for :builds_access_level, value: ENABLED, allows_nil: false default_value_for :issues_access_level, value: ENABLED, allows_nil: false @@ -81,6 +84,16 @@ class ProjectFeature < ActiveRecord::Base issues_access_level > DISABLED end + def pages_enabled? + pages_access_level > DISABLED + end + + def public_pages? + return true unless Gitlab.config.pages.access_control + + pages_access_level == PUBLIC || pages_access_level == ENABLED && project.public? + end + private # Validates builds and merge requests access level @@ -95,6 +108,17 @@ class ProjectFeature < ActiveRecord::Base %i(merge_requests_access_level builds_access_level).each(&validator) end + # Validates access level for other than pages cannot be PUBLIC + def allowed_access_levels + validator = lambda do |field| + level = public_send(field) || ProjectFeature::ENABLED # rubocop:disable GitlabSecurity/PublicSend + not_allowed = level > ProjectFeature::ENABLED + self.errors.add(field, "cannot have public visibility level") if not_allowed + end + + (FEATURES - %i(pages)).each {|f| validator.call("#{f}_access_level")} + end + def get_permission(user, level) case level when DISABLED @@ -103,6 +127,8 @@ class ProjectFeature < ActiveRecord::Base user && (project.team.member?(user) || user.full_private_access?) when ENABLED true + when PUBLIC + true else true end diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb index f2c246cd969..a76a083bceb 100644 --- a/app/policies/project_policy.rb +++ b/app/policies/project_policy.rb @@ -110,6 +110,7 @@ class ProjectPolicy < BasePolicy snippets wiki builds + pages ] features.each do |f| @@ -167,6 +168,7 @@ class ProjectPolicy < BasePolicy enable :upload_file enable :read_cycle_analytics enable :award_emoji + enable :read_pages_content end # These abilities are not allowed to admins that are not members of the project, @@ -286,6 +288,8 @@ class ProjectPolicy < BasePolicy prevent(*create_read_update_admin_destroy(:merge_request)) end + rule { pages_disabled }.prevent :read_pages_content + rule { issues_disabled & merge_requests_disabled }.policy do prevent(*create_read_update_admin_destroy(:label)) prevent(*create_read_update_admin_destroy(:milestone)) @@ -345,6 +349,7 @@ class ProjectPolicy < BasePolicy enable :download_code enable :download_wiki_code enable :read_cycle_analytics + enable :read_pages_content # NOTE: may be overridden by IssuePolicy enable :read_issue diff --git a/app/services/projects/update_pages_configuration_service.rb b/app/services/projects/update_pages_configuration_service.rb index efbd4c7b323..abf40b3ad7a 100644 --- a/app/services/projects/update_pages_configuration_service.rb +++ b/app/services/projects/update_pages_configuration_service.rb @@ -21,7 +21,9 @@ module Projects def pages_config { domains: pages_domains_config, - https_only: project.pages_https_only? + https_only: project.pages_https_only?, + id: project.project_id, + access_control: !project.public_pages? } end @@ -31,7 +33,9 @@ module Projects domain: domain.domain, certificate: domain.certificate, key: domain.key, - https_only: project.pages_https_only? && domain.https? + https_only: project.pages_https_only? && domain.https?, + id: project.project_id, + access_control: !project.public_pages? } end end diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb index d6d9bacf232..f25a4e30938 100644 --- a/app/services/projects/update_service.rb +++ b/app/services/projects/update_service.rb @@ -72,7 +72,11 @@ module Projects system_hook_service.execute_hooks_for(project, :update) end - update_pages_config if changing_pages_https_only? + update_pages_config if changing_pages_related_config? + end + + def changing_pages_related_config? + changing_pages_https_only? || changing_pages_access_level? end def update_failed! @@ -102,6 +106,10 @@ module Projects params.dig(:project_feature_attributes, :wiki_access_level).to_i > ProjectFeature::DISABLED end + def changing_pages_access_level? + params.dig(:project_feature_attributes, :pages_access_level) + end + def ensure_wiki_exists ProjectWiki.new(project, project.owner).wiki rescue ProjectWiki::CouldNotCreateWikiError diff --git a/changelogs/unreleased/auth.yml b/changelogs/unreleased/auth.yml new file mode 100644 index 00000000000..cd4bbf0059e --- /dev/null +++ b/changelogs/unreleased/auth.yml @@ -0,0 +1,5 @@ +--- +title: Add access control to GitLab pages and make it possible to enable/disable it in project settings +merge_request: 18589 +author: Tuomo Ala-Vannesluoma +type: added diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index 67337f4b82f..749cdd0f869 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -210,6 +210,7 @@ production: &base ## GitLab Pages pages: enabled: false + access_control: false # The location where pages are stored (default: shared/pages). # path: shared/pages diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 0caa4962128..bd02b85c7ce 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -200,6 +200,7 @@ Settings.registry['path'] = Settings.absolute(Settings.registry['path # Settings['pages'] ||= Settingslogic.new({}) Settings.pages['enabled'] = false if Settings.pages['enabled'].nil? +Settings.pages['access_control'] = false if Settings.pages['access_control'].nil? Settings.pages['path'] = Settings.absolute(Settings.pages['path'] || File.join(Settings.shared['path'], "pages")) Settings.pages['https'] = false if Settings.pages['https'].nil? Settings.pages['host'] ||= "example.com" diff --git a/db/migrate/20180423204600_add_pages_access_level_to_project_feature.rb b/db/migrate/20180423204600_add_pages_access_level_to_project_feature.rb new file mode 100644 index 00000000000..1d2f8cf9c76 --- /dev/null +++ b/db/migrate/20180423204600_add_pages_access_level_to_project_feature.rb @@ -0,0 +1,16 @@ +class AddPagesAccessLevelToProjectFeature < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + disable_ddl_transaction! + + DOWNTIME = false + + def up + add_column_with_default(:project_features, :pages_access_level, :integer, default: ProjectFeature::PUBLIC, allow_null: false) + + change_column_default(:project_features, :pages_access_level, ProjectFeature::ENABLED) + end + + def down + remove_column :project_features, :pages_access_level + end +end diff --git a/db/schema.rb b/db/schema.rb index b3d4badaf82..7d78756c16f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1578,6 +1578,7 @@ ActiveRecord::Schema.define(version: 20180924141949) do t.datetime "created_at" t.datetime "updated_at" t.integer "repository_access_level", default: 20, null: false + t.integer "pages_access_level", default: 20, null: false end add_index "project_features", ["project_id"], name: "index_project_features_on_project_id", unique: true, using: :btree diff --git a/doc/user/permissions.md b/doc/user/permissions.md index 8369cff2386..4a1ca41ab97 100644 --- a/doc/user/permissions.md +++ b/doc/user/permissions.md @@ -110,6 +110,7 @@ which visibility level you select on project settings. - Disabled: disabled for everyone - Only team members: only team members will see even if your project is public or internal - Everyone with access: everyone can see depending on your project visibility level +- Everyone: enabled for everyone (only available for GitLab Pages) ### Protected branches @@ -242,6 +243,7 @@ which visibility level you select on project settings. - Disabled: disabled for everyone - Only team members: only team members will see even if your project is public or internal - Everyone with access: everyone can see depending on your project visibility level +- Everyone: enabled for everyone (only available for GitLab Pages) ## GitLab CI/CD permissions diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 00bad49ebdc..ae2d327e45b 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -287,6 +287,12 @@ module API present_projects forks end + desc 'Check pages access of this project' + get ':id/pages_access' do + authorize! :read_pages_content, user_project unless user_project.public_pages? + status 200 + end + desc 'Update an existing project' do success Entities::Project end diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index 80801eb1082..e4823a5adf1 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -1,6 +1,8 @@ require_relative '../support/helpers/test_env' FactoryBot.define do + PAGES_ACCESS_LEVEL_SCHEMA_VERSION = 20180423204600 + # Project without repository # # Project does not have bare repository. @@ -23,6 +25,7 @@ FactoryBot.define do issues_access_level ProjectFeature::ENABLED merge_requests_access_level ProjectFeature::ENABLED repository_access_level ProjectFeature::ENABLED + pages_access_level ProjectFeature::ENABLED # we can't assign the delegated `#ci_cd_settings` attributes directly, as the # `#ci_cd_settings` relation needs to be created first @@ -34,13 +37,20 @@ FactoryBot.define do builds_access_level = [evaluator.builds_access_level, evaluator.repository_access_level].min merge_requests_access_level = [evaluator.merge_requests_access_level, evaluator.repository_access_level].min - project.project_feature.update( + hash = { wiki_access_level: evaluator.wiki_access_level, builds_access_level: builds_access_level, snippets_access_level: evaluator.snippets_access_level, issues_access_level: evaluator.issues_access_level, merge_requests_access_level: merge_requests_access_level, - repository_access_level: evaluator.repository_access_level) + repository_access_level: evaluator.repository_access_level + } + + if ActiveRecord::Migrator.current_version >= PAGES_ACCESS_LEVEL_SCHEMA_VERSION + hash.store("pages_access_level", evaluator.pages_access_level) + end + + project.project_feature.update(hash) # Normally the class Projects::CreateService is used for creating # projects, and this class takes care of making sure the owner and current @@ -244,6 +254,10 @@ FactoryBot.define do trait(:repository_enabled) { repository_access_level ProjectFeature::ENABLED } trait(:repository_disabled) { repository_access_level ProjectFeature::DISABLED } trait(:repository_private) { repository_access_level ProjectFeature::PRIVATE } + trait(:pages_public) { pages_access_level ProjectFeature::PUBLIC } + trait(:pages_enabled) { pages_access_level ProjectFeature::ENABLED } + trait(:pages_disabled) { pages_access_level ProjectFeature::DISABLED } + trait(:pages_private) { pages_access_level ProjectFeature::PRIVATE } trait :auto_devops do association :auto_devops, factory: :project_auto_devops diff --git a/spec/graphql/types/permission_types/project_spec.rb b/spec/graphql/types/permission_types/project_spec.rb index 89eecef096e..927153adc5b 100644 --- a/spec/graphql/types/permission_types/project_spec.rb +++ b/spec/graphql/types/permission_types/project_spec.rb @@ -10,7 +10,7 @@ describe Types::PermissionTypes::Project do :read_commit_status, :request_access, :create_pipeline, :create_pipeline_schedule, :create_merge_request_from, :create_wiki, :push_code, :create_deployment, :push_to_delete_protected_branch, :admin_wiki, :admin_project, :update_pages, :admin_remote_mirror, :create_label, - :update_wiki, :destroy_wiki, :create_pages, :destroy_pages + :update_wiki, :destroy_wiki, :create_pages, :destroy_pages, :read_pages_content ] expect(described_class).to have_graphql_fields(expected_permissions) diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml index e9f1be172b0..7be1bf6e0bf 100644 --- a/spec/lib/gitlab/import_export/safe_model_attributes.yml +++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml @@ -492,6 +492,7 @@ ProjectFeature: - snippets_access_level - builds_access_level - repository_access_level +- pages_access_level - created_at - updated_at ProtectedBranch::MergeAccessLevel: diff --git a/spec/migrations/add_pages_access_level_to_project_feature_spec.rb b/spec/migrations/add_pages_access_level_to_project_feature_spec.rb new file mode 100644 index 00000000000..3946602c5be --- /dev/null +++ b/spec/migrations/add_pages_access_level_to_project_feature_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' +require Rails.root.join('db', 'migrate', '20180423204600_add_pages_access_level_to_project_feature.rb') + +describe AddPagesAccessLevelToProjectFeature, :migration do + let(:namespaces) { table(:namespaces) } + let(:projects) { table(:projects) } + let(:features) { table(:project_features) } + let!(:namespace) { namespaces.create(name: 'gitlab', path: 'gitlab') } + let!(:first_project) { projects.create(name: 'gitlab1', path: 'gitlab1', namespace_id: namespace.id) } + let!(:first_project_features) { features.create(project_id: first_project.id) } + let!(:second_project) { projects.create(name: 'gitlab2', path: 'gitlab2', namespace_id: namespace.id) } + let!(:second_project_features) { features.create(project_id: second_project.id) } + + it 'correctly migrate pages for old projects to be public' do + migrate! + + # For old projects pages should be public + expect(first_project_features.reload.pages_access_level).to eq ProjectFeature::PUBLIC + expect(second_project_features.reload.pages_access_level).to eq ProjectFeature::PUBLIC + end + + it 'after migration pages are enabled as default' do + migrate! + + # For new project default is enabled + third_project = projects.create(name: 'gitlab3', path: 'gitlab3', namespace_id: namespace.id) + third_project_features = features.create(project_id: third_project.id) + expect(third_project_features.reload.pages_access_level).to eq ProjectFeature::ENABLED + end +end diff --git a/spec/models/internal_id_spec.rb b/spec/models/internal_id_spec.rb index f2aad455d5f..52c00a74b4b 100644 --- a/spec/models/internal_id_spec.rb +++ b/spec/models/internal_id_spec.rb @@ -65,7 +65,8 @@ describe InternalId do context 'with an insufficient schema version' do before do described_class.reset_column_information - expect(ActiveRecord::Migrator).to receive(:current_version).and_return(InternalId::REQUIRED_SCHEMA_VERSION - 1) + # Project factory will also call the current_version + expect(ActiveRecord::Migrator).to receive(:current_version).twice.and_return(InternalId::REQUIRED_SCHEMA_VERSION - 1) end let(:init) { double('block') } diff --git a/spec/models/project_feature_spec.rb b/spec/models/project_feature_spec.rb index 2a193864e46..fee7d65c217 100644 --- a/spec/models/project_feature_spec.rb +++ b/spec/models/project_feature_spec.rb @@ -17,7 +17,7 @@ describe ProjectFeature do end describe '#feature_available?' do - let(:features) { %w(issues wiki builds merge_requests snippets repository) } + let(:features) { %w(issues wiki builds merge_requests snippets repository pages) } context 'when features are disabled' do it "returns false" do @@ -112,6 +112,19 @@ describe ProjectFeature do end end + context 'public features' do + it "does not allow public for other than pages" do + features = %w(issues wiki builds merge_requests snippets repository) + project_feature = project.project_feature + + features.each do |feature| + field = "#{feature}_access_level".to_sym + project_feature.update_attribute(field, ProjectFeature::PUBLIC) + expect(project_feature.valid?).to be_falsy + end + end + end + describe '#*_enabled?' do let(:features) { %w(wiki builds merge_requests) } diff --git a/spec/requests/api/pages/internal_access_spec.rb b/spec/requests/api/pages/internal_access_spec.rb new file mode 100644 index 00000000000..c41eabe0a48 --- /dev/null +++ b/spec/requests/api/pages/internal_access_spec.rb @@ -0,0 +1,88 @@ +require 'spec_helper' + +describe "Internal Project Pages Access" do + using RSpec::Parameterized::TableSyntax + include AccessMatchers + + set(:group) { create(:group) } + set(:project) { create(:project, :internal, pages_access_level: ProjectFeature::ENABLED, namespace: group) } + + set(:admin) { create(:admin) } + set(:owner) { create(:user) } + set(:master) { create(:user) } + set(:developer) { create(:user) } + set(:reporter) { create(:user) } + set(:guest) { create(:user) } + set(:user) { create(:user) } + + before do + allow(Gitlab.config.pages).to receive(:access_control).and_return(true) + group.add_owner(owner) + project.add_master(master) + project.add_developer(developer) + project.add_reporter(reporter) + project.add_guest(guest) + end + + describe "Project should be internal" do + describe '#internal?' do + subject { project.internal? } + it { is_expected.to be_truthy } + end + end + + describe "GET /projects/:id/pages_access" do + context 'access depends on the level' do + where(:pages_access_level, :with_user, :expected_result) do + ProjectFeature::DISABLED | "admin" | 403 + ProjectFeature::DISABLED | "owner" | 403 + ProjectFeature::DISABLED | "master" | 403 + ProjectFeature::DISABLED | "developer" | 403 + ProjectFeature::DISABLED | "reporter" | 403 + ProjectFeature::DISABLED | "guest" | 403 + ProjectFeature::DISABLED | "user" | 403 + ProjectFeature::DISABLED | nil | 404 + ProjectFeature::PUBLIC | "admin" | 200 + ProjectFeature::PUBLIC | "owner" | 200 + ProjectFeature::PUBLIC | "master" | 200 + ProjectFeature::PUBLIC | "developer" | 200 + ProjectFeature::PUBLIC | "reporter" | 200 + ProjectFeature::PUBLIC | "guest" | 200 + ProjectFeature::PUBLIC | "user" | 200 + ProjectFeature::PUBLIC | nil | 404 + ProjectFeature::ENABLED | "admin" | 200 + ProjectFeature::ENABLED | "owner" | 200 + ProjectFeature::ENABLED | "master" | 200 + ProjectFeature::ENABLED | "developer" | 200 + ProjectFeature::ENABLED | "reporter" | 200 + ProjectFeature::ENABLED | "guest" | 200 + ProjectFeature::ENABLED | "user" | 200 + ProjectFeature::ENABLED | nil | 404 + ProjectFeature::PRIVATE | "admin" | 200 + ProjectFeature::PRIVATE | "owner" | 200 + ProjectFeature::PRIVATE | "master" | 200 + ProjectFeature::PRIVATE | "developer" | 200 + ProjectFeature::PRIVATE | "reporter" | 200 + ProjectFeature::PRIVATE | "guest" | 200 + ProjectFeature::PRIVATE | "user" | 403 + ProjectFeature::PRIVATE | nil | 404 + end + + with_them do + before do + project.project_feature.update(pages_access_level: pages_access_level) + end + it "correct return value" do + if !with_user.nil? + user = public_send(with_user) + get api("/projects/#{project.id}/pages_access", user) + else + get api("/projects/#{project.id}/pages_access") + end + + expect(response).to have_gitlab_http_status(expected_result) + end + end + end + end +end diff --git a/spec/requests/api/pages/private_access_spec.rb b/spec/requests/api/pages/private_access_spec.rb new file mode 100644 index 00000000000..d69c15b0477 --- /dev/null +++ b/spec/requests/api/pages/private_access_spec.rb @@ -0,0 +1,88 @@ +require 'spec_helper' + +describe "Private Project Pages Access" do + using RSpec::Parameterized::TableSyntax + include AccessMatchers + + set(:group) { create(:group) } + set(:project) { create(:project, :private, pages_access_level: ProjectFeature::ENABLED, namespace: group) } + + set(:admin) { create(:admin) } + set(:owner) { create(:user) } + set(:master) { create(:user) } + set(:developer) { create(:user) } + set(:reporter) { create(:user) } + set(:guest) { create(:user) } + set(:user) { create(:user) } + + before do + allow(Gitlab.config.pages).to receive(:access_control).and_return(true) + group.add_owner(owner) + project.add_master(master) + project.add_developer(developer) + project.add_reporter(reporter) + project.add_guest(guest) + end + + describe "Project should be private" do + describe '#private?' do + subject { project.private? } + it { is_expected.to be_truthy } + end + end + + describe "GET /projects/:id/pages_access" do + context 'access depends on the level' do + where(:pages_access_level, :with_user, :expected_result) do + ProjectFeature::DISABLED | "admin" | 403 + ProjectFeature::DISABLED | "owner" | 403 + ProjectFeature::DISABLED | "master" | 403 + ProjectFeature::DISABLED | "developer" | 403 + ProjectFeature::DISABLED | "reporter" | 403 + ProjectFeature::DISABLED | "guest" | 403 + ProjectFeature::DISABLED | "user" | 404 + ProjectFeature::DISABLED | nil | 404 + ProjectFeature::PUBLIC | "admin" | 200 + ProjectFeature::PUBLIC | "owner" | 200 + ProjectFeature::PUBLIC | "master" | 200 + ProjectFeature::PUBLIC | "developer" | 200 + ProjectFeature::PUBLIC | "reporter" | 200 + ProjectFeature::PUBLIC | "guest" | 200 + ProjectFeature::PUBLIC | "user" | 404 + ProjectFeature::PUBLIC | nil | 404 + ProjectFeature::ENABLED | "admin" | 200 + ProjectFeature::ENABLED | "owner" | 200 + ProjectFeature::ENABLED | "master" | 200 + ProjectFeature::ENABLED | "developer" | 200 + ProjectFeature::ENABLED | "reporter" | 200 + ProjectFeature::ENABLED | "guest" | 200 + ProjectFeature::ENABLED | "user" | 404 + ProjectFeature::ENABLED | nil | 404 + ProjectFeature::PRIVATE | "admin" | 200 + ProjectFeature::PRIVATE | "owner" | 200 + ProjectFeature::PRIVATE | "master" | 200 + ProjectFeature::PRIVATE | "developer" | 200 + ProjectFeature::PRIVATE | "reporter" | 200 + ProjectFeature::PRIVATE | "guest" | 200 + ProjectFeature::PRIVATE | "user" | 404 + ProjectFeature::PRIVATE | nil | 404 + end + + with_them do + before do + project.project_feature.update(pages_access_level: pages_access_level) + end + it "correct return value" do + if !with_user.nil? + user = public_send(with_user) + get api("/projects/#{project.id}/pages_access", user) + else + get api("/projects/#{project.id}/pages_access") + end + + expect(response).to have_gitlab_http_status(expected_result) + end + end + end + end +end diff --git a/spec/requests/api/pages/public_access_spec.rb b/spec/requests/api/pages/public_access_spec.rb new file mode 100644 index 00000000000..882ca26ac51 --- /dev/null +++ b/spec/requests/api/pages/public_access_spec.rb @@ -0,0 +1,88 @@ +require 'spec_helper' + +describe "Public Project Pages Access" do + using RSpec::Parameterized::TableSyntax + include AccessMatchers + + set(:group) { create(:group) } + set(:project) { create(:project, :public, pages_access_level: ProjectFeature::ENABLED, namespace: group) } + + set(:admin) { create(:admin) } + set(:owner) { create(:user) } + set(:master) { create(:user) } + set(:developer) { create(:user) } + set(:reporter) { create(:user) } + set(:guest) { create(:user) } + set(:user) { create(:user) } + + before do + allow(Gitlab.config.pages).to receive(:access_control).and_return(true) + group.add_owner(owner) + project.add_master(master) + project.add_developer(developer) + project.add_reporter(reporter) + project.add_guest(guest) + end + + describe "Project should be public" do + describe '#public?' do + subject { project.public? } + it { is_expected.to be_truthy } + end + end + + describe "GET /projects/:id/pages_access" do + context 'access depends on the level' do + where(:pages_access_level, :with_user, :expected_result) do + ProjectFeature::DISABLED | "admin" | 403 + ProjectFeature::DISABLED | "owner" | 403 + ProjectFeature::DISABLED | "master" | 403 + ProjectFeature::DISABLED | "developer" | 403 + ProjectFeature::DISABLED | "reporter" | 403 + ProjectFeature::DISABLED | "guest" | 403 + ProjectFeature::DISABLED | "user" | 403 + ProjectFeature::DISABLED | nil | 403 + ProjectFeature::PUBLIC | "admin" | 200 + ProjectFeature::PUBLIC | "owner" | 200 + ProjectFeature::PUBLIC | "master" | 200 + ProjectFeature::PUBLIC | "developer" | 200 + ProjectFeature::PUBLIC | "reporter" | 200 + ProjectFeature::PUBLIC | "guest" | 200 + ProjectFeature::PUBLIC | "user" | 200 + ProjectFeature::PUBLIC | nil | 200 + ProjectFeature::ENABLED | "admin" | 200 + ProjectFeature::ENABLED | "owner" | 200 + ProjectFeature::ENABLED | "master" | 200 + ProjectFeature::ENABLED | "developer" | 200 + ProjectFeature::ENABLED | "reporter" | 200 + ProjectFeature::ENABLED | "guest" | 200 + ProjectFeature::ENABLED | "user" | 200 + ProjectFeature::ENABLED | nil | 200 + ProjectFeature::PRIVATE | "admin" | 200 + ProjectFeature::PRIVATE | "owner" | 200 + ProjectFeature::PRIVATE | "master" | 200 + ProjectFeature::PRIVATE | "developer" | 200 + ProjectFeature::PRIVATE | "reporter" | 200 + ProjectFeature::PRIVATE | "guest" | 200 + ProjectFeature::PRIVATE | "user" | 403 + ProjectFeature::PRIVATE | nil | 403 + end + + with_them do + before do + project.project_feature.update(pages_access_level: pages_access_level) + end + it "correct return value" do + if !with_user.nil? + user = public_send(with_user) + get api("/projects/#{project.id}/pages_access", user) + else + get api("/projects/#{project.id}/pages_access") + end + + expect(response).to have_gitlab_http_status(expected_result) + end + end + end + end +end diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb index 695b9980548..d58ff2cedc0 100644 --- a/spec/services/projects/update_service_spec.rb +++ b/spec/services/projects/update_service_spec.rb @@ -340,6 +340,27 @@ describe Projects::UpdateService do call_service end end + + context 'when updating #pages_access_level' do + subject(:call_service) do + update_project(project, admin, project_feature_attributes: { pages_access_level: ProjectFeature::PRIVATE }) + end + + it 'updates the attribute' do + expect { call_service } + .to change { project.project_feature.pages_access_level } + .to(ProjectFeature::PRIVATE) + end + + it 'calls Projects::UpdatePagesConfigurationService' do + expect(Projects::UpdatePagesConfigurationService) + .to receive(:new) + .with(project) + .and_call_original + + call_service + end + end end describe '#run_auto_devops_pipeline?' do -- cgit v1.2.1 From 3142eec0ff5a2850f54ca2779e5ade241297fb85 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 5 Oct 2018 07:01:04 -0700 Subject: Revert "Merge branch 'deploy-tokens' into 'master'" This reverts commit 3df32ac1290160680473248b48d1b12c96458bf7, reversing changes made to dd1295a30f28eeb3c7058b1899e00db7943f3e54. --- app/controllers/projects/settings/repository_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb index 6d83d24cdb8..1d76c90d4eb 100644 --- a/app/controllers/projects/settings/repository_controller.rb +++ b/app/controllers/projects/settings/repository_controller.rb @@ -14,10 +14,10 @@ module Projects @new_deploy_token = DeployTokens::CreateService.new(@project, current_user, deploy_token_params).execute if @new_deploy_token.persisted? - flash[:notice] = s_('DeployTokens|Your new project deploy token has been created.') + flash.now[:notice] = s_('DeployTokens|Your new project deploy token has been created.') end - redirect_to action: :show + render_show end private -- cgit v1.2.1 From 91ef6989d15c5fd8e93e93eb980d03abe1a15d0e Mon Sep 17 00:00:00 2001 From: "Balasankar \"Balu\" C" Date: Fri, 5 Oct 2018 19:34:22 +0530 Subject: Add installation type to backup information file --- lib/backup/manager.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/backup/manager.rb b/lib/backup/manager.rb index 5d4a7efc456..afdc6f383c1 100644 --- a/lib/backup/manager.rb +++ b/lib/backup/manager.rb @@ -243,6 +243,7 @@ module Backup backup_created_at: Time.now, gitlab_version: Gitlab::VERSION, tar_version: tar_version, + installation_type: Gitlab::INSTALLATION_TYPE, skipped: ENV["SKIP"] } end -- cgit v1.2.1 From 75ddf0d48d0fee6f9209376b0751d414946f9c67 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre Date: Fri, 5 Oct 2018 11:20:19 -0300 Subject: Refactor Feature.flipper method --- lib/feature.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/feature.rb b/lib/feature.rb index 0e90ad9a333..a8324d99c10 100644 --- a/lib/feature.rb +++ b/lib/feature.rb @@ -72,7 +72,11 @@ class Feature end def flipper - @flipper ||= (Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance) + if Gitlab::SafeRequestStore.active? + Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance + else + @flipper ||= build_flipper_instance + end end def build_flipper_instance -- cgit v1.2.1 From 7bc606592da43bbe6286d7a1c55bdad69927eb34 Mon Sep 17 00:00:00 2001 From: "Balasankar \"Balu\" C" Date: Fri, 5 Oct 2018 20:00:54 +0530 Subject: Add changelog entry --- changelogs/unreleased/add-installation-type-backup-information.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/add-installation-type-backup-information.yml diff --git a/changelogs/unreleased/add-installation-type-backup-information.yml b/changelogs/unreleased/add-installation-type-backup-information.yml new file mode 100644 index 00000000000..24cf4cc21f4 --- /dev/null +++ b/changelogs/unreleased/add-installation-type-backup-information.yml @@ -0,0 +1,5 @@ +--- +title: Add installation type to backup information file +merge_request: 22150 +author: +type: changed -- cgit v1.2.1 From 9f9cac67ab7292be0037082120f0995152624599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Fri, 5 Oct 2018 17:35:59 +0200 Subject: Fix CE to EE merge (backport) --- app/services/merge_requests/refresh_service.rb | 11 ++++++----- lib/gitlab/git/push.rb | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index d3e4f3def23..b03d14fa3cc 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -3,16 +3,17 @@ module MergeRequests class RefreshService < MergeRequests::BaseService def execute(oldrev, newrev, ref) - @push = Gitlab::Git::Push.new(@project, oldrev, newrev, ref) + push = Gitlab::Git::Push.new(@project, oldrev, newrev, ref) + return true unless push.branch_push? - return true unless @push.branch_push? - - refresh_merge_requests! + refresh_merge_requests!(push) end private - def refresh_merge_requests! + def refresh_merge_requests!(push) + @push = push + Gitlab::GitalyClient.allow_n_plus_1_calls(&method(:find_new_commits)) # Be sure to close outstanding MRs before reloading them to avoid generating an # empty diff during a manual merge diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb index 7c1309721fd..b6577ba17f1 100644 --- a/lib/gitlab/git/push.rb +++ b/lib/gitlab/git/push.rb @@ -5,7 +5,7 @@ module Gitlab class Push include Gitlab::Utils::StrongMemoize - attr_reader :oldrev, :newrev + attr_reader :ref, :oldrev, :newrev def initialize(project, oldrev, newrev, ref) @project = project -- cgit v1.2.1 From deb6b429bfd06ff077f85c03a7ce1f4ba0186bec Mon Sep 17 00:00:00 2001 From: Simon Knox Date: Fri, 5 Oct 2018 16:26:16 +0000 Subject: Backport changes from gitlab-ee!7538 --- .../javascripts/monitoring/components/graph.vue | 9 +- .../monitoring/utils/multiple_time_series.js | 103 ++++++++++++++------- spec/javascripts/monitoring/dashboard_spec.js | 38 ++++---- spec/javascripts/monitoring/graph/legend_spec.js | 2 +- .../monitoring/graph/track_info_spec.js | 2 +- .../monitoring/graph/track_line_spec.js | 2 +- spec/javascripts/monitoring/graph_path_spec.js | 2 +- spec/javascripts/monitoring/mock_data.js | 1 + .../monitoring/utils/multiple_time_series_spec.js | 2 +- 9 files changed, 102 insertions(+), 59 deletions(-) diff --git a/app/assets/javascripts/monitoring/components/graph.vue b/app/assets/javascripts/monitoring/components/graph.vue index ff44f51b8f8..3cccaf72ed7 100644 --- a/app/assets/javascripts/monitoring/components/graph.vue +++ b/app/assets/javascripts/monitoring/components/graph.vue @@ -82,6 +82,7 @@ export default { showFlag: false, showFlagContent: false, timeSeries: [], + graphDrawData: {}, realPixelRatio: 1, seriesUnderMouse: [], }; @@ -180,12 +181,12 @@ export default { }); }, renderAxesPaths() { - this.timeSeries = createTimeSeries( + ({ timeSeries: this.timeSeries, graphDrawData: this.graphDrawData } = createTimeSeries( this.graphData.queries, this.graphWidth, this.graphHeight, this.graphHeightOffset, - ); + )); if (_.findWhere(this.timeSeries, { renderCanary: true })) { this.timeSeries = this.timeSeries.map(series => ({ ...series, renderCanary: true })); @@ -288,6 +289,10 @@ export default { :viewBox="innerViewBox" class="graph-data" > + !Number.isNaN(d.value) && d.value != null; - - const lineFunction = d3 - .line() - .defined(defined) - .curve(d3.curveLinear) // d3 v4 uses curbe instead of interpolate - .x(d => timeSeriesScaleX(d.time)) - .y(d => timeSeriesScaleY(d.value)); - - const areaFunction = d3 - .area() - .defined(defined) - .curve(d3.curveLinear) - .x(d => timeSeriesScaleX(d.time)) - .y0(graphHeight - graphHeightOffset) - .y1(d => timeSeriesScaleY(d.value)); - const timeSeriesMetricLabel = timeSeries.metric[Object.keys(timeSeries.metric)[0]]; const seriesCustomizationData = query.series != null && _.findWhere(query.series[0].when, { value: timeSeriesMetricLabel }); @@ -144,10 +119,10 @@ function queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom })); timeSeriesParsed.push({ - linePath: lineFunction(values), - areaPath: areaFunction(values), - timeSeriesScaleX, - timeSeriesScaleY, + linePath: graphDrawData.lineFunction(values), + areaPath: graphDrawData.areaBelowLine(values), + timeSeriesScaleX: graphDrawData.timeSeriesScaleX, + timeSeriesScaleY: graphDrawData.timeSeriesScaleY, values: timeSeries.values, max: maximumValue, average: accum / timeSeries.values.length, @@ -164,7 +139,7 @@ function queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom return timeSeriesParsed; } -export default function createTimeSeries(queries, graphWidth, graphHeight, graphHeightOffset) { +function xyDomain(queries) { const allValues = queries.reduce( (allQueryResults, query) => allQueryResults.concat( @@ -176,10 +151,70 @@ export default function createTimeSeries(queries, graphWidth, graphHeight, graph const xDom = d3.extent(allValues, d => d.time); const yDom = [0, d3.max(allValues.map(d => d.value))]; - return queries.reduce((series, query, index) => { + return { + xDom, + yDom, + }; +} + +export function generateGraphDrawData(queries, graphWidth, graphHeight, graphHeightOffset) { + const { xDom, yDom } = xyDomain(queries); + + const timeSeriesScaleX = d3.scaleTime().range([0, graphWidth - 70]); + const timeSeriesScaleY = d3.scaleLinear().range([graphHeight - graphHeightOffset, 0]); + + timeSeriesScaleX.domain(xDom); + timeSeriesScaleX.ticks(d3.timeMinute, 60); + timeSeriesScaleY.domain(yDom); + + const defined = d => !Number.isNaN(d.value) && d.value != null; + + const lineFunction = d3 + .line() + .defined(defined) + .curve(d3.curveLinear) // d3 v4 uses curbe instead of interpolate + .x(d => timeSeriesScaleX(d.time)) + .y(d => timeSeriesScaleY(d.value)); + + const areaBelowLine = d3 + .area() + .defined(defined) + .curve(d3.curveLinear) + .x(d => timeSeriesScaleX(d.time)) + .y0(graphHeight - graphHeightOffset) + .y1(d => timeSeriesScaleY(d.value)); + + const areaAboveLine = d3 + .area() + .defined(defined) + .curve(d3.curveLinear) + .x(d => timeSeriesScaleX(d.time)) + .y0(0) + .y1(d => timeSeriesScaleY(d.value)); + + return { + lineFunction, + areaBelowLine, + areaAboveLine, + xDom, + yDom, + timeSeriesScaleX, + timeSeriesScaleY, + }; +} + +export default function createTimeSeries(queries, graphWidth, graphHeight, graphHeightOffset) { + const graphDrawData = generateGraphDrawData(queries, graphWidth, graphHeight, graphHeightOffset); + + const timeSeries = queries.reduce((series, query, index) => { const lineStyle = defaultStyleOrder[index % defaultStyleOrder.length]; return series.concat( - queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom, yDom, lineStyle), + queryTimeSeries(query, graphDrawData, lineStyle), ); }, []); + + return { + timeSeries, + graphDrawData, + }; } diff --git a/spec/javascripts/monitoring/dashboard_spec.js b/spec/javascripts/monitoring/dashboard_spec.js index f0d53b2d8d7..732c37a24bf 100644 --- a/spec/javascripts/monitoring/dashboard_spec.js +++ b/spec/javascripts/monitoring/dashboard_spec.js @@ -4,30 +4,32 @@ import Dashboard from '~/monitoring/components/dashboard.vue'; import axios from '~/lib/utils/axios_utils'; import { metricsGroupsAPIResponse, mockApiEndpoint, environmentData } from './mock_data'; +const propsData = { + hasMetrics: false, + documentationPath: '/path/to/docs', + settingsPath: '/path/to/settings', + clustersPath: '/path/to/clusters', + tagsPath: '/path/to/tags', + projectPath: '/path/to/project', + metricsEndpoint: mockApiEndpoint, + deploymentEndpoint: null, + emptyGettingStartedSvgPath: '/path/to/getting-started.svg', + emptyLoadingSvgPath: '/path/to/loading.svg', + emptyNoDataSvgPath: '/path/to/no-data.svg', + emptyUnableToConnectSvgPath: '/path/to/unable-to-connect.svg', + environmentsEndpoint: '/root/hello-prometheus/environments/35', + currentEnvironmentName: 'production', +}; + +export default propsData; + describe('Dashboard', () => { let DashboardComponent; - const propsData = { - hasMetrics: false, - documentationPath: '/path/to/docs', - settingsPath: '/path/to/settings', - clustersPath: '/path/to/clusters', - tagsPath: '/path/to/tags', - projectPath: '/path/to/project', - metricsEndpoint: mockApiEndpoint, - deploymentEndpoint: null, - emptyGettingStartedSvgPath: '/path/to/getting-started.svg', - emptyLoadingSvgPath: '/path/to/loading.svg', - emptyNoDataSvgPath: '/path/to/no-data.svg', - emptyUnableToConnectSvgPath: '/path/to/unable-to-connect.svg', - environmentsEndpoint: '/root/hello-prometheus/environments/35', - currentEnvironmentName: 'production', - }; - beforeEach(() => { setFixtures(`
- + `); DashboardComponent = Vue.extend(Dashboard); }); diff --git a/spec/javascripts/monitoring/graph/legend_spec.js b/spec/javascripts/monitoring/graph/legend_spec.js index abcc51aa077..9209e77dcf4 100644 --- a/spec/javascripts/monitoring/graph/legend_spec.js +++ b/spec/javascripts/monitoring/graph/legend_spec.js @@ -8,7 +8,7 @@ const convertedMetrics = convertDatesMultipleSeries(singleRowMetricsMultipleSeri const defaultValuesComponent = {}; -const timeSeries = createTimeSeries(convertedMetrics[0].queries, 500, 300, 120); +const { timeSeries } = createTimeSeries(convertedMetrics[0].queries, 500, 300, 120); defaultValuesComponent.timeSeries = timeSeries; diff --git a/spec/javascripts/monitoring/graph/track_info_spec.js b/spec/javascripts/monitoring/graph/track_info_spec.js index d3121d553f9..ce93ae28842 100644 --- a/spec/javascripts/monitoring/graph/track_info_spec.js +++ b/spec/javascripts/monitoring/graph/track_info_spec.js @@ -5,7 +5,7 @@ import createTimeSeries from '~/monitoring/utils/multiple_time_series'; import { singleRowMetricsMultipleSeries, convertDatesMultipleSeries } from '../mock_data'; const convertedMetrics = convertDatesMultipleSeries(singleRowMetricsMultipleSeries); -const timeSeries = createTimeSeries(convertedMetrics[0].queries, 500, 300, 120); +const { timeSeries } = createTimeSeries(convertedMetrics[0].queries, 500, 300, 120); describe('TrackInfo component', () => { let vm; diff --git a/spec/javascripts/monitoring/graph/track_line_spec.js b/spec/javascripts/monitoring/graph/track_line_spec.js index 27602a861eb..2a4f89ddf6e 100644 --- a/spec/javascripts/monitoring/graph/track_line_spec.js +++ b/spec/javascripts/monitoring/graph/track_line_spec.js @@ -5,7 +5,7 @@ import createTimeSeries from '~/monitoring/utils/multiple_time_series'; import { singleRowMetricsMultipleSeries, convertDatesMultipleSeries } from '../mock_data'; const convertedMetrics = convertDatesMultipleSeries(singleRowMetricsMultipleSeries); -const timeSeries = createTimeSeries(convertedMetrics[0].queries, 500, 300, 120); +const { timeSeries } = createTimeSeries(convertedMetrics[0].queries, 500, 300, 120); describe('TrackLine component', () => { let vm; diff --git a/spec/javascripts/monitoring/graph_path_spec.js b/spec/javascripts/monitoring/graph_path_spec.js index 2515e2ad897..5f270c5cfe9 100644 --- a/spec/javascripts/monitoring/graph_path_spec.js +++ b/spec/javascripts/monitoring/graph_path_spec.js @@ -13,7 +13,7 @@ const createComponent = (propsData) => { const convertedMetrics = convertDatesMultipleSeries(singleRowMetricsMultipleSeries); -const timeSeries = createTimeSeries(convertedMetrics[0].queries, 428, 272, 120); +const { timeSeries } = createTimeSeries(convertedMetrics[0].queries, 428, 272, 120); const firstTimeSeries = timeSeries[0]; describe('Monitoring Paths', () => { diff --git a/spec/javascripts/monitoring/mock_data.js b/spec/javascripts/monitoring/mock_data.js index e4c98a3bcb5..6c833b17f98 100644 --- a/spec/javascripts/monitoring/mock_data.js +++ b/spec/javascripts/monitoring/mock_data.js @@ -8,6 +8,7 @@ export const metricsGroupsAPIResponse = { priority: 1, metrics: [ { + id: 5, title: 'Memory usage', weight: 1, queries: [ diff --git a/spec/javascripts/monitoring/utils/multiple_time_series_spec.js b/spec/javascripts/monitoring/utils/multiple_time_series_spec.js index 99584c75287..8937b7d9680 100644 --- a/spec/javascripts/monitoring/utils/multiple_time_series_spec.js +++ b/spec/javascripts/monitoring/utils/multiple_time_series_spec.js @@ -2,7 +2,7 @@ import createTimeSeries from '~/monitoring/utils/multiple_time_series'; import { convertDatesMultipleSeries, singleRowMetricsMultipleSeries } from '../mock_data'; const convertedMetrics = convertDatesMultipleSeries(singleRowMetricsMultipleSeries); -const timeSeries = createTimeSeries(convertedMetrics[0].queries, 428, 272, 120); +const { timeSeries } = createTimeSeries(convertedMetrics[0].queries, 428, 272, 120); const firstTimeSeries = timeSeries[0]; describe('Multiple time series', () => { -- cgit v1.2.1 From f5abc2e8f99e67aaca8d5c5268f3aadb8302085d Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Tue, 25 Sep 2018 11:32:04 -0500 Subject: Use a CTE to remove the query timeout --- ...anceling-statement-due-to-statement-timeout.yml | 5 ++ ...81002172433_remove_restricted_todos_with_cte.rb | 32 +++++++++ db/schema.rb | 2 +- .../remove_restricted_todos.rb | 84 +++++++++++++++++++--- 4 files changed, 113 insertions(+), 10 deletions(-) create mode 100644 changelogs/unreleased/50359-activerecord-statementinvalid-pg-querycanceled-error-canceling-statement-due-to-statement-timeout.yml create mode 100644 db/migrate/20181002172433_remove_restricted_todos_with_cte.rb diff --git a/changelogs/unreleased/50359-activerecord-statementinvalid-pg-querycanceled-error-canceling-statement-due-to-statement-timeout.yml b/changelogs/unreleased/50359-activerecord-statementinvalid-pg-querycanceled-error-canceling-statement-due-to-statement-timeout.yml new file mode 100644 index 00000000000..09ec4b8d73d --- /dev/null +++ b/changelogs/unreleased/50359-activerecord-statementinvalid-pg-querycanceled-error-canceling-statement-due-to-statement-timeout.yml @@ -0,0 +1,5 @@ +--- +title: Fix timeout when running the RemoveRestrictedTodos background migration +merge_request: 21893 +author: +type: fixed diff --git a/db/migrate/20181002172433_remove_restricted_todos_with_cte.rb b/db/migrate/20181002172433_remove_restricted_todos_with_cte.rb new file mode 100644 index 00000000000..0a8f4a12266 --- /dev/null +++ b/db/migrate/20181002172433_remove_restricted_todos_with_cte.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +# rescheduling of the revised RemoveRestrictedTodos background migration +class RemoveRestrictedTodosWithCte < ActiveRecord::Migration + DOWNTIME = false + disable_ddl_transaction! + + MIGRATION = 'RemoveRestrictedTodos'.freeze + BATCH_SIZE = 1000 + DELAY_INTERVAL = 5.minutes.to_i + + class Project < ActiveRecord::Base + include EachBatch + + self.table_name = 'projects' + end + + def up + Project.where('EXISTS (SELECT 1 FROM todos WHERE todos.project_id = projects.id)') + .each_batch(of: BATCH_SIZE) do |batch, index| + range = batch.pluck('MIN(id)', 'MAX(id)').first + + BackgroundMigrationWorker.perform_in(index * DELAY_INTERVAL, MIGRATION, range) + end + end + + def down + # nothing to do + end +end diff --git a/db/schema.rb b/db/schema.rb index 773bfb96b93..4ff0272428a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180924201039) do +ActiveRecord::Schema.define(version: 20181002172433) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/lib/gitlab/background_migration/remove_restricted_todos.rb b/lib/gitlab/background_migration/remove_restricted_todos.rb index 68f3fa62170..9941c2fe6d9 100644 --- a/lib/gitlab/background_migration/remove_restricted_todos.rb +++ b/lib/gitlab/background_migration/remove_restricted_todos.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true # rubocop:disable Style/Documentation +# rubocop:disable Metrics/ClassLength module Gitlab module BackgroundMigration @@ -49,11 +50,14 @@ module Gitlab private def remove_non_members_todos(project_id) - Todo.where(project_id: project_id) - .where('user_id NOT IN (?)', authorized_users(project_id)) - .each_batch(of: 5000) do |batch| - batch.delete_all - end + if Gitlab::Database.postgresql? + batch_remove_todos_cte(project_id) + else + unauthorized_project_todos(project_id) + .each_batch(of: 5000) do |batch| + batch.delete_all + end + end end def remove_confidential_issue_todos(project_id) @@ -86,10 +90,13 @@ module Gitlab next if target_types.empty? - Todo.where(project_id: project_id) - .where('user_id NOT IN (?)', authorized_users(project_id)) - .where(target_type: target_types) - .delete_all + if Gitlab::Database.postgresql? + batch_remove_todos_cte(project_id, target_types) + else + unauthorized_project_todos(project_id) + .where(target_type: target_types) + .delete_all + end end end @@ -100,6 +107,65 @@ module Gitlab def authorized_users(project_id) ProjectAuthorization.select(:user_id).where(project_id: project_id) end + + def unauthorized_project_todos(project_id) + Todo.where(project_id: project_id) + .where('user_id NOT IN (?)', authorized_users(project_id)) + end + + def batch_remove_todos_cte(project_id, target_types = nil) + loop do + count = remove_todos_cte(project_id, target_types) + + break if count == 0 + end + end + + def remove_todos_cte(project_id, target_types = nil) + sql = [] + sql << with_all_todos_sql(project_id, target_types) + sql << as_deleted_sql + sql << "SELECT count(*) FROM deleted" + + result = Todo.connection.exec_query(sql.join(' ')) + result.rows[0][0].to_i + end + + def with_all_todos_sql(project_id, target_types = nil) + if target_types + table = Arel::Table.new(:todos) + in_target = table[:target_type].in(target_types) + target_types_sql = " AND #{in_target.to_sql}" + end + + <<-SQL + WITH all_todos AS ( + SELECT id + FROM "todos" + WHERE "todos"."project_id" = #{project_id} + AND (user_id NOT IN ( + SELECT "project_authorizations"."user_id" + FROM "project_authorizations" + WHERE "project_authorizations"."project_id" = #{project_id}) + #{target_types_sql} + ) + ), + SQL + end + + def as_deleted_sql + <<-SQL + deleted AS ( + DELETE FROM todos + WHERE id IN ( + SELECT id + FROM all_todos + LIMIT 5000 + ) + RETURNING id + ) + SQL + end end end end -- cgit v1.2.1 From d7f1b3dd697e2c560500098c684ab0e7ce3e003a Mon Sep 17 00:00:00 2001 From: Jeremy Watson Date: Fri, 5 Oct 2018 17:07:00 +0000 Subject: Updated existing spec for new 2 year timeframe --- spec/workers/prune_old_events_worker_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/workers/prune_old_events_worker_spec.rb b/spec/workers/prune_old_events_worker_spec.rb index ea974355050..fd5e4ca0ee4 100644 --- a/spec/workers/prune_old_events_worker_spec.rb +++ b/spec/workers/prune_old_events_worker_spec.rb @@ -4,11 +4,11 @@ describe PruneOldEventsWorker do describe '#perform' do let(:user) { create(:user) } - let!(:expired_event) { create(:event, :closed, author: user, created_at: 13.months.ago) } + let!(:expired_event) { create(:event, :closed, author: user, created_at: 25.months.ago) } let!(:not_expired_event) { create(:event, :closed, author: user, created_at: 1.day.ago) } - let!(:exactly_12_months_event) { create(:event, :closed, author: user, created_at: 12.months.ago) } + let!(:exactly_2_years_event) { create(:event, :closed, author: user, created_at: 2.years.ago) } - it 'prunes events older than 12 months' do + it 'prunes events older than 2 years' do expect { subject.perform }.to change { Event.count }.by(-1) expect(Event.find_by(id: expired_event.id)).to be_nil end -- cgit v1.2.1 From df833931b65499ea71937b7d20bddd85d5f27c54 Mon Sep 17 00:00:00 2001 From: Jeremy Watson Date: Fri, 5 Oct 2018 17:10:20 +0000 Subject: Renamed test events --- spec/workers/prune_old_events_worker_spec.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/workers/prune_old_events_worker_spec.rb b/spec/workers/prune_old_events_worker_spec.rb index fd5e4ca0ee4..d9fe08ceb50 100644 --- a/spec/workers/prune_old_events_worker_spec.rb +++ b/spec/workers/prune_old_events_worker_spec.rb @@ -5,8 +5,9 @@ describe PruneOldEventsWorker do let(:user) { create(:user) } let!(:expired_event) { create(:event, :closed, author: user, created_at: 25.months.ago) } - let!(:not_expired_event) { create(:event, :closed, author: user, created_at: 1.day.ago) } - let!(:exactly_2_years_event) { create(:event, :closed, author: user, created_at: 2.years.ago) } + let!(:not_expired_1_day_event) { create(:event, :closed, author: user, created_at: 1.day.ago) } + let!(:not_expired_13_month_event) { create(:event, :closed, author: user, created_at: 13.months.ago) } + let!(:not_expired_2_years_event) { create(:event, :closed, author: user, created_at: 2.years.ago) } it 'prunes events older than 2 years' do expect { subject.perform }.to change { Event.count }.by(-1) -- cgit v1.2.1 From 25874a878f1c4f2f21caf65a15fa8b83e1b04323 Mon Sep 17 00:00:00 2001 From: Jeremy Watson Date: Fri, 5 Oct 2018 17:12:31 +0000 Subject: Added new test and updated all event ids --- spec/workers/prune_old_events_worker_spec.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/spec/workers/prune_old_events_worker_spec.rb b/spec/workers/prune_old_events_worker_spec.rb index d9fe08ceb50..b999a6fd5b6 100644 --- a/spec/workers/prune_old_events_worker_spec.rb +++ b/spec/workers/prune_old_events_worker_spec.rb @@ -16,12 +16,17 @@ describe PruneOldEventsWorker do it 'leaves fresh events' do subject.perform - expect(not_expired_event.reload).to be_present + expect(not_expired_1_day_event.reload).to be_present end - it 'leaves events from exactly 12 months ago' do + it 'leaves events from 13 months ago' do subject.perform - expect(exactly_12_months_event).to be_present + expect(not_expired_13_month_event.reload).to be_present + end + + it 'leaves events from 2 years ago' do + subject.perform + expect(not_expired_2_years_event).to be_present end end end -- cgit v1.2.1 From 71961608db04740faa086e6fd7b66e7f6e55fd4e Mon Sep 17 00:00:00 2001 From: Alessio Caiazza Date: Fri, 5 Oct 2018 20:28:47 +0200 Subject: Fix time dependent jobs spec --- spec/features/projects/jobs_spec.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb index 67b4a520184..2076ce7b4f7 100644 --- a/spec/features/projects/jobs_spec.rb +++ b/spec/features/projects/jobs_spec.rb @@ -568,12 +568,8 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do end it 'shows delayed job', :js do - time_diff = [0, job.scheduled_at - Time.now].max - - expect(page).to have_content(job.detailed_status(user).illustration[:title]) expect(page).to have_content('This is a scheduled to run in') expect(page).to have_content("This job will automatically run after it's timer finishes.") - expect(page).to have_content(Time.at(time_diff).utc.strftime("%H:%M:%S")) expect(page).to have_link('Unschedule job') end -- cgit v1.2.1 From 869ec04904027550278cc84b132a0482dda44322 Mon Sep 17 00:00:00 2001 From: Gilbert Roulot Date: Fri, 5 Oct 2018 18:30:49 +0000 Subject: Document Security and Licence Management features permissions --- doc/user/permissions.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/user/permissions.md b/doc/user/permissions.md index 4a1ca41ab97..4359592905d 100644 --- a/doc/user/permissions.md +++ b/doc/user/permissions.md @@ -42,6 +42,8 @@ The following table depicts the various user permission levels in a project. | See a job log | ✓ [^3] | ✓ | ✓ | ✓ | ✓ | | Download and browse job artifacts | ✓ [^3] | ✓ | ✓ | ✓ | ✓ | | View wiki pages | ✓ [^1] | ✓ | ✓ | ✓ | ✓ | +| View license management reports **[ULTIMATE]** | ✓ [^1] | ✓ | ✓ | ✓ | ✓ | +| View Security reports **[ULTIMATE]** | ✓ [^1] | ✓ | ✓ | ✓ | ✓ | | Pull project code | [^1] | ✓ | ✓ | ✓ | ✓ | | Download project | [^1] | ✓ | ✓ | ✓ | ✓ | | Assign issues | | ✓ | ✓ | ✓ | ✓ | @@ -57,6 +59,7 @@ The following table depicts the various user permission levels in a project. | See a list of merge requests | | ✓ | ✓ | ✓ | ✓ | | Manage related issues **[STARTER]** | | ✓ | ✓ | ✓ | ✓ | | Lock issue discussions | | ✓ | ✓ | ✓ | ✓ | +| Create issue from vulnerability **[ULTIMATE]** | | ✓ | ✓ | ✓ | ✓ | | Lock merge request discussions | | | ✓ | ✓ | ✓ | | Create new environments | | | ✓ | ✓ | ✓ | | Stop environments | | | ✓ | ✓ | ✓ | @@ -73,6 +76,9 @@ The following table depicts the various user permission levels in a project. | Update a container registry | | | ✓ | ✓ | ✓ | | Remove a container registry image | | | ✓ | ✓ | ✓ | | Create/edit/delete project milestones | | | ✓ | ✓ | ✓ | +| View approved/blacklisted licenses **[ULTIMATE]** | | | ✓ | ✓ | ✓ | +| Use security dashboard **[ULTIMATE]** | | | ✓ | ✓ | ✓ | +| Dismiss vulnerability **[ULTIMATE]** | | | ✓ | ✓ | ✓ | | Use environment terminals | | | | ✓ | ✓ | | Add new team members | | | | ✓ | ✓ | | Push to protected branches | | | | ✓ | ✓ | @@ -90,6 +96,7 @@ The following table depicts the various user permission levels in a project. | Manage GitLab Pages domains and certificates | | | | ✓ | ✓ | | Remove GitLab Pages | | | | | ✓ | | Manage clusters | | | | ✓ | ✓ | +| Manage license policy **[ULTIMATE]** | | | | ✓ | ✓ | | Edit comments (posted by any user) | | | | ✓ | ✓ | | Switch visibility level | | | | | ✓ | | Transfer project to another namespace | | | | | ✓ | @@ -98,7 +105,7 @@ The following table depicts the various user permission levels in a project. | Remove pages | | | | | ✓ | | Force push to protected branches [^4] | | | | | | | Remove protected branches [^4] | | | | | | -| View project Audit Events | | | | ✓ | ✓ | +| View project Audit Events | | | | ✓ | ✓ | ## Project features permissions -- cgit v1.2.1 From db39b0d6da85e4d33aeb4e0bd92f1b127f968964 Mon Sep 17 00:00:00 2001 From: Evan Read Date: Fri, 5 Oct 2018 18:37:31 +0000 Subject: Fix documentation for variables --- doc/ci/variables/where_variables_can_be_used.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/doc/ci/variables/where_variables_can_be_used.md b/doc/ci/variables/where_variables_can_be_used.md index b0d2ea6484d..4e8ce10c9cb 100644 --- a/doc/ci/variables/where_variables_can_be_used.md +++ b/doc/ci/variables/where_variables_can_be_used.md @@ -17,8 +17,8 @@ There are two places defined variables can be used. On the: | Definition | Can be expanded? | Expansion place | Description | |--------------------------------------|-------------------|-----------------|--------------| -| `environment:url` | yes | GitLab | The variable expansion is made by GitLab's [internal variable expansion mechanism](#gitlab-internal-variable-expansion-mechanism).
  • **Supported:** all variables defined for a job (project/group variables, variables from `.gitlab-ci.yml`, variables from triggers, variables from pipeline schedules)
  • **Not suported:** variables defined in Runner's `config.toml` and variables created in job's `script`
| -| `environment:name` | yes | GitLab | Similar to `environment:url`, but the variables expansion **doesn't support**:
  • variables that are based on the environment's name (`CI_ENVIRONMENT_NAME`, `CI_ENVIRONMENT_SLUG`)
  • any other variables related to environment (currently only `CI_ENVIRONMENT_URL`)
  • [persisted variables](#persisted-variables)
| +| `environment:url` | yes | GitLab | The variable expansion is made by GitLab's [internal variable expansion mechanism](#gitlab-internal-variable-expansion-mechanism).
  • Supported: all variables defined for a job (project/group variables, variables from `.gitlab-ci.yml`, variables from triggers, variables from pipeline schedules)
  • Not suported: variables defined in Runner's `config.toml` and variables created in job's `script`
| +| `environment:name` | yes | GitLab | Similar to `environment:url`, but the variables expansion doesn't support:
  • variables that are based on the environment's name (`CI_ENVIRONMENT_NAME`, `CI_ENVIRONMENT_SLUG`)
  • any other variables related to environment (currently only `CI_ENVIRONMENT_URL`)
  • [persisted variables](#persisted-variables)
| | `variables` | yes | Runner | The variable expansion is made by GitLab Runner's [internal variable expansion mechanism](#gitlab-runner-internal-variable-expansion-mechanism) | | `image` | yes | Runner | The variable expansion is made by GitLab Runner's [internal variable expansion mechanism](#gitlab-runner-internal-variable-expansion-mechanism) | | `services:[]` | yes | Runner | The variable expansion is made by GitLab Runner's [internal variable expansion mechanism](#gitlab-runner-internal-variable-expansion-mechanism) | @@ -26,7 +26,7 @@ There are two places defined variables can be used. On the: | `cache:key` | yes | Runner | The variable expansion is made by GitLab Runner's [internal variable expansion mechanism](#gitlab-runner-internal-variable-expansion-mechanism) | | `artifacts:name` | yes | Runner | The variable expansion is made by GitLab Runner's shell environment | | `script`, `before_script`, `after_script` | yes | Script execution shell | The variable expansion is made by the [execution shell environment](#execution-shell-environment) | -| `only:variables:[]`, `except:variables:[]` | no | n/a | The variable must be in the form of `$variable`.
**Not supported:**
  • variables that are based on the environment's name (`CI_ENVIRONMENT_NAME`, `CI_ENVIRONMENT_SLUG`)
  • any other variables related to environment (currently only `CI_ENVIRONMENT_URL`)
  • [persisted variables](#persisted-variables)
| +| `only:variables:[]`, `except:variables:[]` | no | n/a | The variable must be in the form of `$variable`.
Not supported:
  • variables that are based on the environment's name (`CI_ENVIRONMENT_NAME`, `CI_ENVIRONMENT_SLUG`)
  • any other variables related to environment (currently only `CI_ENVIRONMENT_URL`)
  • [persisted variables](#persisted-variables)
| ### `config.toml` file @@ -55,9 +55,9 @@ since the expansion is done in GitLab before any Runner will get the job. ### GitLab Runner internal variable expansion mechanism -- **Supported:** project/group variables, `.gitlab-ci.yml` variables, `config.toml` variables, and +- Supported: project/group variables, `.gitlab-ci.yml` variables, `config.toml` variables, and variables from triggers, pipeline schedules, and manual pipelines. -- **Not supported:** variables defined inside of scripts (e.g., `export MY_VARIABLE="test"`). +- Not supported: variables defined inside of scripts (e.g., `export MY_VARIABLE="test"`). The Runner uses Go's `os.Expand()` method for variable expansion. It means that it will handle only variables defined as `$variable` and `${variable}`. What's also important, is that @@ -73,7 +73,7 @@ by bash/sh (leaving empty strings or some values depending whether the variables defined or not), but will not work with Windows' cmd/PowerShell, since these shells are using a different variables syntax. -**Supported:** +Supported: - The `script` may use all available variables that are default for the shell (e.g., `$PATH` which should be present in all bash/sh shells) and all variables defined by GitLab CI/CD (project/group variables, @@ -106,7 +106,9 @@ The following variables are known as "persisted": They are: -- **Supported** for all definitions as [described in the table](#gitlab-ci-yml-file) where the "Expansion place" is "Runner". -- **Not supported:** - - By the definitions [described in the table](#gitlab-ci-yml-file) where the "Expansion place" is "GitLab". +- Supported for definitions where the ["Expansion place"](#gitlab-ci-yml-file) is: + - Runner. + - Script execution shell. +- Not supported: + - For definitions where the ["Expansion place"](#gitlab-ci-yml-file) is GitLab. - In the `only` and `except` [variables expressions](README.md#variables-expressions). -- cgit v1.2.1 From cc339aa60877214820f9445336b5cf7766601176 Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Fri, 5 Oct 2018 13:47:55 -0500 Subject: Update spec comment to point to correct issue --- spec/controllers/projects/merge_requests_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index 41c92a392aa..f2467bfd525 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -779,7 +779,7 @@ describe Projects::MergeRequestsController do end # we're trying to reduce the overall number of queries for this method. - # set a hard limit for now. https://gitlab.com/gitlab-org/gitlab-ce/issues/43109 + # set a hard limit for now. https://gitlab.com/gitlab-org/gitlab-ce/issues/52287 it 'keeps queries in check' do control_count = ActiveRecord::QueryRecorder.new { get_ci_environments_status }.count -- cgit v1.2.1 From 94fc0619365c7df284a29e76b1abc194a266efc2 Mon Sep 17 00:00:00 2001 From: Alessio Caiazza Date: Mon, 1 Oct 2018 15:03:48 +0200 Subject: Add timed incremental rollout to Auto DevOps Auto DevOps deployment strategies now supports timed incremental rollout. We are deprecating the usage of INCREMENTAL_ROLLOUT_ENABLED environment variable in Auto DevOps template. The new behavior will be driven by the INCREMENTAL_ROLLOUT_MODE variable that can either be manual (same as INCREMENTAL_ROLLOUT_ENABLED) or timed. Rollout deployments will be executed using a 5 minute delay between each job. --- app/models/project_auto_devops.rb | 20 +++-- .../settings/ci_cd/_autodevops_form.html.haml | 9 ++- .../autodevops-timed-incremental-rollout.yml | 5 ++ doc/topics/autodevops/index.md | 66 +++++++++++----- lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml | 88 ++++++++++++++-------- locale/gitlab.pot | 3 + spec/factories/project_auto_devops.rb | 12 ++- spec/models/project_auto_devops_spec.rb | 27 ++++--- 8 files changed, 162 insertions(+), 68 deletions(-) create mode 100644 changelogs/unreleased/autodevops-timed-incremental-rollout.yml diff --git a/app/models/project_auto_devops.rb b/app/models/project_auto_devops.rb index dc6736dd9cd..2253ad7b543 100644 --- a/app/models/project_auto_devops.rb +++ b/app/models/project_auto_devops.rb @@ -5,7 +5,8 @@ class ProjectAutoDevops < ActiveRecord::Base enum deploy_strategy: { continuous: 0, - manual: 1 + manual: 1, + timed_incremental: 2 } scope :enabled, -> { where(enabled: true) } @@ -30,10 +31,7 @@ class ProjectAutoDevops < ActiveRecord::Base value: domain.presence || instance_domain) end - if manual? - variables.append(key: 'STAGING_ENABLED', value: '1') - variables.append(key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1') - end + variables.concat(deployment_strategy_default_variables) end end @@ -51,4 +49,16 @@ class ProjectAutoDevops < ActiveRecord::Base !project.public? && !project.deploy_tokens.find_by(name: DeployToken::GITLAB_DEPLOY_TOKEN_NAME).present? end + + def deployment_strategy_default_variables + Gitlab::Ci::Variables::Collection.new.tap do |variables| + if manual? + variables.append(key: 'STAGING_ENABLED', value: '1') + variables.append(key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1') # deprecated + variables.append(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'manual') + elsif timed_incremental? + variables.append(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'timed') + end + end + end end diff --git a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml index ab92b757836..5ec5a06396e 100644 --- a/app/views/projects/settings/ci_cd/_autodevops_form.html.haml +++ b/app/views/projects/settings/ci_cd/_autodevops_form.html.haml @@ -39,10 +39,17 @@ = form.label :deploy_strategy_continuous, class: 'form-check-label' do = s_('CICD|Continuous deployment to production') = link_to icon('question-circle'), help_page_path('topics/autodevops/index.md', anchor: 'auto-deploy'), target: '_blank' + + .form-check + = form.radio_button :deploy_strategy, 'timed_incremental', class: 'form-check-input' + = form.label :deploy_strategy_timed_incremental, class: 'form-check-label' do + = s_('CICD|Continuous deployment to production using timed incremental rollout') + = link_to icon('question-circle'), help_page_path('topics/autodevops/index.md', anchor: 'timed-incremental-rollout-to-production'), target: '_blank' + .form-check = form.radio_button :deploy_strategy, 'manual', class: 'form-check-input' = form.label :deploy_strategy_manual, class: 'form-check-label' do = s_('CICD|Automatic deployment to staging, manual deployment to production') - = link_to icon('question-circle'), help_page_path('ci/environments.md', anchor: 'manually-deploying-to-environments'), target: '_blank' + = link_to icon('question-circle'), help_page_path('topics/autodevops/index.md', anchor: 'incremental-rollout-to-production'), target: '_blank' = f.submit _('Save changes'), class: "btn btn-success prepend-top-15" diff --git a/changelogs/unreleased/autodevops-timed-incremental-rollout.yml b/changelogs/unreleased/autodevops-timed-incremental-rollout.yml new file mode 100644 index 00000000000..72c7b41177d --- /dev/null +++ b/changelogs/unreleased/autodevops-timed-incremental-rollout.yml @@ -0,0 +1,5 @@ +--- +title: Add timed incremental rollout to Auto DevOps +merge_request: 22023 +author: +type: added diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index b5a9e469965..0d1ba3e8f9a 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -239,14 +239,19 @@ project's **Settings > CI/CD > Auto DevOps**. The available options are: -- **Continuous deployment to production** - enables [Auto Deploy](#auto-deploy) - by setting the [`STAGING_ENABLED`](#deploy-policy-for-staging-and-production-environments) and - [`INCREMENTAL_ROLLOUT_ENABLED`](#incremental-rollout-to-production) variables - to false. -- **Automatic deployment to staging, manual deployment to production** - sets the +- **Continuous deployment to production**: Enables [Auto Deploy](#auto-deploy) + with `master` branch directly deployed to production. +- **Continuous deployment to production using timed incremental rollout**: Sets the + [`INCREMENTAL_ROLLOUT_MODE`](#timed-incremental-rollout-to-production) variable + to `timed`, and production deployment will be executed with a 5 minute delay between + each increment in rollout. +- **Automatic deployment to staging, manual deployment to production**: Sets the [`STAGING_ENABLED`](#deploy-policy-for-staging-and-production-environments) and - [`INCREMENTAL_ROLLOUT_ENABLED`](#incremental-rollout-to-production) variables - to true, and the user is responsible for manually deploying to staging and production. + [`INCREMENTAL_ROLLOUT_MODE`](#incremental-rollout-to-production) variables + to `1` and `manual`. This means: + + - `master` branch is directly deployed to staging. + - Manual actions are provided for incremental rollout to production. ## Stages of Auto DevOps @@ -609,7 +614,7 @@ also be customized, and you can easily use a [custom buildpack](#custom-buildpac | `DB_MIGRATE` | From GitLab 11.4, this variable can be used to specify the command to run to migrate the application's PostgreSQL database. It runs inside the application pod. | | `STAGING_ENABLED` | From GitLab 10.8, this variable can be used to define a [deploy policy for staging and production environments](#deploy-policy-for-staging-and-production-environments). | | `CANARY_ENABLED` | From GitLab 11.0, this variable can be used to define a [deploy policy for canary environments](#deploy-policy-for-canary-environments). | -| `INCREMENTAL_ROLLOUT_ENABLED`| From GitLab 10.8, this variable can be used to enable an [incremental rollout](#incremental-rollout-to-production) of your application for the production environment. | +| `INCREMENTAL_ROLLOUT_MODE`| From GitLab 11.4, this variable, if present, can be used to enable an [incremental rollout](#incremental-rollout-to-production) of your application for the production environment.
Set to:
  • `manual`, for manual deployment jobs.
  • `timed`, for automatic rollout deployments with a 5 minute delay each one.
| | `TEST_DISABLED` | From GitLab 11.0, this variable can be used to disable the `test` job. If the variable is present, the job will not be created. | | `CODE_QUALITY_DISABLED` | From GitLab 11.0, this variable can be used to disable the `codequality` job. If the variable is present, the job will not be created. | | `SAST_DISABLED` | From GitLab 11.0, this variable can be used to disable the `sast` job. If the variable is present, the job will not be created. | @@ -730,9 +735,8 @@ to use an incremental rollout to replace just a few pods with the latest code. This will allow you to first check how the app is behaving, and later manually increasing the rollout up to 100%. -If `INCREMENTAL_ROLLOUT_ENABLED` is defined in your project (e.g., set -`INCREMENTAL_ROLLOUT_ENABLED` to `1` as a secret variable), then instead of the -standard `production` job, 4 different +If `INCREMENTAL_ROLLOUT_MODE` is set to `manual` in your project, then instead +of the standard `production` job, 4 different [manual jobs](../../ci/pipelines.md#manual-actions-from-the-pipeline-graph) will be created: @@ -756,21 +760,45 @@ environment page. Below, you can see how the pipeline will look if the rollout or staging variables are defined. -- **Without `INCREMENTAL_ROLLOUT_ENABLED` and without `STAGING_ENABLED`** +Without `INCREMENTAL_ROLLOUT_MODE` and without `STAGING_ENABLED`: + +![Staging and rollout disabled](img/rollout_staging_disabled.png) + +Without `INCREMENTAL_ROLLOUT_MODE` and with `STAGING_ENABLED`: - ![Staging and rollout disabled](img/rollout_staging_disabled.png) +![Staging enabled](img/staging_enabled.png) -- **Without `INCREMENTAL_ROLLOUT_ENABLED` and with `STAGING_ENABLED`** +With `INCREMENTAL_ROLLOUT_MODE` set to `manual` and without `STAGING_ENABLED`: - ![Staging enabled](img/staging_enabled.png) +![Rollout enabled](img/rollout_enabled.png) -- **With `INCREMENTAL_ROLLOUT_ENABLED` and without `STAGING_ENABLED`** +With `INCREMENTAL_ROLLOUT_MODE` set to `manual` and with `STAGING_ENABLED` + +![Rollout and staging enabled](img/rollout_staging_enabled.png) + +CAUTION: **Caution:** +Before GitLab 11.4 this feature was enabled by the presence of the +`INCREMENTAL_ROLLOUT_ENABLED` environment variable. +This configuration is deprecated and will be removed in the future. + +#### Timed incremental rollout to production **[PREMIUM]** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab-ee/issues/7545) in GitLab 11.4. + +TIP: **Tip:** +You can also set this inside your [project's settings](#deployment-strategy). - ![Rollout enabled](img/rollout_enabled.png) +This configuration based on +[incremental rollout to production](#incremental-rollout-to-production). -- **With `INCREMENTAL_ROLLOUT_ENABLED` and with `STAGING_ENABLED`** +Everything behaves the same way, except: - ![Rollout and staging enabled](img/rollout_staging_enabled.png) +- It's enabled by setting the `INCREMENTAL_ROLLOUT_MODE` variable to `timed`. +- Instead of the standard `production` job, the following jobs with a 5 minute delay between each are created: + 1. `timed rollout 10%` + 1. `timed rollout 25%` + 1. `timed rollout 50%` + 1. `timed rollout 100%` ## Currently supported languages diff --git a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml index ed4ec7e6385..72547c1b407 100644 --- a/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @@ -25,8 +25,9 @@ # level, or manually added below. # # Continuous deployment to production is enabled by default. -# If you want to deploy to staging first, or enable incremental rollouts, -# set STAGING_ENABLED or INCREMENTAL_ROLLOUT_ENABLED environment variables. +# If you want to deploy to staging first, set STAGING_ENABLED environment variable. +# If you want to enable incremental rollout, either manual or time based, +# set INCREMENTAL_ROLLOUT_TYPE environment variable to "manual" or "timed". # If you want to use canary deployments, set CANARY_ENABLED environment variable. # # If Auto DevOps fails to detect the proper buildpack, or if you want to @@ -61,6 +62,10 @@ stages: - staging - canary - production + - incremental rollout 10% + - incremental rollout 25% + - incremental rollout 50% + - incremental rollout 100% - performance - cleanup @@ -282,11 +287,6 @@ stop_review: variables: - $REVIEW_DISABLED -# Keys that start with a dot (.) will not be processed by GitLab CI. -# Staging and canary jobs are disabled by default, to enable them -# remove the dot (.) before the job name. -# https://docs.gitlab.com/ee/ci/yaml/README.html#hidden-keys - # Staging deploys are disabled by default since # continuous deployment to production is enabled by default # If you prefer to automatically deploy to staging and @@ -368,6 +368,7 @@ production: - $STAGING_ENABLED - $CANARY_ENABLED - $INCREMENTAL_ROLLOUT_ENABLED + - $INCREMENTAL_ROLLOUT_MODE production_manual: <<: *production_template @@ -383,11 +384,11 @@ production_manual: except: variables: - $INCREMENTAL_ROLLOUT_ENABLED + - $INCREMENTAL_ROLLOUT_MODE # This job implements incremental rollout on for every push to `master`. .rollout: &rollout_template - stage: production script: - check_kube_domain - install_dependencies @@ -405,52 +406,77 @@ production_manual: artifacts: paths: [environment_url.txt] -rollout 10%: +.manual_rollout_template: &manual_rollout_template <<: *rollout_template - variables: - ROLLOUT_PERCENTAGE: 10 + stage: production when: manual + # This selectors are backward compatible mode with $INCREMENTAL_ROLLOUT_ENABLED (before 11.4) only: refs: - master kubernetes: active variables: + - $INCREMENTAL_ROLLOUT_MODE == "manual" - $INCREMENTAL_ROLLOUT_ENABLED + except: + variables: + - $INCREMENTAL_ROLLOUT_MODE == "timed" -rollout 25%: +.timed_rollout_template: &timed_rollout_template <<: *rollout_template - variables: - ROLLOUT_PERCENTAGE: 25 - when: manual + when: delayed + start_in: 5 minutes only: refs: - master kubernetes: active variables: - - $INCREMENTAL_ROLLOUT_ENABLED + - $INCREMENTAL_ROLLOUT_MODE == "timed" + +timed rollout 10%: + <<: *timed_rollout_template + stage: incremental rollout 10% + variables: + ROLLOUT_PERCENTAGE: 10 + +timed rollout 25%: + <<: *timed_rollout_template + stage: incremental rollout 25% + variables: + ROLLOUT_PERCENTAGE: 25 + +timed rollout 50%: + <<: *timed_rollout_template + stage: incremental rollout 50% + variables: + ROLLOUT_PERCENTAGE: 50 + +timed rollout 100%: + <<: *timed_rollout_template + <<: *production_template + stage: incremental rollout 100% + variables: + ROLLOUT_PERCENTAGE: 100 + +rollout 10%: + <<: *manual_rollout_template + variables: + ROLLOUT_PERCENTAGE: 10 + +rollout 25%: + <<: *manual_rollout_template + variables: + ROLLOUT_PERCENTAGE: 25 rollout 50%: - <<: *rollout_template + <<: *manual_rollout_template variables: ROLLOUT_PERCENTAGE: 50 - when: manual - only: - refs: - - master - kubernetes: active - variables: - - $INCREMENTAL_ROLLOUT_ENABLED rollout 100%: + <<: *manual_rollout_template <<: *production_template - when: manual allow_failure: false - only: - refs: - - master - kubernetes: active - variables: - - $INCREMENTAL_ROLLOUT_ENABLED # --------------------------------------------------------------------------- diff --git a/locale/gitlab.pot b/locale/gitlab.pot index d16a72b76b8..20b70bc2cd3 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -1081,6 +1081,9 @@ msgstr "" msgid "CICD|Continuous deployment to production" msgstr "" +msgid "CICD|Continuous deployment to production using timed incremental rollout" +msgstr "" + msgid "CICD|Default to Auto DevOps pipeline" msgstr "" diff --git a/spec/factories/project_auto_devops.rb b/spec/factories/project_auto_devops.rb index b77f702f9e1..75ac7cc7687 100644 --- a/spec/factories/project_auto_devops.rb +++ b/spec/factories/project_auto_devops.rb @@ -5,8 +5,16 @@ FactoryBot.define do domain "example.com" deploy_strategy :continuous - trait :manual do - deploy_strategy :manual + trait :continuous_deployment do + deploy_strategy ProjectAutoDevops.deploy_strategies[:continuous] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically + end + + trait :manual_deployment do + deploy_strategy ProjectAutoDevops.deploy_strategies[:manual] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically + end + + trait :timed_incremental_deployment do + deploy_strategy ProjectAutoDevops.deploy_strategies[:timed_incremental] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically end trait :disabled do diff --git a/spec/models/project_auto_devops_spec.rb b/spec/models/project_auto_devops_spec.rb index 797d767465a..342798f730b 100644 --- a/spec/models/project_auto_devops_spec.rb +++ b/spec/models/project_auto_devops_spec.rb @@ -70,24 +70,31 @@ describe ProjectAutoDevops do end context 'when deploy_strategy is manual' do - let(:domain) { 'example.com' } - - before do - auto_devops.deploy_strategy = 'manual' + let(:auto_devops) { build_stubbed(:project_auto_devops, :manual_deployment, project: project) } + let(:expected_variables) do + [ + { key: 'INCREMENTAL_ROLLOUT_MODE', value: 'manual' }, + { key: 'STAGING_ENABLED', value: '1' }, + { key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1' } + ] end + it { expect(auto_devops.predefined_variables).to include(*expected_variables) } + end + + context 'when deploy_strategy is continuous' do + let(:auto_devops) { build_stubbed(:project_auto_devops, :continuous_deployment, project: project) } + it do expect(auto_devops.predefined_variables.map { |var| var[:key] }) - .to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED") + .not_to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED") end end - context 'when deploy_strategy is continuous' do - let(:domain) { 'example.com' } + context 'when deploy_strategy is timed_incremental' do + let(:auto_devops) { build_stubbed(:project_auto_devops, :timed_incremental_deployment, project: project) } - before do - auto_devops.deploy_strategy = 'continuous' - end + it { expect(auto_devops.predefined_variables).to include(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'timed') } it do expect(auto_devops.predefined_variables.map { |var| var[:key] }) -- cgit v1.2.1 From 7b8b2563c4d6b0090fd33fd50aad81561519f9cd Mon Sep 17 00:00:00 2001 From: Gabriel Mazetto Date: Mon, 1 Oct 2018 23:50:48 -0300 Subject: Prepare admin/projects/show view to allow EE specific feature In EE it will render a Geo Status widget when Geo is enabled and it is in a secondary node. Also added minimal specs to that action. --- app/views/admin/projects/show.html.haml | 2 ++ spec/controllers/admin/projects_controller_spec.rb | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index 32f6eefc16a..fefb4c7455d 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -112,6 +112,8 @@ = visibility_level_icon(@project.visibility_level) = visibility_level_label(@project.visibility_level) + = render_if_exists 'admin/projects/geo_status_widget', locals: { project: @project } + .card .card-header Transfer project diff --git a/spec/controllers/admin/projects_controller_spec.rb b/spec/controllers/admin/projects_controller_spec.rb index cc200b9fed9..ee1aff09bdf 100644 --- a/spec/controllers/admin/projects_controller_spec.rb +++ b/spec/controllers/admin/projects_controller_spec.rb @@ -42,4 +42,15 @@ describe Admin::ProjectsController do expect { get :index }.not_to exceed_query_limit(control_count) end end + + describe 'GET /projects/:id' do + render_views + + it 'renders show page' do + get :show, namespace_id: project.namespace.path, id: project.path + + expect(response).to have_gitlab_http_status(200) + expect(response.body).to match(project.name) + end + end end -- cgit v1.2.1 From caf10464c0e78817c91ff01e3be5f2f9472aba19 Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Fri, 5 Oct 2018 22:36:20 +0000 Subject: Fix LFS uploaded images not being rendered --- .../javascripts/diffs/components/diff_content.vue | 2 +- app/serializers/diff_file_entity.rb | 4 ++++ app/serializers/diff_viewer_entity.rb | 7 +++++++ .../unreleased/osw-fix-lfs-images-not-rendering.yml | 5 +++++ spec/fixtures/api/schemas/entities/diff_viewer.json | 8 ++++++++ .../javascripts/diffs/components/diff_content_spec.js | 5 ++--- spec/javascripts/diffs/components/diff_file_spec.js | 5 ++--- spec/javascripts/diffs/mock_data/diff_file.js | 3 +++ spec/serializers/diff_file_entity_spec.rb | 5 +++++ spec/serializers/diff_viewer_entity_spec.rb | 19 +++++++++++++++++++ 10 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 app/serializers/diff_viewer_entity.rb create mode 100644 changelogs/unreleased/osw-fix-lfs-images-not-rendering.yml create mode 100644 spec/fixtures/api/schemas/entities/diff_viewer.json create mode 100644 spec/serializers/diff_viewer_entity_spec.rb diff --git a/app/assets/javascripts/diffs/components/diff_content.vue b/app/assets/javascripts/diffs/components/diff_content.vue index 02d5be1821b..fb5556e3cd7 100644 --- a/app/assets/javascripts/diffs/components/diff_content.vue +++ b/app/assets/javascripts/diffs/components/diff_content.vue @@ -28,7 +28,7 @@ export default { return diffModes[diffModeKey] || diffModes.replaced; }, isTextFile() { - return this.diffFile.text; + return this.diffFile.viewer.name === 'text'; }, }, }; diff --git a/app/serializers/diff_file_entity.rb b/app/serializers/diff_file_entity.rb index c193ed10fef..63ea8e8f95f 100644 --- a/app/serializers/diff_file_entity.rb +++ b/app/serializers/diff_file_entity.rb @@ -116,6 +116,10 @@ class DiffFileEntity < Grape::Entity project_blob_path(project, tree_join(diff_file.content_sha, diff_file.new_path)) end + expose :viewer, using: DiffViewerEntity do |diff_file| + diff_file.rich_viewer || diff_file.simple_viewer + end + expose :replaced_view_path, if: -> (_, options) { options[:merge_request] } do |diff_file| image_diff = diff_file.rich_viewer && diff_file.rich_viewer.partial_name == 'image' image_replaced = diff_file.old_content_sha && diff_file.old_content_sha != diff_file.content_sha diff --git a/app/serializers/diff_viewer_entity.rb b/app/serializers/diff_viewer_entity.rb new file mode 100644 index 00000000000..27fba03cb3f --- /dev/null +++ b/app/serializers/diff_viewer_entity.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class DiffViewerEntity < Grape::Entity + # Partial name refers directly to a Rails feature, let's avoid + # using this on the frontend. + expose :partial_name, as: :name +end diff --git a/changelogs/unreleased/osw-fix-lfs-images-not-rendering.yml b/changelogs/unreleased/osw-fix-lfs-images-not-rendering.yml new file mode 100644 index 00000000000..5dde22d3158 --- /dev/null +++ b/changelogs/unreleased/osw-fix-lfs-images-not-rendering.yml @@ -0,0 +1,5 @@ +--- +title: Fix LFS uploaded images not being rendered +merge_request: 22092 +author: +type: fixed diff --git a/spec/fixtures/api/schemas/entities/diff_viewer.json b/spec/fixtures/api/schemas/entities/diff_viewer.json new file mode 100644 index 00000000000..19780f49a88 --- /dev/null +++ b/spec/fixtures/api/schemas/entities/diff_viewer.json @@ -0,0 +1,8 @@ +{ + "type": "object", + "required": ["name"], + "properties": { + "name": { "type": ["string"] } + }, + "additionalProperties": false +} diff --git a/spec/javascripts/diffs/components/diff_content_spec.js b/spec/javascripts/diffs/components/diff_content_spec.js index dea600a783a..67f7b569f47 100644 --- a/spec/javascripts/diffs/components/diff_content_spec.js +++ b/spec/javascripts/diffs/components/diff_content_spec.js @@ -8,13 +8,12 @@ import diffFileMockData from '../mock_data/diff_file'; describe('DiffContent', () => { const Component = Vue.extend(DiffContentComponent); let vm; - const getDiffFileMock = () => Object.assign({}, diffFileMockData); beforeEach(() => { vm = mountComponentWithStore(Component, { store, props: { - diffFile: getDiffFileMock(), + diffFile: JSON.parse(JSON.stringify(diffFileMockData)), }, }); }); @@ -43,7 +42,7 @@ describe('DiffContent', () => { describe('Non-Text diffs', () => { beforeEach(() => { - vm.diffFile.text = false; + vm.diffFile.viewer.name = 'image'; }); describe('image diff', () => { diff --git a/spec/javascripts/diffs/components/diff_file_spec.js b/spec/javascripts/diffs/components/diff_file_spec.js index 2a52cd2b179..13859f43e98 100644 --- a/spec/javascripts/diffs/components/diff_file_spec.js +++ b/spec/javascripts/diffs/components/diff_file_spec.js @@ -6,11 +6,10 @@ import diffFileMockData from '../mock_data/diff_file'; describe('DiffFile', () => { let vm; - const getDiffFileMock = () => Object.assign({}, diffFileMockData); beforeEach(() => { vm = createComponentWithStore(Vue.extend(DiffFileComponent), store, { - file: getDiffFileMock(), + file: JSON.parse(JSON.stringify(diffFileMockData)), canCurrentUserFork: false, }).$mount(); }); @@ -18,7 +17,7 @@ describe('DiffFile', () => { describe('template', () => { it('should render component with file header, file content components', () => { const el = vm.$el; - const { fileHash, filePath } = diffFileMockData; + const { fileHash, filePath } = vm.file; expect(el.id).toEqual(fileHash); expect(el.classList.contains('diff-file')).toEqual(true); diff --git a/spec/javascripts/diffs/mock_data/diff_file.js b/spec/javascripts/diffs/mock_data/diff_file.js index 2aa2f8f3528..d7bc0dbe431 100644 --- a/spec/javascripts/diffs/mock_data/diff_file.js +++ b/spec/javascripts/diffs/mock_data/diff_file.js @@ -23,6 +23,9 @@ export default { aMode: '100644', bMode: '100644', text: true, + viewer: { + name: 'text', + }, addedLines: 2, removedLines: 0, diffRefs: { diff --git a/spec/serializers/diff_file_entity_spec.rb b/spec/serializers/diff_file_entity_spec.rb index 3d90ce44dfb..7497b8f27bd 100644 --- a/spec/serializers/diff_file_entity_spec.rb +++ b/spec/serializers/diff_file_entity_spec.rb @@ -26,6 +26,11 @@ describe DiffFileEntity do ) end + it 'includes viewer' do + expect(subject[:viewer].with_indifferent_access) + .to match_schema('entities/diff_viewer') + end + # Converted diff files from GitHub import does not contain blob file # and content sha. context 'when diff file does not have a blob and content sha' do diff --git a/spec/serializers/diff_viewer_entity_spec.rb b/spec/serializers/diff_viewer_entity_spec.rb new file mode 100644 index 00000000000..66ac6ef2adc --- /dev/null +++ b/spec/serializers/diff_viewer_entity_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe DiffViewerEntity do + include RepoHelpers + + let(:project) { create(:project, :repository) } + let(:repository) { project.repository } + let(:commit) { project.commit(sample_commit.id) } + let(:diff_refs) { commit.diff_refs } + let(:diff) { commit.raw_diffs.first } + let(:diff_file) { Gitlab::Diff::File.new(diff, diff_refs: diff_refs, repository: repository) } + let(:viewer) { diff_file.simple_viewer } + + subject { described_class.new(viewer).as_json } + + it 'serializes diff file viewer' do + expect(subject.with_indifferent_access).to match_schema('entities/diff_viewer') + end +end -- cgit v1.2.1 From ef6f2b28237c76a75bd0903f11d88c5283411e3a Mon Sep 17 00:00:00 2001 From: George Tsiolis Date: Thu, 27 Sep 2018 23:53:01 +0300 Subject: Update operations metrics empty state --- app/views/projects/environments/empty.html.haml | 18 +++++++++--------- .../update-operations-metrics-empty-state.yml | 5 +++++ 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 changelogs/unreleased/update-operations-metrics-empty-state.yml diff --git a/app/views/projects/environments/empty.html.haml b/app/views/projects/environments/empty.html.haml index 1413930ebdb..129dbbf4e56 100644 --- a/app/views/projects/environments/empty.html.haml +++ b/app/views/projects/environments/empty.html.haml @@ -1,14 +1,14 @@ - page_title _("Metrics") -.row +.row.empty-state .col-sm-12 .svg-content = image_tag 'illustrations/operations_metrics_empty.svg' -.row.empty-environments - .col-sm-12.text-center - %h4 - = s_('Metrics|No deployed environments') - .state-description - = s_('Metrics|Check out the CI/CD documentation on deploying to an environment') - .prepend-top-10 - = link_to s_("Metrics|Learn about environments"), help_page_path('ci/environments'), class: 'btn btn-success' + .col-12 + .text-content + %h4.text-center + = s_('Metrics|No deployed environments') + %p.state-description + = s_('Metrics|Check out the CI/CD documentation on deploying to an environment') + .text-center + = link_to s_("Metrics|Learn about environments"), help_page_path('ci/environments'), class: 'btn btn-success' diff --git a/changelogs/unreleased/update-operations-metrics-empty-state.yml b/changelogs/unreleased/update-operations-metrics-empty-state.yml new file mode 100644 index 00000000000..51f3935b769 --- /dev/null +++ b/changelogs/unreleased/update-operations-metrics-empty-state.yml @@ -0,0 +1,5 @@ +--- +title: Update operations metrics empty state +merge_request: 21974 +author: George Tsiolis +type: other -- cgit v1.2.1 From b0ae67a4ecb2d11c1ce6ea286adfaa1b4e2a3449 Mon Sep 17 00:00:00 2001 From: Jeremy Watson Date: Sat, 6 Oct 2018 01:02:29 +0000 Subject: Added changelog --- changelogs/unreleased/copy-changes-for-abuse-clarity.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/copy-changes-for-abuse-clarity.yml diff --git a/changelogs/unreleased/copy-changes-for-abuse-clarity.yml b/changelogs/unreleased/copy-changes-for-abuse-clarity.yml new file mode 100644 index 00000000000..00d9fec5e42 --- /dev/null +++ b/changelogs/unreleased/copy-changes-for-abuse-clarity.yml @@ -0,0 +1,5 @@ +--- +title: Increased retained event data by extending events pruner timeframe to 2 years +merge_request: 22145 +author: +type: changed -- cgit v1.2.1 From 71ffca52bd8b923d056aebfa2becbf8a5c271686 Mon Sep 17 00:00:00 2001 From: Paul Giberson Date: Sat, 6 Oct 2018 05:44:07 +0000 Subject: Updates Laravel.gitlab-ci.yml template Updates to add gnupgp (required for node setup) Upgrades node install to version 8 --- lib/gitlab/ci/templates/Laravel.gitlab-ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/ci/templates/Laravel.gitlab-ci.yml b/lib/gitlab/ci/templates/Laravel.gitlab-ci.yml index 0688f77a1d2..d0cad285572 100644 --- a/lib/gitlab/ci/templates/Laravel.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Laravel.gitlab-ci.yml @@ -25,9 +25,12 @@ before_script: # Update packages - apt-get update -yqq - # Upgrade to Node 7 - - curl -sL https://deb.nodesource.com/setup_7.x | bash - - + # Prep for Node + - apt-get install gnupg -yqq + + # Upgrade to Node 8 + - curl -sL https://deb.nodesource.com/setup_8.x | bash - + # Install dependencies - apt-get install git nodejs libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq -- cgit v1.2.1 From c812d17e74ba521145716cc3ddf7a5aae205a77c Mon Sep 17 00:00:00 2001 From: James Lopez Date: Sat, 6 Oct 2018 07:52:13 +0000 Subject: Update GITALY_SERVER_VERSION --- GITALY_SERVER_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index ee476f3ae84..b1fa68e5df9 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -0.124.0 +0.125.0 -- cgit v1.2.1 From 533a6fef314a3ad0b007b2ce0885f148d29a4081 Mon Sep 17 00:00:00 2001 From: Jeremy Watson Date: Sat, 6 Oct 2018 10:09:49 +0000 Subject: Updated code comments for clarity based on 2 years --- app/workers/prune_old_events_worker.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/workers/prune_old_events_worker.rb b/app/workers/prune_old_events_worker.rb index 958d613b859..dc4b7670131 100644 --- a/app/workers/prune_old_events_worker.rb +++ b/app/workers/prune_old_events_worker.rb @@ -6,9 +6,8 @@ class PruneOldEventsWorker # rubocop: disable CodeReuse/ActiveRecord def perform - # Contribution calendar shows maximum 12 months of events. - # Double nested query is used because MySQL doesn't allow DELETE subqueries - # on the same table. + # Contribution calendar shows maximum 12 months of events, we retain 2 years for data integrity. + # Double nested query is used because MySQL doesn't allow DELETE subqueries on the same table. Event.unscoped.where( '(id IN (SELECT id FROM (?) ids_to_remove))', Event.unscoped.where( -- cgit v1.2.1 From 6170bfd8f5837f2d9d416559fdedab6ecbb16b84 Mon Sep 17 00:00:00 2001 From: Jeremy Watson Date: Sat, 6 Oct 2018 10:12:30 +0000 Subject: Updated docs to reflect new 2 year period --- doc/api/events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/events.md b/doc/api/events.md index fb5ebb71a86..cd84b32029e 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -44,7 +44,7 @@ YYYY-MM-DD ### Event Time Period Limit -GitLab removes events older than 1 year from the events table for performance reasons. The range of 1 year was chosen because user contribution calendars only show contributions of the past year. +GitLab removes events older than 2 years from the events table for performance reasons. ## List currently authenticated user's events -- cgit v1.2.1 From e9f7908f5eb88c43c5e1689190a3d6b0c840a650 Mon Sep 17 00:00:00 2001 From: George Tsiolis Date: Sat, 6 Oct 2018 14:30:35 +0000 Subject: Add button to insert table in markdown editor --- .../vue_shared/components/markdown/header.vue | 16 ++++++++++++++++ app/views/projects/_md_preview.html.haml | 2 ++ .../add-button-to-insert-table-in-markdown.yml | 5 +++++ locale/gitlab.pot | 6 ++++++ .../vue_shared/components/markdown/header_spec.js | 13 +++++++++++-- 5 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/add-button-to-insert-table-in-markdown.yml diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index afc4196c729..ccd53158820 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -18,6 +18,16 @@ required: true, }, }, + computed: { + mdTable() { + return [ + '| header | header |', + '| ------ | ------ |', + '| cell | cell |', + '| cell | cell |', + ].join('\n'); + }, + }, mounted() { $(document).on('markdown-preview:show.vue', this.previewMarkdownTab); $(document).on('markdown-preview:hide.vue', this.writeMarkdownTab); @@ -129,6 +139,12 @@ button-title="Add a task list" icon="task-done" /> +
+ +
+