Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md9
-rw-r--r--GITALY_SERVER_VERSION2
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock4
-rw-r--r--VERSION2
-rw-r--r--app/assets/javascripts/gl_dropdown.js2
-rw-r--r--app/assets/javascripts/ide/services/index.js8
-rw-r--r--app/assets/javascripts/ide/stores/modules/commit/actions.js1
-rw-r--r--app/assets/javascripts/ide/stores/utils.js11
-rw-r--r--app/controllers/concerns/issuable_collections.rb2
-rw-r--r--app/controllers/concerns/issuable_collections_action.rb4
-rw-r--r--app/controllers/import/fogbugz_controller.rb8
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/controllers/snippets_controller.rb2
-rw-r--r--app/controllers/uploads_controller.rb20
-rw-r--r--app/graphql/types/label_type.rb2
-rw-r--r--app/graphql/types/metadata_type.rb2
-rw-r--r--app/graphql/types/namespace_type.rb2
-rw-r--r--app/graphql/types/project_type.rb2
-rw-r--r--app/graphql/types/query_type.rb5
-rw-r--r--app/helpers/issuables_helper.rb2
-rw-r--r--app/helpers/snippets_helper.rb10
-rw-r--r--app/models/concerns/issuable.rb6
-rw-r--r--app/models/issue.rb4
-rw-r--r--app/models/merge_requests_closing_issues.rb35
-rw-r--r--app/policies/repository_policy.rb5
-rw-r--r--app/services/ci/register_job_service.rb2
-rw-r--r--app/services/projects/propagate_service_template.rb2
-rw-r--r--app/uploaders/file_mover.rb27
-rw-r--r--app/validators/color_validator.rb2
-rw-r--r--app/views/layouts/snippets.html.haml5
-rw-r--r--app/views/shared/_issuable_meta_data.html.haml2
-rw-r--r--changelogs/unreleased/osw-persist-tmp-snippet-uploads.yml5
-rw-r--r--changelogs/unreleased/security-2858-fix-color-validation.yml5
-rw-r--r--changelogs/unreleased/security-59581-related-merge-requests-count.yml5
-rw-r--r--changelogs/unreleased/security-DOS_issue_comments_banzai.yml5
-rw-r--r--changelogs/unreleased/security-bvl-enforce-graphql-type-authorization.yml5
-rw-r--r--changelogs/unreleased/sh-service-template-bug.yml5
-rw-r--r--config/routes/uploads.rb4
-rw-r--r--lib/api/entities.rb6
-rw-r--r--lib/api/issues.rb6
-rw-r--r--lib/api/merge_requests.rb2
-rw-r--r--lib/api/todos.rb2
-rw-r--r--lib/banzai/filter/relative_link_filter.rb2
-rw-r--r--lib/gitlab/git/repository.rb5
-rw-r--r--lib/gitlab/gitaly_client/repository_service.rb7
-rw-r--r--lib/gitlab/graphql/authorize/authorize_field_service.rb2
-rw-r--r--lib/gitlab/issuable_metadata.rb4
-rw-r--r--locale/ar_SA/gitlab.po38
-rw-r--r--locale/bg/gitlab.po38
-rw-r--r--locale/bn_BD/gitlab.po38
-rw-r--r--locale/bn_IN/gitlab.po38
-rw-r--r--locale/ca_ES/gitlab.po38
-rw-r--r--locale/cs_CZ/gitlab.po38
-rw-r--r--locale/cy_GB/gitlab.po38
-rw-r--r--locale/da_DK/gitlab.po38
-rw-r--r--locale/de/gitlab.po38
-rw-r--r--locale/el_GR/gitlab.po38
-rw-r--r--locale/eo/gitlab.po38
-rw-r--r--locale/es/gitlab.po35
-rw-r--r--locale/et_EE/gitlab.po38
-rw-r--r--locale/fil_PH/gitlab.po38
-rw-r--r--locale/fr/gitlab.po38
-rw-r--r--locale/gl_ES/gitlab.po38
-rw-r--r--locale/he_IL/gitlab.po38
-rw-r--r--locale/hi_IN/gitlab.po38
-rw-r--r--locale/hr_HR/gitlab.po38
-rw-r--r--locale/hu_HU/gitlab.po38
-rw-r--r--locale/id_ID/gitlab.po38
-rw-r--r--locale/it/gitlab.po38
-rw-r--r--locale/ja/gitlab.po92
-rw-r--r--locale/ka_GE/gitlab.po38
-rw-r--r--locale/ko/gitlab.po38
-rw-r--r--locale/mn_MN/gitlab.po38
-rw-r--r--locale/nb_NO/gitlab.po38
-rw-r--r--locale/nl_NL/gitlab.po38
-rw-r--r--locale/pa_IN/gitlab.po38
-rw-r--r--locale/pl_PL/gitlab.po38
-rw-r--r--locale/pt_BR/gitlab.po38
-rw-r--r--locale/pt_PT/gitlab.po38
-rw-r--r--locale/ro_RO/gitlab.po38
-rw-r--r--locale/ru/gitlab.po38
-rw-r--r--locale/sk_SK/gitlab.po38
-rw-r--r--locale/sr_CS/gitlab.po38
-rw-r--r--locale/sr_SP/gitlab.po38
-rw-r--r--locale/sv_SE/gitlab.po38
-rw-r--r--locale/sw_KE/gitlab.po38
-rw-r--r--locale/tr_TR/gitlab.po38
-rw-r--r--locale/uk/gitlab.po105
-rw-r--r--locale/zh_CN/gitlab.po38
-rw-r--r--locale/zh_HK/gitlab.po38
-rw-r--r--locale/zh_TW/gitlab.po38
-rw-r--r--spec/controllers/import/fogbugz_controller_spec.rb38
-rw-r--r--spec/controllers/snippets_controller_spec.rb4
-rw-r--r--spec/controllers/uploads_controller_spec.rb177
-rw-r--r--spec/features/snippets/user_creates_snippet_spec.rb2
-rw-r--r--spec/frontend/ide/services/index_spec.js55
-rw-r--r--spec/graphql/types/label_type_spec.rb6
-rw-r--r--spec/graphql/types/metadata_type_spec.rb1
-rw-r--r--spec/graphql/types/namespace_type.rb4
-rw-r--r--spec/graphql/types/query_type_spec.rb4
-rw-r--r--spec/javascripts/ide/stores/modules/commit/actions_spec.js16
-rw-r--r--spec/javascripts/ide/stores/utils_spec.js4
-rw-r--r--spec/lib/banzai/filter/relative_link_filter_spec.rb5
-rw-r--r--spec/lib/gitlab/git/repository_spec.rb12
-rw-r--r--spec/lib/gitlab/gitaly_client/repository_service_spec.rb11
-rw-r--r--spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb82
-rw-r--r--spec/lib/gitlab/issuable_metadata_spec.rb8
-rw-r--r--spec/routing/uploads_routing_spec.rb13
-rw-r--r--spec/services/projects/propagate_service_template_spec.rb2
-rw-r--r--spec/spec_helper.rb6
-rw-r--r--spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb37
-rw-r--r--spec/uploaders/file_mover_spec.rb38
-rw-r--r--spec/validators/color_validator_spec.rb43
114 files changed, 2359 insertions, 263 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 072ded6134f..bcb344a73b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,15 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
+## 11.11.4 (2019-06-26)
+
+### Fixed (3 changes)
+
+- Fix Fogbugz Importer not working. !29383
+- Fix scrolling to top on assignee change. !29500
+- Fix IDE commit using latest ref in branch and overriding contents. !29769
+
+
## 11.11.3 (2019-06-10)
### Fixed (5 changes)
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index 6f7c8cdabe5..c39f63b9efa 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-1.42.4
+1.42.5
diff --git a/Gemfile b/Gemfile
index a212098d5af..faedbd892c3 100644
--- a/Gemfile
+++ b/Gemfile
@@ -419,7 +419,7 @@ group :ed25519 do
end
# Gitaly GRPC client
-gem 'gitaly-proto', '~> 1.27.0', require: 'gitaly'
+gem 'gitaly-proto', '~> 1.27.2', require: 'gitaly'
gem 'grpc', '~> 1.19.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 3cd8ea5f708..8708e797339 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -283,7 +283,7 @@ GEM
gettext_i18n_rails (>= 0.7.1)
po_to_json (>= 1.0.0)
rails (>= 3.2.0)
- gitaly-proto (1.27.0)
+ gitaly-proto (1.27.2)
grpc (~> 1.0)
github-markup (1.7.0)
gitlab-default_value_for (3.1.1)
@@ -1065,7 +1065,7 @@ DEPENDENCIES
gettext (~> 3.2.2)
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3)
- gitaly-proto (~> 1.27.0)
+ gitaly-proto (~> 1.27.2)
github-markup (~> 1.7.0)
gitlab-default_value_for (~> 3.1.1)
gitlab-labkit (~> 0.2.0)
diff --git a/VERSION b/VERSION
index caf202a93ea..b2671d2237d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-11.11.3
+11.11.4
diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js
index e52bc8583c6..7ac947c9836 100644
--- a/app/assets/javascripts/gl_dropdown.js
+++ b/app/assets/javascripts/gl_dropdown.js
@@ -563,7 +563,7 @@ GitLabDropdown = (function() {
e.stopPropagation();
// This prevents automatic scrolling to the top
- if ($target.is('a')) {
+ if ($target.closest('a').length) {
return false;
}
}
diff --git a/app/assets/javascripts/ide/services/index.js b/app/assets/javascripts/ide/services/index.js
index ba33b6826d6..840761f68db 100644
--- a/app/assets/javascripts/ide/services/index.js
+++ b/app/assets/javascripts/ide/services/index.js
@@ -56,7 +56,13 @@ export default {
return Api.branchSingle(projectId, currentBranchId);
},
commit(projectId, payload) {
- return Api.commitMultiple(projectId, payload);
+ // Currently the `commit` endpoint does not support `start_sha` so we
+ // have to make the request in the FE. This is not ideal and will be
+ // resolved soon. https://gitlab.com/gitlab-org/gitlab-ce/issues/59023
+ const { branch, start_sha: ref } = payload;
+ const branchPromise = ref ? Api.createBranch(projectId, { ref, branch }) : Promise.resolve();
+
+ return branchPromise.then(() => Api.commitMultiple(projectId, payload));
},
getFiles(projectUrl, branchId) {
const url = `${projectUrl}/files/${branchId}`;
diff --git a/app/assets/javascripts/ide/stores/modules/commit/actions.js b/app/assets/javascripts/ide/stores/modules/commit/actions.js
index c2760eb1554..e3ddfcbcbe2 100644
--- a/app/assets/javascripts/ide/stores/modules/commit/actions.js
+++ b/app/assets/javascripts/ide/stores/modules/commit/actions.js
@@ -123,6 +123,7 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo
getters,
state,
rootState,
+ rootGetters,
});
return service.commit(rootState.currentProjectId, payload);
diff --git a/app/assets/javascripts/ide/stores/utils.js b/app/assets/javascripts/ide/stores/utils.js
index bcc9ca60d9b..4e7a8765abe 100644
--- a/app/assets/javascripts/ide/stores/utils.js
+++ b/app/assets/javascripts/ide/stores/utils.js
@@ -135,7 +135,14 @@ export const getCommitFiles = stagedFiles =>
});
}, []);
-export const createCommitPayload = ({ branch, getters, newBranch, state, rootState }) => ({
+export const createCommitPayload = ({
+ branch,
+ getters,
+ newBranch,
+ state,
+ rootState,
+ rootGetters,
+}) => ({
branch,
commit_message: state.commitMessage || getters.preBuiltCommitMessage,
actions: getCommitFiles(rootState.stagedFiles).map(f => ({
@@ -146,7 +153,7 @@ export const createCommitPayload = ({ branch, getters, newBranch, state, rootSta
encoding: f.base64 ? 'base64' : 'text',
last_commit_id: newBranch || f.deleted || f.prevPath ? undefined : f.lastCommitSha,
})),
- start_branch: newBranch ? rootState.currentBranchId : undefined,
+ start_sha: newBranch ? rootGetters.lastCommit.short_id : undefined,
});
export const createNewMergeRequestUrl = (projectUrl, source, target) =>
diff --git a/app/controllers/concerns/issuable_collections.rb b/app/controllers/concerns/issuable_collections.rb
index 91e875dca54..8a6d7d1dfbf 100644
--- a/app/controllers/concerns/issuable_collections.rb
+++ b/app/controllers/concerns/issuable_collections.rb
@@ -41,7 +41,7 @@ module IssuableCollections
return if pagination_disabled?
@issuables = @issuables.page(params[:page])
- @issuable_meta_data = issuable_meta_data(@issuables, collection_type)
+ @issuable_meta_data = issuable_meta_data(@issuables, collection_type, current_user)
@total_pages = issuable_page_count
end
# rubocop:enable Gitlab/ModuleWithInstanceVariables
diff --git a/app/controllers/concerns/issuable_collections_action.rb b/app/controllers/concerns/issuable_collections_action.rb
index 18ed4027eac..4ad287c4a13 100644
--- a/app/controllers/concerns/issuable_collections_action.rb
+++ b/app/controllers/concerns/issuable_collections_action.rb
@@ -11,7 +11,7 @@ module IssuableCollectionsAction
.non_archived
.page(params[:page])
- @issuable_meta_data = issuable_meta_data(@issues, collection_type)
+ @issuable_meta_data = issuable_meta_data(@issues, collection_type, current_user)
respond_to do |format|
format.html
@@ -22,7 +22,7 @@ module IssuableCollectionsAction
def merge_requests
@merge_requests = issuables_collection.page(params[:page])
- @issuable_meta_data = issuable_meta_data(@merge_requests, collection_type)
+ @issuable_meta_data = issuable_meta_data(@merge_requests, collection_type, current_user)
end
# rubocop:enable Gitlab/ModuleWithInstanceVariables
diff --git a/app/controllers/import/fogbugz_controller.rb b/app/controllers/import/fogbugz_controller.rb
index a37ba682b91..28ead8d44da 100644
--- a/app/controllers/import/fogbugz_controller.rb
+++ b/app/controllers/import/fogbugz_controller.rb
@@ -11,7 +11,7 @@ class Import::FogbugzController < Import::BaseController
def callback
begin
- res = Gitlab::FogbugzImport::Client.new(import_params.symbolize_keys)
+ res = Gitlab::FogbugzImport::Client.new(import_params.to_h.symbolize_keys)
rescue
# If the URI is invalid various errors can occur
return redirect_to new_import_fogbugz_path, alert: _('Could not connect to FogBugz, check your URL')
@@ -26,7 +26,7 @@ class Import::FogbugzController < Import::BaseController
end
def create_user_map
- user_map = params[:users]
+ user_map = user_map_params.to_h[:users]
unless user_map.is_a?(Hash) && user_map.all? { |k, v| !v[:name].blank? }
flash.now[:alert] = _('All users must have a name.')
@@ -99,6 +99,10 @@ class Import::FogbugzController < Import::BaseController
params.permit(:uri, :email, :password)
end
+ def user_map_params
+ params.permit(users: %w(name email gitlab_user))
+ end
+
def verify_fogbugz_import_enabled
render_404 unless fogbugz_import_enabled?
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 12db493978b..330e2d0f8a5 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -298,7 +298,7 @@ class ProjectsController < Projects::ApplicationController
elsif @project.feature_available?(:issues, current_user)
@issues = issuables_collection.page(params[:page])
@collection_type = 'Issue'
- @issuable_meta_data = issuable_meta_data(@issues, @collection_type)
+ @issuable_meta_data = issuable_meta_data(@issues, @collection_type, current_user)
end
render :show
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index 8ea5450b4e8..fad036b8df8 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -137,7 +137,7 @@ class SnippetsController < ApplicationController
def move_temporary_files
params[:files].each do |file|
- FileMover.new(file, @snippet).execute
+ FileMover.new(file, from_model: current_user, to_model: @snippet).execute
end
end
end
diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb
index 060b09f015c..47f9921a03b 100644
--- a/app/controllers/uploads_controller.rb
+++ b/app/controllers/uploads_controller.rb
@@ -41,7 +41,11 @@ class UploadsController < ApplicationController
when Note
can?(current_user, :read_project, model.project)
when User
- true
+ # We validate the current user has enough (writing)
+ # access to itself when a secret is given.
+ # For instance, user avatars are readable by anyone,
+ # while temporary, user snippet uploads are not.
+ !secret? || can?(current_user, :update_user, model)
when Appearance
true
else
@@ -56,9 +60,13 @@ class UploadsController < ApplicationController
def authorize_create_access!
return unless model
- # for now we support only personal snippets comments. Only personal_snippet
- # is allowed as a model to #create through routing.
- authorized = can?(current_user, :create_note, model)
+ authorized =
+ case model
+ when User
+ can?(current_user, :update_user, model)
+ else
+ can?(current_user, :create_note, model)
+ end
render_unauthorized unless authorized
end
@@ -75,6 +83,10 @@ class UploadsController < ApplicationController
User === model || Appearance === model
end
+ def secret?
+ params[:secret].present?
+ end
+
def upload_model_class
MODEL_CLASSES[params[:model]] || raise(UnknownUploadModelError)
end
diff --git a/app/graphql/types/label_type.rb b/app/graphql/types/label_type.rb
index ccd466edc1a..41d035c1aab 100644
--- a/app/graphql/types/label_type.rb
+++ b/app/graphql/types/label_type.rb
@@ -4,6 +4,8 @@ module Types
class LabelType < BaseObject
graphql_name 'Label'
+ authorize :read_label
+
field :description, GraphQL::STRING_TYPE, null: true
field :title, GraphQL::STRING_TYPE, null: false
field :color, GraphQL::STRING_TYPE, null: false
diff --git a/app/graphql/types/metadata_type.rb b/app/graphql/types/metadata_type.rb
index 2d8bad0614b..7d7813a7652 100644
--- a/app/graphql/types/metadata_type.rb
+++ b/app/graphql/types/metadata_type.rb
@@ -4,6 +4,8 @@ module Types
class MetadataType < ::Types::BaseObject
graphql_name 'Metadata'
+ authorize :read_instance_metadata
+
field :version, GraphQL::STRING_TYPE, null: false
field :revision, GraphQL::STRING_TYPE, null: false
end
diff --git a/app/graphql/types/namespace_type.rb b/app/graphql/types/namespace_type.rb
index 36d8ee8c878..501bfcf0fd5 100644
--- a/app/graphql/types/namespace_type.rb
+++ b/app/graphql/types/namespace_type.rb
@@ -4,6 +4,8 @@ module Types
class NamespaceType < BaseObject
graphql_name 'Namespace'
+ authorize :read_namespace
+
field :id, GraphQL::ID_TYPE, null: false
field :name, GraphQL::STRING_TYPE, null: false
diff --git a/app/graphql/types/project_type.rb b/app/graphql/types/project_type.rb
index baea6658e05..51ac67217d1 100644
--- a/app/graphql/types/project_type.rb
+++ b/app/graphql/types/project_type.rb
@@ -66,7 +66,7 @@ module Types
field :only_allow_merge_if_all_discussions_are_resolved, GraphQL::BOOLEAN_TYPE, null: true
field :printing_merge_request_link_enabled, GraphQL::BOOLEAN_TYPE, null: true
- field :namespace, Types::NamespaceType, null: false
+ field :namespace, Types::NamespaceType, null: true
field :group, Types::GroupType, null: true
field :merge_requests,
diff --git a/app/graphql/types/query_type.rb b/app/graphql/types/query_type.rb
index 40d7de1a49a..d021658879c 100644
--- a/app/graphql/types/query_type.rb
+++ b/app/graphql/types/query_type.rb
@@ -17,10 +17,7 @@ module Types
field :metadata, Types::MetadataType,
null: true,
resolver: Resolvers::MetadataResolver,
- description: 'Metadata about GitLab' do |*args|
-
- authorize :read_instance_metadata
- end
+ description: 'Metadata about GitLab'
field :echo, GraphQL::STRING_TYPE, null: false, function: Functions::Echo.new
end
diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 9a12db258d5..941b77c405b 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -280,7 +280,7 @@ module IssuablesHelper
initialTaskStatus: issuable.task_status
}
- data[:hasClosingMergeRequest] = issuable.merge_requests_count != 0 if issuable.is_a?(Issue)
+ data[:hasClosingMergeRequest] = issuable.merge_requests_count(current_user) != 0 if issuable.is_a?(Issue)
if parent.is_a?(Group)
data[:groupPath] = parent.path
diff --git a/app/helpers/snippets_helper.rb b/app/helpers/snippets_helper.rb
index ecb2b2d707b..6ccc1fb2ed1 100644
--- a/app/helpers/snippets_helper.rb
+++ b/app/helpers/snippets_helper.rb
@@ -1,6 +1,16 @@
# frozen_string_literal: true
module SnippetsHelper
+ def snippets_upload_path(snippet, user)
+ return unless user
+
+ if snippet&.persisted?
+ upload_path('personal_snippet', id: snippet.id)
+ else
+ upload_path('user', id: user.id)
+ end
+ end
+
def reliable_snippet_path(snippet, opts = nil)
if snippet.project_id?
project_snippet_path(snippet.project, snippet, opts)
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 127430cc68f..299e413321d 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -29,7 +29,11 @@ module Issuable
# This object is used to gather issuable meta data for displaying
# upvotes, downvotes, notes and closing merge requests count for issues and merge requests
# lists avoiding n+1 queries and improving performance.
- IssuableMeta = Struct.new(:upvotes, :downvotes, :user_notes_count, :merge_requests_count)
+ IssuableMeta = Struct.new(:upvotes, :downvotes, :user_notes_count, :mrs_count) do
+ def merge_requests_count(user = nil)
+ mrs_count
+ end
+ end
included do
cache_markdown_field :title, pipeline: :single_line
diff --git a/app/models/issue.rb b/app/models/issue.rb
index eb5544f2a12..42597bda0e6 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -248,8 +248,8 @@ class Issue < ApplicationRecord
end
# rubocop: enable CodeReuse/ServiceClass
- def merge_requests_count
- merge_requests_closing_issues.count
+ def merge_requests_count(user = nil)
+ ::MergeRequestsClosingIssues.count_for_issue(self.id, user)
end
private
diff --git a/app/models/merge_requests_closing_issues.rb b/app/models/merge_requests_closing_issues.rb
index 61af50841ee..22cedf57b86 100644
--- a/app/models/merge_requests_closing_issues.rb
+++ b/app/models/merge_requests_closing_issues.rb
@@ -7,11 +7,38 @@ class MergeRequestsClosingIssues < ApplicationRecord
validates :merge_request_id, uniqueness: { scope: :issue_id }, presence: true
validates :issue_id, presence: true
+ scope :with_issues, ->(ids) { where(issue_id: ids) }
+ scope :with_merge_requests_enabled, -> do
+ joins(:merge_request)
+ .joins('INNER JOIN project_features ON merge_requests.target_project_id = project_features.project_id')
+ .where('project_features.merge_requests_access_level >= :access', access: ProjectFeature::ENABLED)
+ end
+
+ scope :accessible_by, ->(user) do
+ joins(:merge_request)
+ .joins('INNER JOIN project_features ON merge_requests.target_project_id = project_features.project_id')
+ .where('project_features.merge_requests_access_level >= :access OR EXISTS(:authorizations)',
+ access: ProjectFeature::ENABLED,
+ authorizations: user.authorizations_for_projects(min_access_level: Gitlab::Access::REPORTER, related_project_column: "merge_requests.target_project_id")
+ )
+ end
+
class << self
- def count_for_collection(ids)
- group(:issue_id)
- .where(issue_id: ids)
- .pluck('issue_id', 'COUNT(*) as count')
+ def count_for_collection(ids, current_user)
+ closing_merge_requests(ids, current_user).group(:issue_id).pluck('issue_id', 'COUNT(*) as count')
+ end
+
+ def count_for_issue(id, current_user)
+ closing_merge_requests(id, current_user).count
+ end
+
+ private
+
+ def closing_merge_requests(ids, current_user)
+ return with_issues(ids) if current_user&.admin?
+ return with_issues(ids).with_merge_requests_enabled if current_user.blank?
+
+ with_issues(ids).accessible_by(current_user)
end
end
end
diff --git a/app/policies/repository_policy.rb b/app/policies/repository_policy.rb
new file mode 100644
index 00000000000..32340749858
--- /dev/null
+++ b/app/policies/repository_policy.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+class RepositoryPolicy < BasePolicy
+ delegate { @subject.project }
+end
diff --git a/app/services/ci/register_job_service.rb b/app/services/ci/register_job_service.rb
index 6707a1363d0..ec0e7a7b9b5 100644
--- a/app/services/ci/register_job_service.rb
+++ b/app/services/ci/register_job_service.rb
@@ -6,7 +6,7 @@ module Ci
class RegisterJobService
attr_reader :runner
- JOB_QUEUE_DURATION_SECONDS_BUCKETS = [1, 3, 10, 30].freeze
+ JOB_QUEUE_DURATION_SECONDS_BUCKETS = [1, 3, 10, 30, 60, 300].freeze
JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET = 5.freeze
Result = Struct.new(:build, :valid?)
diff --git a/app/services/projects/propagate_service_template.rb b/app/services/projects/propagate_service_template.rb
index a2f36d2bd1b..a25c985585b 100644
--- a/app/services/projects/propagate_service_template.rb
+++ b/app/services/projects/propagate_service_template.rb
@@ -24,7 +24,7 @@ module Projects
def propagate_projects_with_template
loop do
- batch = project_ids_batch
+ batch = Project.uncached { project_ids_batch }
bulk_create_from_template(batch) unless batch.empty?
diff --git a/app/uploaders/file_mover.rb b/app/uploaders/file_mover.rb
index 236b7ed2b3d..dcf1e8792ad 100644
--- a/app/uploaders/file_mover.rb
+++ b/app/uploaders/file_mover.rb
@@ -1,12 +1,13 @@
# frozen_string_literal: true
class FileMover
- attr_reader :secret, :file_name, :model, :update_field
+ attr_reader :secret, :file_name, :from_model, :to_model, :update_field
- def initialize(file_path, model, update_field = :description)
+ def initialize(file_path, update_field = :description, from_model:, to_model:)
@secret = File.split(File.dirname(file_path)).last
@file_name = File.basename(file_path)
- @model = model
+ @from_model = from_model
+ @to_model = to_model
@update_field = update_field
end
@@ -16,7 +17,7 @@ class FileMover
move
if update_markdown
- uploader.record_upload
+ update_upload_model
uploader.schedule_background_upload
end
end
@@ -35,14 +36,20 @@ class FileMover
end
def update_markdown
- updated_text = model.read_attribute(update_field)
- .gsub(temp_file_uploader.markdown_link, uploader.markdown_link)
- model.update_attribute(update_field, updated_text)
+ updated_text = to_model.read_attribute(update_field)
+ .gsub(temp_file_uploader.markdown_link, uploader.markdown_link)
+ to_model.update_attribute(update_field, updated_text)
rescue
revert
false
end
+ def update_upload_model
+ return unless upload = temp_file_uploader.upload
+
+ upload.update!(model_id: to_model.id, model_type: to_model.type)
+ end
+
def temp_file_path
return @temp_file_path if @temp_file_path
@@ -60,15 +67,15 @@ class FileMover
end
def uploader
- @uploader ||= PersonalFileUploader.new(model, secret: secret)
+ @uploader ||= PersonalFileUploader.new(to_model, secret: secret)
end
def temp_file_uploader
- @temp_file_uploader ||= PersonalFileUploader.new(nil, secret: secret)
+ @temp_file_uploader ||= PersonalFileUploader.new(from_model, secret: secret)
end
def revert
- Rails.logger.warn("Markdown not updated, file move reverted for #{model}")
+ Rails.logger.warn("Markdown not updated, file move reverted for #{to_model}")
FileUtils.move(file_path, temp_file_path)
end
diff --git a/app/validators/color_validator.rb b/app/validators/color_validator.rb
index 1932d042e83..974dfbbf394 100644
--- a/app/validators/color_validator.rb
+++ b/app/validators/color_validator.rb
@@ -12,7 +12,7 @@
# end
#
class ColorValidator < ActiveModel::EachValidator
- PATTERN = /\A\#[0-9A-Fa-f]{3}{1,2}+\Z/.freeze
+ PATTERN = /\A\#(?:[0-9A-Fa-f]{3}){1,2}\Z/.freeze
def validate_each(record, attribute, value)
unless value =~ PATTERN
diff --git a/app/views/layouts/snippets.html.haml b/app/views/layouts/snippets.html.haml
index 5f986c81ff4..841b2a5e79c 100644
--- a/app/views/layouts/snippets.html.haml
+++ b/app/views/layouts/snippets.html.haml
@@ -1,9 +1,10 @@
- header_title _("Snippets"), snippets_path
+- snippets_upload_path = snippets_upload_path(@snippet, current_user)
- content_for :page_specific_javascripts do
- - if @snippet && current_user
+ - if snippets_upload_path
-# haml-lint:disable InlineJavaScript
:javascript
- window.uploads_path = "#{upload_path('personal_snippet', id: @snippet.id)}";
+ window.uploads_path = "#{snippets_upload_path}";
= render template: "layouts/application"
diff --git a/app/views/shared/_issuable_meta_data.html.haml b/app/views/shared/_issuable_meta_data.html.haml
index 31a5370a5f8..71b13a5d741 100644
--- a/app/views/shared/_issuable_meta_data.html.haml
+++ b/app/views/shared/_issuable_meta_data.html.haml
@@ -2,7 +2,7 @@
- issue_votes = @issuable_meta_data[issuable.id]
- upvotes, downvotes = issue_votes.upvotes, issue_votes.downvotes
- issuable_url = @collection_type == "Issue" ? issue_path(issuable, anchor: 'notes') : merge_request_path(issuable, anchor: 'notes')
-- issuable_mr = @issuable_meta_data[issuable.id].merge_requests_count
+- issuable_mr = @issuable_meta_data[issuable.id].merge_requests_count(current_user)
- if issuable_mr > 0
%li.issuable-mr.d-none.d-sm-block.has-tooltip{ title: _('Related merge requests') }
diff --git a/changelogs/unreleased/osw-persist-tmp-snippet-uploads.yml b/changelogs/unreleased/osw-persist-tmp-snippet-uploads.yml
new file mode 100644
index 00000000000..9348626c41d
--- /dev/null
+++ b/changelogs/unreleased/osw-persist-tmp-snippet-uploads.yml
@@ -0,0 +1,5 @@
+---
+title: Persist tmp snippet uploads at users
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/security-2858-fix-color-validation.yml b/changelogs/unreleased/security-2858-fix-color-validation.yml
new file mode 100644
index 00000000000..3430207a2b6
--- /dev/null
+++ b/changelogs/unreleased/security-2858-fix-color-validation.yml
@@ -0,0 +1,5 @@
+---
+title: Fix DoS vulnerability in color validation regex
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/security-59581-related-merge-requests-count.yml b/changelogs/unreleased/security-59581-related-merge-requests-count.yml
new file mode 100644
index 00000000000..83faa2f7c13
--- /dev/null
+++ b/changelogs/unreleased/security-59581-related-merge-requests-count.yml
@@ -0,0 +1,5 @@
+---
+title: Expose merge requests count based on user access
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/security-DOS_issue_comments_banzai.yml b/changelogs/unreleased/security-DOS_issue_comments_banzai.yml
new file mode 100644
index 00000000000..2405b1a4f5f
--- /dev/null
+++ b/changelogs/unreleased/security-DOS_issue_comments_banzai.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Denial of Service for comments when rendering issues/MR comments
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/security-bvl-enforce-graphql-type-authorization.yml b/changelogs/unreleased/security-bvl-enforce-graphql-type-authorization.yml
new file mode 100644
index 00000000000..7dedb9f6230
--- /dev/null
+++ b/changelogs/unreleased/security-bvl-enforce-graphql-type-authorization.yml
@@ -0,0 +1,5 @@
+---
+title: Add missing authorizations in GraphQL
+merge_request:
+author:
+type: security
diff --git a/changelogs/unreleased/sh-service-template-bug.yml b/changelogs/unreleased/sh-service-template-bug.yml
new file mode 100644
index 00000000000..be5d719c6b2
--- /dev/null
+++ b/changelogs/unreleased/sh-service-template-bug.yml
@@ -0,0 +1,5 @@
+---
+title: Disable Rails SQL query cache when applying service templates
+merge_request: 30060
+author:
+type: security
diff --git a/config/routes/uploads.rb b/config/routes/uploads.rb
index b594f55f8a0..920f8454ce2 100644
--- a/config/routes/uploads.rb
+++ b/config/routes/uploads.rb
@@ -7,7 +7,7 @@ scope path: :uploads do
# show uploads for models, snippets (notes) available for now
get '-/system/:model/:id/:secret/:filename',
to: 'uploads#show',
- constraints: { model: /personal_snippet/, id: /\d+/, filename: %r{[^/]+} }
+ constraints: { model: /personal_snippet|user/, id: /\d+/, filename: %r{[^/]+} }
# show temporary uploads
get '-/system/temp/:secret/:filename',
@@ -28,7 +28,7 @@ scope path: :uploads do
# create uploads for models, snippets (notes) available for now
post ':model',
to: 'uploads#create',
- constraints: { model: /personal_snippet/, id: /\d+/ },
+ constraints: { model: /personal_snippet|user/, id: /\d+/ },
as: 'upload'
end
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 32e96dae744..ce50f9a5817 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -493,9 +493,9 @@ module API
expose :state, :created_at, :updated_at
# Avoids an N+1 query when metadata is included
- def issuable_metadata(subject, options, method)
+ def issuable_metadata(subject, options, method, args = nil)
cached_subject = options.dig(:issuable_metadata, subject.id)
- (cached_subject || subject).public_send(method) # rubocop: disable GitlabSecurity/PublicSend
+ (cached_subject || subject).public_send(method, *args) # rubocop: disable GitlabSecurity/PublicSend
end
end
@@ -554,7 +554,7 @@ module API
end
expose(:user_notes_count) { |issue, options| issuable_metadata(issue, options, :user_notes_count) }
- expose(:merge_requests_count) { |issue, options| issuable_metadata(issue, options, :merge_requests_count) }
+ expose(:merge_requests_count) { |issue, options| issuable_metadata(issue, options, :merge_requests_count, options[:current_user]) }
expose(:upvotes) { |issue, options| issuable_metadata(issue, options, :upvotes) }
expose(:downvotes) { |issue, options| issuable_metadata(issue, options, :downvotes) }
expose :due_date
diff --git a/lib/api/issues.rb b/lib/api/issues.rb
index d0a93b77951..1e4d14a9a4c 100644
--- a/lib/api/issues.rb
+++ b/lib/api/issues.rb
@@ -93,7 +93,7 @@ module API
options = {
with: Entities::IssueBasic,
current_user: current_user,
- issuable_metadata: issuable_meta_data(issues, 'Issue')
+ issuable_metadata: issuable_meta_data(issues, 'Issue', current_user)
}
present issues, options
@@ -120,7 +120,7 @@ module API
options = {
with: Entities::IssueBasic,
current_user: current_user,
- issuable_metadata: issuable_meta_data(issues, 'Issue')
+ issuable_metadata: issuable_meta_data(issues, 'Issue', current_user)
}
present issues, options
@@ -150,7 +150,7 @@ module API
with: Entities::IssueBasic,
current_user: current_user,
project: user_project,
- issuable_metadata: issuable_meta_data(issues, 'Issue')
+ issuable_metadata: issuable_meta_data(issues, 'Issue', current_user)
}
present issues, options
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index ce85772e4ed..9a1f7d44bcb 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -72,7 +72,7 @@ module API
if params[:view] == 'simple'
options[:with] = Entities::MergeRequestSimple
else
- options[:issuable_metadata] = issuable_meta_data(merge_requests, 'MergeRequest')
+ options[:issuable_metadata] = issuable_meta_data(merge_requests, 'MergeRequest', current_user)
end
options
diff --git a/lib/api/todos.rb b/lib/api/todos.rb
index d2196f05173..f332a554c41 100644
--- a/lib/api/todos.rb
+++ b/lib/api/todos.rb
@@ -65,7 +65,7 @@ module API
next unless collection
targets = collection.map(&:target)
- options[type] = { issuable_metadata: issuable_meta_data(targets, type) }
+ options[type] = { issuable_metadata: issuable_meta_data(targets, type, current_user) }
end
end
end
diff --git a/lib/banzai/filter/relative_link_filter.rb b/lib/banzai/filter/relative_link_filter.rb
index 199b3533cf4..cdf97e75491 100644
--- a/lib/banzai/filter/relative_link_filter.rb
+++ b/lib/banzai/filter/relative_link_filter.rb
@@ -100,7 +100,7 @@ module Banzai
end
def relative_file_path(uri)
- path = Addressable::URI.unescape(uri.path)
+ path = Addressable::URI.unescape(uri.path).delete("\0")
request_path = Addressable::URI.unescape(context[:requested_path])
nested_path = build_relative_path(path, request_path)
file_exists?(nested_path) ? nested_path : path
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index fc9bcbdcca2..47b414bd9e4 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -310,6 +310,11 @@ module Gitlab
(size.to_f / 1024).round(2)
end
+ # Return git object directory size in bytes
+ def object_directory_size
+ gitaly_repository_client.get_object_directory_size.to_f * 1024
+ end
+
# Build an array of commits.
#
# Usage.
diff --git a/lib/gitlab/gitaly_client/repository_service.rb b/lib/gitlab/gitaly_client/repository_service.rb
index 68b17e86608..d8e9dccb644 100644
--- a/lib/gitlab/gitaly_client/repository_service.rb
+++ b/lib/gitlab/gitaly_client/repository_service.rb
@@ -47,6 +47,13 @@ module Gitlab
response.size
end
+ def get_object_directory_size
+ request = Gitaly::GetObjectDirectorySizeRequest.new(repository: @gitaly_repo)
+ response = GitalyClient.call(@storage, :repository_service, :get_object_directory_size, request, timeout: GitalyClient.medium_timeout)
+
+ response.size
+ end
+
def apply_gitattributes(revision)
request = Gitaly::ApplyGitattributesRequest.new(repository: @gitaly_repo, revision: encode_binary(revision))
GitalyClient.call(@storage, :repository_service, :apply_gitattributes, request, timeout: GitalyClient.fast_timeout)
diff --git a/lib/gitlab/graphql/authorize/authorize_field_service.rb b/lib/gitlab/graphql/authorize/authorize_field_service.rb
index 619ce100421..3b5dde2fde5 100644
--- a/lib/gitlab/graphql/authorize/authorize_field_service.rb
+++ b/lib/gitlab/graphql/authorize/authorize_field_service.rb
@@ -39,6 +39,8 @@ module Gitlab
type = node_type_for_basic_connection(type)
end
+ type = type.unwrap if type.kind.non_null?
+
Array.wrap(type.metadata[:authorize])
end
diff --git a/lib/gitlab/issuable_metadata.rb b/lib/gitlab/issuable_metadata.rb
index 351d15605e0..be73bcd5506 100644
--- a/lib/gitlab/issuable_metadata.rb
+++ b/lib/gitlab/issuable_metadata.rb
@@ -2,7 +2,7 @@
module Gitlab
module IssuableMetadata
- def issuable_meta_data(issuable_collection, collection_type)
+ def issuable_meta_data(issuable_collection, collection_type, user = nil)
# ActiveRecord uses Object#extend for null relations.
if !(issuable_collection.singleton_class < ActiveRecord::NullRelation) &&
issuable_collection.respond_to?(:limit_value) &&
@@ -23,7 +23,7 @@ module Gitlab
issuable_votes_count = ::AwardEmoji.votes_for_collection(issuable_ids, collection_type)
issuable_merge_requests_count =
if collection_type == 'Issue'
- ::MergeRequestsClosingIssues.count_for_collection(issuable_ids)
+ ::MergeRequestsClosingIssues.count_for_collection(issuable_ids, user)
else
[]
end
diff --git a/locale/ar_SA/gitlab.po b/locale/ar_SA/gitlab.po
index 9d3218cbd36..8dd481e3c04 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: 2019-04-12 12:34\n"
+"PO-Revision-Date: 2019-06-14 19:58\n"
msgid " Please sign in."
msgstr ""
@@ -5664,6 +5664,9 @@ 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 "Got it!"
msgstr ""
@@ -6099,6 +6102,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6570,6 +6576,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6927,6 +6936,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7218,6 +7230,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7635,6 +7650,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -8097,6 +8115,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10971,6 +11004,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/bg/gitlab.po b/locale/bg/gitlab.po
index f62cc8295f4..f421bf7519c 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: 2019-04-12 12:35\n"
+"PO-Revision-Date: 2019-06-14 19:59\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Ðов етикет"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/bn_BD/gitlab.po b/locale/bn_BD/gitlab.po
index dd593020e0f..d7f428aab32 100644
--- a/locale/bn_BD/gitlab.po
+++ b/locale/bn_BD/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: bn\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:35\n"
+"PO-Revision-Date: 2019-06-14 19:59\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/bn_IN/gitlab.po b/locale/bn_IN/gitlab.po
index 75fdf861c0d..f06c8e9336c 100644
--- a/locale/bn_IN/gitlab.po
+++ b/locale/bn_IN/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: bn-IN\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:35\n"
+"PO-Revision-Date: 2019-06-14 19:59\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/ca_ES/gitlab.po b/locale/ca_ES/gitlab.po
index 1facbc90b47..ca1d6f1203d 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: 2019-04-12 12:36\n"
+"PO-Revision-Date: 2019-06-14 19:59\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/cs_CZ/gitlab.po b/locale/cs_CZ/gitlab.po
index f41277b2c79..cb285f19795 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: 2019-04-12 12:35\n"
+"PO-Revision-Date: 2019-06-14 19:58\n"
msgid " Please sign in."
msgstr ""
@@ -5578,6 +5578,9 @@ 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 "Got it!"
msgstr ""
@@ -6011,6 +6014,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6480,6 +6486,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6833,6 +6842,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7124,6 +7136,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7539,6 +7554,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7999,6 +8017,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10863,6 +10896,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/cy_GB/gitlab.po b/locale/cy_GB/gitlab.po
index 5d41baffb24..3690bb3c3ab 100644
--- a/locale/cy_GB/gitlab.po
+++ b/locale/cy_GB/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: cy\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:40\n"
+"PO-Revision-Date: 2019-06-14 20:03\n"
msgid " Please sign in."
msgstr ""
@@ -5664,6 +5664,9 @@ 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 "Got it!"
msgstr ""
@@ -6099,6 +6102,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6570,6 +6576,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6927,6 +6936,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7218,6 +7230,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7635,6 +7650,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -8097,6 +8115,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10971,6 +11004,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/da_DK/gitlab.po b/locale/da_DK/gitlab.po
index 0741f7e7e87..4e6ab1b1fd9 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: 2019-04-12 12:37\n"
+"PO-Revision-Date: 2019-06-14 20:01\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/de/gitlab.po b/locale/de/gitlab.po
index 7bf03d54f8a..0c2150e78e4 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: 2019-04-12 12:39\n"
+"PO-Revision-Date: 2019-06-14 20:03\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ msgstr "Google Takeout"
msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service."
msgstr "Google-Authentifizierung ist nicht %{link_to_documentation}. Frage deinen GitLab Administrator, wenn du diesen Service nutzen möchtest."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "Verstanden!"
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 "Wenn diese Option deaktiviert ist, wird ein abweichender lokaler Branch nicht automatisch mit Commits von seinem remote Gegenstück aktualisiert, um lokalen Datenverlust zu verhindern. Wenn der Standardbranch (%{default_branch}) abweicht und nicht aktualisiert werden kann, schlägt die Spiegelung fehl. Andere abweichende Branches werden ohne Meldung ignoriert."
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "Juli"
@@ -6739,6 +6748,9 @@ msgstr "Sperren"
msgid "Lock %{issuableDisplayName}"
msgstr "Sperre %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "Sperrung nicht gefunden"
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart}hat die Beschreibung %{descriptionChangedTimes} Mal %{timeDifferenceMinutes} geändert%{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Neuer Tag"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Neu..."
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "Letzte »"
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/el_GR/gitlab.po b/locale/el_GR/gitlab.po
index 142d421aed0..3694aec9c2e 100644
--- a/locale/el_GR/gitlab.po
+++ b/locale/el_GR/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: el\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:39\n"
+"PO-Revision-Date: 2019-06-14 20:03\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/eo/gitlab.po b/locale/eo/gitlab.po
index ef131535e9d..37ba5512c96 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: 2019-04-12 12:38\n"
+"PO-Revision-Date: 2019-06-14 20:01\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Nova etikedo"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/es/gitlab.po b/locale/es/gitlab.po
index 0775ef83503..72b891c74f3 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: 2019-04-12 12:32\n"
+"PO-Revision-Date: 2019-06-14 19:56\n"
msgid " Please sign in."
msgstr " Por favor, inicie sesión."
@@ -5492,6 +5492,9 @@ msgstr "Google Takeout"
msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service."
msgstr "La autenticación de Google no se encuentra %{link_to_documentation}. Pregúntale a tu administrador de GitLab si quieres usar este servicio."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "¡Lo tengo!"
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "Jul"
@@ -6739,6 +6748,9 @@ msgstr "Bloquear"
msgid "Lock %{issuableDisplayName}"
msgstr "Bloquear %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "Bloqueo no encontrado"
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Nueva etiqueta"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Nuevo..."
@@ -7901,6 +7919,18 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "Último »"
@@ -10755,6 +10785,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr "Cambio sugerido"
diff --git a/locale/et_EE/gitlab.po b/locale/et_EE/gitlab.po
index 36f5074b8ff..3f609270fb3 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: 2019-04-12 12:38\n"
+"PO-Revision-Date: 2019-06-14 20:02\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/fil_PH/gitlab.po b/locale/fil_PH/gitlab.po
index c2139dcc495..ee6a7bb1841 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: 2019-04-12 12:38\n"
+"PO-Revision-Date: 2019-06-14 20:02\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/fr/gitlab.po b/locale/fr/gitlab.po
index 0843adc6d56..18ed6e8bc31 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: 2019-04-12 12:38\n"
+"PO-Revision-Date: 2019-06-14 20:02\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ msgstr "Google Takeout"
msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service."
msgstr "L’authentification Google n’est pas %{link_to_documentation}. Demandez à votre administrat·eur·rice GitLab si vous souhaitez utiliser ce service."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "Compris !"
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 "Si cette option est désactivée, une branche locale divergente ne sera pas automatiquement mise à jour avec les commits de son homologue distant, afin d’éviter toute perte de données locales. Si la branche par défaut (%{default_branch}) a divergé et ne peut pas être mise à jour, la mise en miroir échouera. Les autres branches divergentes sont ignorées silencieusement."
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "juill."
@@ -6739,6 +6748,9 @@ msgstr "Verrouiller"
msgid "Lock %{issuableDisplayName}"
msgstr "Verrouiller %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "Verrou non trouvé"
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart}a changé la description %{descriptionChangedTimes} fois %{timeDifferenceMinutes}%{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Nouvelle étiquette"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Nouveau…"
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "Dernière ⇥"
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/gl_ES/gitlab.po b/locale/gl_ES/gitlab.po
index a773d0af51f..72d66916328 100644
--- a/locale/gl_ES/gitlab.po
+++ b/locale/gl_ES/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: gl\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:39\n"
+"PO-Revision-Date: 2019-06-14 20:02\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/he_IL/gitlab.po b/locale/he_IL/gitlab.po
index 6210346cb46..55259bd6ccd 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: 2019-04-12 12:37\n"
+"PO-Revision-Date: 2019-06-14 20:01\n"
msgid " Please sign in."
msgstr ""
@@ -5578,6 +5578,9 @@ 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 "Got it!"
msgstr ""
@@ -6011,6 +6014,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6480,6 +6486,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6833,6 +6842,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7124,6 +7136,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7539,6 +7554,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7999,6 +8017,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10863,6 +10896,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/hi_IN/gitlab.po b/locale/hi_IN/gitlab.po
index b7ea475b90a..988550bc6bd 100644
--- a/locale/hi_IN/gitlab.po
+++ b/locale/hi_IN/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: hi\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:34\n"
+"PO-Revision-Date: 2019-06-14 19:58\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/hr_HR/gitlab.po b/locale/hr_HR/gitlab.po
index 5fe10132d71..932ddc735cb 100644
--- a/locale/hr_HR/gitlab.po
+++ b/locale/hr_HR/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: hr\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:37\n"
+"PO-Revision-Date: 2019-06-14 20:00\n"
msgid " Please sign in."
msgstr ""
@@ -5535,6 +5535,9 @@ 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 "Got it!"
msgstr ""
@@ -5967,6 +5970,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6435,6 +6441,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6786,6 +6795,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7077,6 +7089,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7491,6 +7506,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7950,6 +7968,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10809,6 +10842,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/hu_HU/gitlab.po b/locale/hu_HU/gitlab.po
index b702cb701c6..a0752993314 100644
--- a/locale/hu_HU/gitlab.po
+++ b/locale/hu_HU/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: hu\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:31\n"
+"PO-Revision-Date: 2019-06-14 19:54\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/id_ID/gitlab.po b/locale/id_ID/gitlab.po
index e3f45e5a4f1..04aec78eebb 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: 2019-04-12 12:34\n"
+"PO-Revision-Date: 2019-06-14 19:57\n"
msgid " Please sign in."
msgstr ""
@@ -5449,6 +5449,9 @@ 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 "Got it!"
msgstr ""
@@ -5879,6 +5882,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6345,6 +6351,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6692,6 +6701,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -6983,6 +6995,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7395,6 +7410,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7852,6 +7870,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10701,6 +10734,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/it/gitlab.po b/locale/it/gitlab.po
index 3a8b10706bc..f50b44895d4 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: 2019-04-12 12:28\n"
+"PO-Revision-Date: 2019-06-14 19:52\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "Lug"
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Nuovo tag"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "Ultima »"
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/ja/gitlab.po b/locale/ja/gitlab.po
index ed9037c9503..5192d1e44f2 100644
--- a/locale/ja/gitlab.po
+++ b/locale/ja/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: ja\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:29\n"
+"PO-Revision-Date: 2019-06-14 19:52\n"
msgid " Please sign in."
msgstr ""
@@ -279,12 +279,12 @@ msgid_plural "%d Days"
msgstr[0] "%d æ—¥"
msgid "1 closed issue"
-msgid_plural "%d closed issues"
-msgstr[0] "%d件ã®ã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚ŒãŸèª²é¡Œ"
+msgid_plural "%{issues} closed issues"
+msgstr[0] "%{issues}件ã®ã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚ŒãŸèª²é¡Œ"
msgid "1 closed merge request"
-msgid_plural "%d closed merge requests"
-msgstr[0] "%d件ã®ã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚ŒãŸãƒžãƒ¼ã‚¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
+msgid_plural "%{merge_requests} closed merge requests"
+msgstr[0] "%{merge_requests}件ã®ã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚ŒãŸãƒžãƒ¼ã‚¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
msgid "1 day"
msgstr ""
@@ -294,16 +294,16 @@ msgid_plural "%d groups"
msgstr[0] "%dグループ"
msgid "1 merged merge request"
-msgid_plural "%d merged merge requests"
-msgstr[0] "%d件ã®ãƒžãƒ¼ã‚¸ã•ã‚ŒãŸãƒžãƒ¼ã‚¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
+msgid_plural "%{merge_requests} merged merge requests"
+msgstr[0] "%{merge_requests}件ã®ãƒžãƒ¼ã‚¸ã•ã‚ŒãŸãƒžãƒ¼ã‚¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
msgid "1 open issue"
-msgid_plural "%d open issues"
-msgstr[0] "%d件ã®èª²é¡Œ"
+msgid_plural "%{issues} open issues"
+msgstr[0] "%{issues}件ã®èª²é¡Œ"
msgid "1 open merge request"
-msgid_plural "%d open merge requests"
-msgstr[0] "%d件ã®ãƒžãƒ¼ã‚¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
+msgid_plural "%{merge_requests} open merge requests"
+msgstr[0] "%{merge_requests}件ã®ãƒžãƒ¼ã‚¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆ"
msgid "1 pipeline"
msgid_plural "%d pipelines"
@@ -853,7 +853,7 @@ msgid "Also called \"Relying party service URL\" or \"Reply URL\""
msgstr "\"Relying party service URL\" ã¾ãŸã¯ \"Reply URL\" ã¨ã‚‚呼ã°ã‚Œã¾ã™"
msgid "Alternate support URL for help page"
-msgstr ""
+msgstr "ヘルプページã®åˆ¥ã®ã‚µãƒãƒ¼ãƒˆURL"
msgid "Alternatively, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the <code>repo</code> scope, so we can display a list of your public and private repositories which are available to connect."
msgstr "ã‚ã‚‹ã„ã¯ã€ %{personal_access_token_link} を使用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚パーソナルアクセストークンを作æˆã™ã‚‹éš›ã«ã€<code>repo</code> スコープをé¸æŠžã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€æŽ¥ç¶šå¯èƒ½ãªå…¬é–‹ãƒªãƒã‚¸ãƒˆãƒªã¨ãƒ—ライベートリãƒã‚¸ãƒˆãƒªã®ä¸€è¦§ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
@@ -1169,7 +1169,7 @@ msgid "ApprovalRule|Name"
msgstr "åå‰"
msgid "ApprovalRule|No. approvals required"
-msgstr ""
+msgstr "ã„ã„ãˆã€‚承èªãŒå¿…è¦ã§ã™ã€‚"
msgid "ApprovalRule|e.g. QA, Security, etc."
msgstr ""
@@ -1543,6 +1543,30 @@ msgstr "ãƒãƒƒã‚¸"
msgid "Badges|e.g. %{exampleUrl}"
msgstr "例 %{exampleUrl}"
+msgid "Badge|New"
+msgstr "æ–°"
+
+msgid "Balsamiq file could not be loaded."
+msgstr "Balsamiq ファイルを読ã¿è¾¼ã¿ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+msgid "BambooService|A continuous integration and build server"
+msgstr "継続的インテグレーションã¨ãƒ“ルドサーãƒãƒ¼"
+
+msgid "BambooService|A user with API access, if applicable"
+msgstr "APIアクセス権をæŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼(該当ã™ã‚‹å ´åˆ)"
+
+msgid "BambooService|Atlassian Bamboo CI"
+msgstr "アトラシアンBamboo CI"
+
+msgid "BambooService|Bamboo build plan key like KEY"
+msgstr "KEYã®ã‚ˆã†ãªBambooã®ãƒ“ルドプランキー"
+
+msgid "BambooService|Bamboo root URL like https://bamboo.example.com"
+msgstr "Bamboo ã®ãƒ«ãƒ¼ãƒˆURL 例: https://bamboo.example.com"
+
+msgid "BambooService|You must set up automatic revision labeling and a repository trigger in Bamboo."
+msgstr "Bambooã§è‡ªå‹•ãƒªãƒ“ジョンラベリングã¨ãƒªãƒã‚¸ãƒˆãƒªãƒˆãƒªã‚¬ãƒ¼ã‚’設定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
+
msgid "BatchComments|Delete all pending comments"
msgstr "ä¿ç•™ä¸­ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’ã™ã¹ã¦å‰Šé™¤"
@@ -5449,6 +5473,9 @@ msgstr "Google テイクアウト"
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 管ç†è€…ã«å•ã„åˆã‚ã›ã¦ãã ã•ã„。"
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "入手ã—ã¾ã—ょã†ï¼"
@@ -5879,6 +5906,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6345,6 +6375,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "7月"
@@ -6692,6 +6725,9 @@ msgstr "ロック"
msgid "Lock %{issuableDisplayName}"
msgstr "ロック %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "ロックãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
@@ -6983,6 +7019,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7395,6 +7434,9 @@ msgstr "æ–°è¦ã‚¿ã‚°"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "æ–°è¦...\t"
@@ -7781,7 +7823,7 @@ msgid "OperationsDashboard|Add a project to the dashboard"
msgstr ""
msgid "OperationsDashboard|Add projects"
-msgstr ""
+msgstr "プロジェクトを追加"
msgid "OperationsDashboard|More information"
msgstr ""
@@ -7852,6 +7894,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "最後 »"
@@ -7934,7 +7991,7 @@ msgid "Personal Access Token"
msgstr "個人ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒˆãƒ¼ã‚¯ãƒ³"
msgid "Personal project creation is not allowed. Please contact your administrator with questions"
-msgstr ""
+msgstr "個人的ãªãƒ—ロジェクトã®ä½œæˆã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。質å•ãŒã‚ã‚‹å ´åˆã¯ã‚·ã‚¹ãƒ†ãƒ ã®ç®¡ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„"
msgid "Pick a name"
msgstr "åå‰ã‚’é¸æŠž"
@@ -10701,6 +10758,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
@@ -12839,7 +12899,7 @@ msgid "You will lose all the unstaged changes you've made in this project. This
msgstr ""
msgid "You will need to update your local repositories to point to the new location."
-msgstr ""
+msgstr "ローカルリãƒã‚¸ãƒˆãƒªãŒæ–°ã—ã„場所を示ã™ã‚ˆã†ã«æ›´æ–°ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
msgid "You will not get any notifications via email"
msgstr "通知メールをé€ä¿¡ã—ã¾ã›ã‚“"
diff --git a/locale/ka_GE/gitlab.po b/locale/ka_GE/gitlab.po
index 392e35c5b88..5ba154256e8 100644
--- a/locale/ka_GE/gitlab.po
+++ b/locale/ka_GE/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: ka\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:39\n"
+"PO-Revision-Date: 2019-06-14 20:03\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/ko/gitlab.po b/locale/ko/gitlab.po
index 75e53196f93..ca06e69c1ab 100644
--- a/locale/ko/gitlab.po
+++ b/locale/ko/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: ko\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:29\n"
+"PO-Revision-Date: 2019-06-14 19:52\n"
msgid " Please sign in."
msgstr ""
@@ -5449,6 +5449,9 @@ 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 관리ìžì—게 문ì˜í•˜ì„¸ìš”."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "확ì¸!"
@@ -5879,6 +5882,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6345,6 +6351,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "7ì›”"
@@ -6692,6 +6701,9 @@ msgstr "잠금"
msgid "Lock %{issuableDisplayName}"
msgstr "%{issuableDisplayName} 잠금"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "ìž ê¸ˆì„ ì°¾ì„ ìˆ˜ 없습니다."
@@ -6983,6 +6995,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7395,6 +7410,9 @@ msgstr "새 태그 "
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "새로 만들기..."
@@ -7852,6 +7870,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "마지막 »"
@@ -10701,6 +10734,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/mn_MN/gitlab.po b/locale/mn_MN/gitlab.po
index 9018bdd7cb2..edf3550720a 100644
--- a/locale/mn_MN/gitlab.po
+++ b/locale/mn_MN/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: mn\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:29\n"
+"PO-Revision-Date: 2019-06-14 19:53\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/nb_NO/gitlab.po b/locale/nb_NO/gitlab.po
index e6e7657d028..4b9b2688a9e 100644
--- a/locale/nb_NO/gitlab.po
+++ b/locale/nb_NO/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: nb\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:29\n"
+"PO-Revision-Date: 2019-06-14 19:53\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/nl_NL/gitlab.po b/locale/nl_NL/gitlab.po
index b1cb8543b19..2545e5a3abc 100644
--- a/locale/nl_NL/gitlab.po
+++ b/locale/nl_NL/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: nl\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:37\n"
+"PO-Revision-Date: 2019-06-14 20:01\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/pa_IN/gitlab.po b/locale/pa_IN/gitlab.po
index 3fe2383be2c..bf242beba24 100644
--- a/locale/pa_IN/gitlab.po
+++ b/locale/pa_IN/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: pa-IN\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:28\n"
+"PO-Revision-Date: 2019-06-14 19:52\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/pl_PL/gitlab.po b/locale/pl_PL/gitlab.po
index cb99176aef0..8953c686555 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: 2019-04-12 12:30\n"
+"PO-Revision-Date: 2019-06-14 19:53\n"
msgid " Please sign in."
msgstr ""
@@ -5578,6 +5578,9 @@ 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 "Got it!"
msgstr ""
@@ -6011,6 +6014,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6480,6 +6486,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6833,6 +6842,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7124,6 +7136,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7539,6 +7554,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7999,6 +8017,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10863,6 +10896,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/pt_BR/gitlab.po b/locale/pt_BR/gitlab.po
index 41d12896559..c34ca5ca56b 100644
--- a/locale/pt_BR/gitlab.po
+++ b/locale/pt_BR/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: pt-BR\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-13 15:37\n"
+"PO-Revision-Date: 2019-06-14 19:54\n"
msgid " Please sign in."
msgstr " Por favor, entre usando sua conta."
@@ -5492,6 +5492,9 @@ 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."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "Entendi!"
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 "Se desativada, um branch local divergente não será atualizada automaticamente com commits de sua contraparte remota, para evitar a perda de dados locais. Se o branch padrão (%{default_branch}) tiver divergido e não puder ser atualizado, o espelhamento falhará. Outras branches divergentes são silenciosamente ignoradas."
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "Jul"
@@ -6739,6 +6748,9 @@ msgstr "Bloquear"
msgid "Lock %{issuableDisplayName}"
msgstr "Bloquear %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "Bloqueio não encontrado"
@@ -7030,6 +7042,9 @@ msgstr "iniciou uma discussão no commit %{linkStart}%{commitId}%{linkEnd}"
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart}alterou a descrição %{descriptionChangedTimes} vezes %{timeDifferenceMinutes}%{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr "Erro ao carregar o diff completo. Por favor, tente novamente."
@@ -7443,6 +7458,9 @@ msgstr "Nova tag"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Novo..."
@@ -7901,6 +7919,21 @@ msgstr "Domínio de páginas"
msgid "Pages Domains"
msgstr "Domínios de páginas"
+msgid "Pages getting started guide"
+msgstr "Guia de primeiros passos a Páginas"
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "Último >>"
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/pt_PT/gitlab.po b/locale/pt_PT/gitlab.po
index 3a2d4ebb37f..f4ce5a0d63e 100644
--- a/locale/pt_PT/gitlab.po
+++ b/locale/pt_PT/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: pt-PT\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:30\n"
+"PO-Revision-Date: 2019-06-14 19:54\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/ro_RO/gitlab.po b/locale/ro_RO/gitlab.po
index c508597c9cc..28f9ac20f38 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: 2019-04-12 12:30\n"
+"PO-Revision-Date: 2019-06-14 19:54\n"
msgid " Please sign in."
msgstr ""
@@ -5535,6 +5535,9 @@ 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 "Got it!"
msgstr ""
@@ -5967,6 +5970,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6435,6 +6441,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6786,6 +6795,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7077,6 +7089,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7491,6 +7506,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7950,6 +7968,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10809,6 +10842,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/ru/gitlab.po b/locale/ru/gitlab.po
index 8298adf4526..8cb944f512c 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: 2019-04-13 17:27\n"
+"PO-Revision-Date: 2019-06-14 19:55\n"
msgid " Please sign in."
msgstr ""
@@ -5578,6 +5578,9 @@ msgstr ""
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, еÑли вы хотите воÑпользоватьÑÑ Ñтим ÑервиÑом."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "ПонÑтно!"
@@ -6011,6 +6014,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6480,6 +6486,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "Июл."
@@ -6833,6 +6842,9 @@ msgstr "Блокировка"
msgid "Lock %{issuableDisplayName}"
msgstr "Заблокировать %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "Блокировка не найдена"
@@ -7124,6 +7136,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart}изменил опиÑание %{descriptionChangedTimes} раз, за поÑледние %{timeDifferenceMinutes}%{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7539,6 +7554,9 @@ msgstr "Ðовый тег"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Ðовый..."
@@ -7999,6 +8017,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "ПоÑледнÑÑ Â»"
@@ -10863,6 +10896,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/sk_SK/gitlab.po b/locale/sk_SK/gitlab.po
index 9a02c0d0f60..2c8156eb5c4 100644
--- a/locale/sk_SK/gitlab.po
+++ b/locale/sk_SK/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: sk\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:32\n"
+"PO-Revision-Date: 2019-06-14 19:56\n"
msgid " Please sign in."
msgstr ""
@@ -5578,6 +5578,9 @@ 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 "Got it!"
msgstr ""
@@ -6011,6 +6014,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6480,6 +6486,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6833,6 +6842,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7124,6 +7136,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7539,6 +7554,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7999,6 +8017,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10863,6 +10896,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/sr_CS/gitlab.po b/locale/sr_CS/gitlab.po
index 6a7a71426ef..729160728d9 100644
--- a/locale/sr_CS/gitlab.po
+++ b/locale/sr_CS/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: sr-CS\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:31\n"
+"PO-Revision-Date: 2019-06-14 19:55\n"
msgid " Please sign in."
msgstr ""
@@ -5535,6 +5535,9 @@ 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 "Got it!"
msgstr ""
@@ -5967,6 +5970,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6435,6 +6441,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6786,6 +6795,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7077,6 +7089,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7491,6 +7506,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7950,6 +7968,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10809,6 +10842,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/sr_SP/gitlab.po b/locale/sr_SP/gitlab.po
index b8596ea8a38..66b2cc91978 100644
--- a/locale/sr_SP/gitlab.po
+++ b/locale/sr_SP/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: sr\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:31\n"
+"PO-Revision-Date: 2019-06-14 19:55\n"
msgid " Please sign in."
msgstr ""
@@ -5535,6 +5535,9 @@ 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 "Got it!"
msgstr ""
@@ -5967,6 +5970,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6435,6 +6441,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6786,6 +6795,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7077,6 +7089,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7491,6 +7506,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7950,6 +7968,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10809,6 +10842,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/sv_SE/gitlab.po b/locale/sv_SE/gitlab.po
index 5504a0d8cf4..3fe084231ab 100644
--- a/locale/sv_SE/gitlab.po
+++ b/locale/sv_SE/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: sv-SE\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:32\n"
+"PO-Revision-Date: 2019-06-14 19:56\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/sw_KE/gitlab.po b/locale/sw_KE/gitlab.po
index c56880bae2a..790b4ab23d6 100644
--- a/locale/sw_KE/gitlab.po
+++ b/locale/sw_KE/gitlab.po
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-Project: gitlab-ee\n"
"X-Crowdin-Language: sw\n"
"X-Crowdin-File: /master/locale/gitlab.pot\n"
-"PO-Revision-Date: 2019-04-12 12:32\n"
+"PO-Revision-Date: 2019-06-14 19:56\n"
msgid " Please sign in."
msgstr ""
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr ""
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/tr_TR/gitlab.po b/locale/tr_TR/gitlab.po
index 37fefca2afd..f50d93f34cf 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: 2019-04-13 08:55\n"
+"PO-Revision-Date: 2019-06-14 19:57\n"
msgid " Please sign in."
msgstr " Lütfen oturum açın."
@@ -5492,6 +5492,9 @@ 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 "Got it!"
msgstr ""
@@ -5923,6 +5926,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6390,6 +6396,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "Tem"
@@ -6739,6 +6748,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -7030,6 +7042,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7443,6 +7458,9 @@ msgstr "Yeni etiket"
msgid "New users set to external"
msgstr "Yeni kullanıcılar harici olarak ayarlandı"
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Yeni..."
@@ -7901,6 +7919,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10755,6 +10788,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/uk/gitlab.po b/locale/uk/gitlab.po
index c99fee40c16..f6c7a683fef 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: 2019-04-13 17:07\n"
+"PO-Revision-Date: 2019-06-14 21:26\n"
msgid " Please sign in."
msgstr ""
@@ -126,6 +126,13 @@ msgstr[1] "%d запита на злиттÑ"
msgstr[2] "%d запитів на злиттÑ"
msgstr[3] "%d запитів на злиттÑ"
+msgid "%d merge request that you don't have access to."
+msgid_plural "%d merge requests that you don't have access to."
+msgstr[0] "%d запит на злиттÑ, до Ñкого ви не маєте доÑтупу."
+msgstr[1] "%d запити на злиттÑ, до Ñких ви не маєте доÑтупу."
+msgstr[2] "%d запитів на злиттÑ, до Ñких ви не маєте доÑтупу."
+msgstr[3] "%d запитів на злиттÑ, до Ñких ви не маєте доÑтупу."
+
msgid "%d metric"
msgid_plural "%d metrics"
msgstr[0] "%d метрика"
@@ -308,6 +315,25 @@ msgstr "%{usage_ping_link_start}ДовідатиÑÑŒ більше%{usage_ping_li
msgid "%{user_name} profile page"
msgstr "%{user_name} Ñторінка профілю"
+msgid "%{verb} %{time_spent_value} spent time."
+msgstr "%{verb} %{time_spent_value} витрачено чаÑу."
+
+msgid "'%{level}' is not a valid visibility level"
+msgstr "\"%{level}\" не Ñ” допуÑтимим рівнем видимоÑÑ‚Ñ–"
+
+msgid "'%{source}' is not a import source"
+msgstr "\"%{source}\" не є джерелом імпорту"
+
+msgid "(%d closed)"
+msgid_plural "(%d closed)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+msgid "(%{mrCount} merged)"
+msgstr "(%{mrCount} злито)"
+
msgid "(No changes)"
msgstr ""
@@ -1393,12 +1419,36 @@ msgstr "Ви дійÑно бажаєте ÑкаÑувати підпиÑку нÐ
msgid "Are you sure?"
msgstr "Ви впевнені?"
+msgid "Are you sure? All commits that were signed with this GPG key will be unverified."
+msgstr ""
+
+msgid "Are you sure? Removing this GPG key does not affect already signed commits."
+msgstr ""
+
+msgid "Are you sure? This will invalidate your registered applications and U2F devices."
+msgstr "Ви впевнені? Це призведе до Ð°Ð½ÑƒÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ€ÐµÑ”Ñтрованих заÑтоÑунків та U2F приÑтроїв."
+
msgid "Artifact ID"
msgstr "ID артефакту"
msgid "Artifacts"
msgstr "Ðртефакти"
+msgid "As U2F devices are only supported by a few browsers, we require that you set up a two-factor authentication app before a U2F device. That way you'll always be able to log in - even when you're using an unsupported browser."
+msgstr "ОÑкільки приÑтрої U2F підтримуютьÑÑ Ð»Ð¸ÑˆÐµ кількома браузерами, ми вимагаємо, щоб ви налаштували заÑтоÑунок Ð´Ð»Ñ Ð´Ð²Ð¾Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ñ— автентифікації перед приÑтроєм U2F. Таким чином ви завжди зможете увійти, навіть при викориÑтанні непідтримуваного браузера."
+
+msgid "AsanaService|%{user} pushed to branch %{branch} of %{project_name} ( %{commit_url} ):"
+msgstr "%{user} відправив код в гілку %{branch} проекту %{project_name} (%{commit_url}):"
+
+msgid "AsanaService|Asana - Teamwork without email"
+msgstr "Asana — командна робота без електронної пошти"
+
+msgid "AsanaService|Comma-separated list of branches which will be automatically inspected. Leave blank to include all branches."
+msgstr "Розділений комами ÑпиÑок гілок, Ñкі будуть автоматично перевірÑтиÑÑ. Залиште порожнім, щоб включити уÑÑ– гілки."
+
+msgid "AsanaService|User Personal Access Token. User must have access to task, all comments will be attributed to this user."
+msgstr "ОÑобиÑтий токен доÑтупу кориÑтувача. КориÑтувач повинен мати доÑтуп до завданнÑ, уÑÑ– коментарі будуть відноÑитиÑÑ Ð´Ð¾ нього."
+
msgid "Ascending"
msgstr "За зроÑтаннÑм"
@@ -2894,7 +2944,7 @@ msgid "Code owners"
msgstr "ВлаÑники коду"
msgid "CodeOwner|Pattern"
-msgstr ""
+msgstr "Шаблон"
msgid "Cohorts"
msgstr "Когорти"
@@ -4161,6 +4211,9 @@ msgstr ""
msgid "Enter in your Bitbucket Server URL and personal access token below"
msgstr "Введіть URL-адреÑу вашого Bitbucket Server Ñ– ключ доÑтупу"
+msgid "Enter in your Phabricator Server URL and personal access token below"
+msgstr "Введіть URL-адреÑу вашого Ñервера Phabricator Ñ– перÑональний ключ доÑтупу"
+
msgid "Enter the issue description"
msgstr "Введіть Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ñ–"
@@ -5165,7 +5218,7 @@ msgid "GeoNodes|Out of sync"
msgstr "РозÑинхронізовані"
msgid "GeoNodes|Pausing replication stops the sync process."
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð½Ñ Ñ€ÐµÐ¿Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ— зупинÑÑ” Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñинхронізації."
msgid "GeoNodes|Removing a primary node stops the sync process for all nodes. Syncing cannot be resumed without losing some data on all secondaries. In this case we would recommend setting up all nodes from scratch. Are you sure?"
msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¾Ñновного вузла зупинÑÑ” Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñинхронізації Ð´Ð»Ñ Ð²ÑÑ–Ñ… вузлів. Синхронізацію неможливо буде відновити без втрати деÑких даних на вÑÑ–Ñ… вторинних вузлах. У цьому випадку рекомендовано налаштувати вÑÑ– вузли з нулÑ. Ви впевнені?"
@@ -5291,7 +5344,7 @@ msgid "Geo|Could not remove tracking entry for an existing project."
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð²Ñ–Ð´ÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ–Ñнуючого проекту."
msgid "Geo|Could not remove tracking entry for an existing upload."
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð²Ñ–Ð´ÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ–Ñнуючого завантаженнÑ."
msgid "Geo|Failed"
msgstr "Ðевдало"
@@ -5342,7 +5395,7 @@ msgid "Geo|Pending verification"
msgstr "ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸"
msgid "Geo|Please refer to Geo Troubleshooting."
-msgstr ""
+msgstr "Будь лаÑка, переглÑньте документацію з уÑÑƒÐ½ÐµÐ½Ð½Ñ Ð½ÐµÐ¿Ð¾Ð»Ð°Ð´Ð¾Ðº Geo."
msgid "Geo|Project"
msgstr ""
@@ -5396,19 +5449,19 @@ msgid "Geo|Status"
msgstr "СтатуÑ"
msgid "Geo|Sync"
-msgstr ""
+msgstr "Синхронізувати"
msgid "Geo|Synced"
msgstr "Синхронізовано"
msgid "Geo|Synced at"
-msgstr ""
+msgstr "Синхронізовано"
msgid "Geo|Synchronization failed - %{error}"
msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½ÐµÐ²Ð´Ð°Ð»Ð°: %{error}"
msgid "Geo|The URL defined on the primary node that secondary nodes should use to contact it. Returns `url` if not set"
-msgstr ""
+msgstr "URL-адреÑа, визначена на оÑновному вузлі, Ñку викориÑтовують вторинні вузли, щоб зв'ÑзатиÑÑ Ð· ним. Повертає \"url\", Ñкщо не вÑтановлено"
msgid "Geo|This is a primary node"
msgstr "Це — первинний вузол"
@@ -5578,6 +5631,9 @@ 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, Ñкщо ви хочете ÑкориÑтатиÑÑ Ñ†Ð¸Ð¼ ÑервіÑом."
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "Зрозуміло!"
@@ -6011,6 +6067,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr "Якщо увімкнено, тоді влаÑники груп зможуть керувати зв'Ñзками груп LDAP та перевизначеннÑм членів LDAP"
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 "Якщо вимкнено, локальна гілка зі змінами не буде автоматично підтÑгувати коміти з віддаленої гілки, щоб уникнути втрати локальних даних. Якщо гілка за замовчуваннÑм (%{default_branch}) міÑтить зміни Ñ– не може бути оновлена, тоді Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ неможливим. Інші гілки зі змінами автоматично ігноруютьÑÑ."
@@ -6480,6 +6539,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "лип."
@@ -6833,6 +6895,9 @@ msgstr "Блокувати"
msgid "Lock %{issuableDisplayName}"
msgstr "Заблокувати %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ знайдено"
@@ -7124,6 +7189,9 @@ msgstr "розпочав (-ла) коміту %{linkStart}%{commitId}%{linkEnd}"
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart} Ð¾Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ %{descriptionChangedTimes} раз(а,ів) %{timeDifferenceMinutes}%{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr "Помилка при заванаженні повного порівнÑннÑ. Будь лаÑка, Ñпробуйте знову."
@@ -7539,6 +7607,9 @@ msgstr "Ðовий тег"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "Ðовий..."
@@ -7999,6 +8070,21 @@ msgstr "Домен Pages"
msgid "Pages Domains"
msgstr "Домени Pages"
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "ОÑÑ‚Ð°Ð½Ð½Ñ Â»"
@@ -10863,6 +10949,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr "Пропонована зміна"
diff --git a/locale/zh_CN/gitlab.po b/locale/zh_CN/gitlab.po
index 7ab1b5ecfe7..9f613e767a8 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: 2019-04-12 12:36\n"
+"PO-Revision-Date: 2019-06-14 20:00\n"
msgid " Please sign in."
msgstr ""
@@ -5449,6 +5449,9 @@ 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管ç†å‘˜ã€‚"
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "了解ï¼"
@@ -5879,6 +5882,9 @@ msgstr "如果任何作业超过这个超时阈值,它将被标记为失败。
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr "如果选中,则群组所有者å¯ä»¥ç®¡ç† LDAP 群组链接和 LDAP æˆå‘˜è¦†ç›–"
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 "如果ç¦ç”¨ï¼Œåˆ™ä¸ä¼šä½¿ç”¨è¿œç¨‹å‰¯æœ¬çš„æ交自动更新分å‰çš„本地分支,以防止本地数æ®ä¸¢å¤±ã€‚如果默认分支 (%{default_branch}) 已分å‰ä¸”无法更新,则镜åƒå°†å¤±è´¥ã€‚其他分å‰çš„分支默默被忽略。"
@@ -6345,6 +6351,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "7月"
@@ -6692,6 +6701,9 @@ msgstr "é”定"
msgid "Lock %{issuableDisplayName}"
msgstr "é”定 %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "未找到é”"
@@ -6983,6 +6995,9 @@ msgstr "开始讨论æ交%{linkStart}%{commitId}%{linkEnd}"
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart}%{timeDifferenceMinutes}%{descriptionChangedTimes}次更改了æè¿°%{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr "加载完整差异时出错。请å†è¯•ä¸€æ¬¡ã€‚"
@@ -7395,6 +7410,9 @@ msgstr "新建标签"
msgid "New users set to external"
msgstr "新用户设置为外部"
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "新建..."
@@ -7852,6 +7870,21 @@ msgstr "Pages域å"
msgid "Pages Domains"
msgstr "Pages域å"
+msgid "Pages getting started guide"
+msgstr "Pages 入门指å—"
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "尾页 »"
@@ -10701,6 +10734,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr "å˜æ›´å»ºè®®"
diff --git a/locale/zh_HK/gitlab.po b/locale/zh_HK/gitlab.po
index 8882be94797..7a2e64fecc5 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: 2019-04-12 12:36\n"
+"PO-Revision-Date: 2019-06-14 20:00\n"
msgid " Please sign in."
msgstr ""
@@ -5449,6 +5449,9 @@ 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 "Got it!"
msgstr ""
@@ -5879,6 +5882,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 ""
@@ -6345,6 +6351,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -6692,6 +6701,9 @@ msgstr ""
msgid "Lock %{issuableDisplayName}"
msgstr ""
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr ""
@@ -6983,6 +6995,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7395,6 +7410,9 @@ msgstr "新增標籤"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -7852,6 +7870,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr ""
@@ -10701,6 +10734,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/locale/zh_TW/gitlab.po b/locale/zh_TW/gitlab.po
index 1522f1c96ad..4623bf75d89 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: 2019-04-12 12:36\n"
+"PO-Revision-Date: 2019-06-14 20:00\n"
msgid " Please sign in."
msgstr ""
@@ -5449,6 +5449,9 @@ 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 管ç†å“¡ã€‚"
+msgid "Got it"
+msgstr ""
+
msgid "Got it!"
msgstr "了解ï¼"
@@ -5879,6 +5882,9 @@ msgstr ""
msgid "If checked, group owners can manage LDAP group links and LDAP member overrides"
msgstr ""
+msgid "If checked, new group memberships and permissions can only be added via LDAP synchronization"
+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 "如果åœç”¨ï¼Œå‰‡ä¸æœƒä½¿ç”¨é ç«¯å‰¯æœ¬çš„æ交自動更新分支的本機分支,以防止本機資料被刪除。如果é è¨­åˆ†æ”¯ (%{default_branch}) 已被å†åˆ†æ”¯ä¸”無法更新時,則é¡åƒå°‡æœƒå¤±æ•—。其他å†åˆ†æ”¯çš„分支自動被忽略。"
@@ -6345,6 +6351,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr "七月"
@@ -6692,6 +6701,9 @@ msgstr "鎖定"
msgid "Lock %{issuableDisplayName}"
msgstr "鎖定 %{issuableDisplayName}"
+msgid "Lock memberships to LDAP synchronization"
+msgstr ""
+
msgid "Lock not found"
msgstr "找ä¸åˆ°éŽ–定的檔案"
@@ -6983,6 +6995,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr "%{paragraphStart} %{timeDifferenceMinutes} 修改了 %{descriptionChangedTimes} 次說明 %{paragraphEnd}"
+msgid "MergeRequest|Error dismissing suggestion popover. Please try again."
+msgstr ""
+
msgid "MergeRequest|Error loading full diff. Please try again."
msgstr ""
@@ -7395,6 +7410,9 @@ msgstr "新增標籤"
msgid "New users set to external"
msgstr ""
+msgid "New! Suggest changes directly"
+msgstr ""
+
msgid "New..."
msgstr "新增…"
@@ -7852,6 +7870,21 @@ msgstr ""
msgid "Pages Domains"
msgstr ""
+msgid "Pages getting started guide"
+msgstr ""
+
+msgid "Pagination|Go to first page"
+msgstr ""
+
+msgid "Pagination|Go to last page"
+msgstr ""
+
+msgid "Pagination|Go to next page"
+msgstr ""
+
+msgid "Pagination|Go to previous page"
+msgstr ""
+
msgid "Pagination|Last »"
msgstr "æœ€æœ«é  Â»"
@@ -10701,6 +10734,9 @@ msgstr ""
msgid "Successfully unlocked"
msgstr ""
+msgid "Suggest code changes which are immediately applied. Try it out!"
+msgstr ""
+
msgid "Suggested change"
msgstr ""
diff --git a/spec/controllers/import/fogbugz_controller_spec.rb b/spec/controllers/import/fogbugz_controller_spec.rb
index f1e0923f316..f7c813576aa 100644
--- a/spec/controllers/import/fogbugz_controller_spec.rb
+++ b/spec/controllers/import/fogbugz_controller_spec.rb
@@ -11,6 +11,44 @@ describe Import::FogbugzController do
sign_in(user)
end
+ describe 'POST #callback' do
+ let(:token) { FFaker::Lorem.characters(8) }
+ let(:uri) { 'https://example.com' }
+ let(:xml_response) { %Q(<?xml version=\"1.0\" encoding=\"UTF-8\"?><response><token><![CDATA[#{token}]]></token></response>) }
+
+ it 'attempts to contact Fogbugz server' do
+ stub_request(:post, "https://example.com/api.asp").to_return(status: 200, body: xml_response, headers: {})
+
+ post :callback, params: { uri: uri, email: 'test@example.com', password: 'mypassword' }
+
+ expect(session[:fogbugz_token]).to eq(token)
+ expect(session[:fogbugz_uri]).to eq(uri)
+ expect(response).to redirect_to(new_user_map_import_fogbugz_path)
+ end
+ end
+
+ describe 'POST #create_user_map' do
+ let(:user_map) do
+ {
+ "2" => {
+ "name" => "Test User",
+ "email" => "testuser@example.com",
+ "gitlab_user" => "3"
+ }
+ }
+ end
+
+ it 'stores the user map in the session' do
+ client = double(user_map: {})
+ expect(controller).to receive(:client).and_return(client)
+
+ post :create_user_map, params: { users: user_map }
+
+ expect(session[:fogbugz_user_map]).to eq(user_map)
+ expect(response).to redirect_to(status_import_fogbugz_path)
+ end
+ end
+
describe 'GET status' do
before do
@repo = OpenStruct.new(name: 'vim')
diff --git a/spec/controllers/snippets_controller_spec.rb b/spec/controllers/snippets_controller_spec.rb
index f8666a1986f..3aba02bf3ff 100644
--- a/spec/controllers/snippets_controller_spec.rb
+++ b/spec/controllers/snippets_controller_spec.rb
@@ -209,8 +209,8 @@ describe SnippetsController do
context 'when the snippet description contains a file' do
include FileMoverHelpers
- let(:picture_file) { '/-/system/temp/secret56/picture.jpg' }
- let(:text_file) { '/-/system/temp/secret78/text.txt' }
+ let(:picture_file) { "/-/system/user/#{user.id}/secret56/picture.jpg" }
+ let(:text_file) { "/-/system/user/#{user.id}/secret78/text.txt" }
let(:description) do
"Description with picture: ![picture](/uploads#{picture_file}) and "\
"text: [text.txt](/uploads#{text_file})"
diff --git a/spec/controllers/uploads_controller_spec.rb b/spec/controllers/uploads_controller_spec.rb
index d27658e02cb..0876502a899 100644
--- a/spec/controllers/uploads_controller_spec.rb
+++ b/spec/controllers/uploads_controller_spec.rb
@@ -24,121 +24,160 @@ describe UploadsController do
let!(:user) { create(:user, avatar: fixture_file_upload("spec/fixtures/dk.png", "image/png")) }
describe 'POST create' do
- let(:model) { 'personal_snippet' }
- let(:snippet) { create(:personal_snippet, :public) }
let(:jpg) { fixture_file_upload('spec/fixtures/rails_sample.jpg', 'image/jpg') }
let(:txt) { fixture_file_upload('spec/fixtures/doc_sample.txt', 'text/plain') }
- context 'when a user does not have permissions to upload a file' do
- it "returns 401 when the user is not logged in" do
- post :create, params: { model: model, id: snippet.id }, format: :json
+ context 'snippet uploads' do
+ let(:model) { 'personal_snippet' }
+ let(:snippet) { create(:personal_snippet, :public) }
- expect(response).to have_gitlab_http_status(401)
- end
+ context 'when a user does not have permissions to upload a file' do
+ it "returns 401 when the user is not logged in" do
+ post :create, params: { model: model, id: snippet.id }, format: :json
- it "returns 404 when user can't comment on a snippet" do
- private_snippet = create(:personal_snippet, :private)
+ expect(response).to have_gitlab_http_status(401)
+ end
- sign_in(user)
- post :create, params: { model: model, id: private_snippet.id }, format: :json
+ it "returns 404 when user can't comment on a snippet" do
+ private_snippet = create(:personal_snippet, :private)
- expect(response).to have_gitlab_http_status(404)
- end
- end
+ sign_in(user)
+ post :create, params: { model: model, id: private_snippet.id }, format: :json
- context 'when a user is logged in' do
- before do
- sign_in(user)
+ expect(response).to have_gitlab_http_status(404)
+ end
end
- it "returns an error without file" do
- post :create, params: { model: model, id: snippet.id }, format: :json
+ context 'when a user is logged in' do
+ before do
+ sign_in(user)
+ end
- expect(response).to have_gitlab_http_status(422)
- end
+ it "returns an error without file" do
+ post :create, params: { model: model, id: snippet.id }, format: :json
- it "returns an error with invalid model" do
- expect { post :create, params: { model: 'invalid', id: snippet.id }, format: :json }
- .to raise_error(ActionController::UrlGenerationError)
- end
+ expect(response).to have_gitlab_http_status(422)
+ end
- it "returns 404 status when object not found" do
- post :create, params: { model: model, id: 9999 }, format: :json
+ it "returns an error with invalid model" do
+ expect { post :create, params: { model: 'invalid', id: snippet.id }, format: :json }
+ .to raise_error(ActionController::UrlGenerationError)
+ end
- expect(response).to have_gitlab_http_status(404)
- end
+ it "returns 404 status when object not found" do
+ post :create, params: { model: model, id: 9999 }, format: :json
- context 'with valid image' do
- before do
- post :create, params: { model: 'personal_snippet', id: snippet.id, file: jpg }, format: :json
+ expect(response).to have_gitlab_http_status(404)
end
- it 'returns a content with original filename, new link, and correct type.' do
- expect(response.body).to match '\"alt\":\"rails_sample\"'
- expect(response.body).to match "\"url\":\"/uploads"
+ context 'with valid image' do
+ before do
+ post :create, params: { model: 'personal_snippet', id: snippet.id, file: jpg }, format: :json
+ end
+
+ it 'returns a content with original filename, new link, and correct type.' do
+ expect(response.body).to match '\"alt\":\"rails_sample\"'
+ expect(response.body).to match "\"url\":\"/uploads"
+ end
+
+ it 'creates a corresponding Upload record' do
+ upload = Upload.last
+
+ aggregate_failures do
+ expect(upload).to exist
+ expect(upload.model).to eq snippet
+ end
+ end
end
- it 'creates a corresponding Upload record' do
- upload = Upload.last
+ context 'with valid non-image file' do
+ before do
+ post :create, params: { model: 'personal_snippet', id: snippet.id, file: txt }, format: :json
+ end
- aggregate_failures do
- expect(upload).to exist
- expect(upload.model).to eq snippet
+ it 'returns a content with original filename, new link, and correct type.' do
+ expect(response.body).to match '\"alt\":\"doc_sample.txt\"'
+ expect(response.body).to match "\"url\":\"/uploads"
+ end
+
+ it 'creates a corresponding Upload record' do
+ upload = Upload.last
+
+ aggregate_failures do
+ expect(upload).to exist
+ expect(upload.model).to eq snippet
+ end
end
end
end
+ end
+
+ context 'user uploads' do
+ let(:model) { 'user' }
+
+ it 'returns 401 when the user has no access' do
+ post :create, params: { model: 'user', id: user.id }, format: :json
- context 'with valid non-image file' do
+ expect(response).to have_gitlab_http_status(401)
+ end
+
+ context 'when user is logged in' do
before do
- post :create, params: { model: 'personal_snippet', id: snippet.id, file: txt }, format: :json
+ sign_in(user)
+ end
+
+ subject do
+ post :create, params: { model: model, id: user.id, file: jpg }, format: :json
end
it 'returns a content with original filename, new link, and correct type.' do
- expect(response.body).to match '\"alt\":\"doc_sample.txt\"'
- expect(response.body).to match "\"url\":\"/uploads"
+ subject
+
+ expect(response.body).to match '\"alt\":\"rails_sample\"'
+ expect(response.body).to match "\"url\":\"/uploads/-/system/user/#{user.id}/"
end
it 'creates a corresponding Upload record' do
+ expect { subject }.to change { Upload.count }
+
upload = Upload.last
aggregate_failures do
expect(upload).to exist
- expect(upload.model).to eq snippet
+ expect(upload.model).to eq user
end
end
- end
- context 'temporal with valid image' do
- subject do
- post :create, params: { model: 'personal_snippet', file: jpg }, format: :json
- end
+ context 'with valid non-image file' do
+ subject do
+ post :create, params: { model: model, id: user.id, file: txt }, format: :json
+ end
- it 'returns a content with original filename, new link, and correct type.' do
- subject
+ it 'returns a content with original filename, new link, and correct type.' do
+ subject
- expect(response.body).to match '\"alt\":\"rails_sample\"'
- expect(response.body).to match "\"url\":\"/uploads/-/system/temp"
- end
+ expect(response.body).to match '\"alt\":\"doc_sample.txt\"'
+ expect(response.body).to match "\"url\":\"/uploads/-/system/user/#{user.id}/"
+ end
- it 'does not create an Upload record' do
- expect { subject }.not_to change { Upload.count }
- end
- end
+ it 'creates a corresponding Upload record' do
+ expect { subject }.to change { Upload.count }
- context 'temporal with valid non-image file' do
- subject do
- post :create, params: { model: 'personal_snippet', file: txt }, format: :json
+ upload = Upload.last
+
+ aggregate_failures do
+ expect(upload).to exist
+ expect(upload.model).to eq user
+ end
+ end
end
- it 'returns a content with original filename, new link, and correct type.' do
- subject
+ it 'returns 404 when given user is not the logged in one' do
+ another_user = create(:user)
- expect(response.body).to match '\"alt\":\"doc_sample.txt\"'
- expect(response.body).to match "\"url\":\"/uploads/-/system/temp"
- end
+ post :create, params: { model: model, id: another_user.id, file: txt }, format: :json
- it 'does not create an Upload record' do
- expect { subject }.not_to change { Upload.count }
+ expect(response).to have_gitlab_http_status(404)
end
end
end
diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb
index 1c97d5ec5b4..93d77d5b5ce 100644
--- a/spec/features/snippets/user_creates_snippet_spec.rb
+++ b/spec/features/snippets/user_creates_snippet_spec.rb
@@ -41,7 +41,7 @@ describe 'User creates snippet', :js do
expect(page).to have_content('My Snippet')
link = find('a.no-attachment-icon img[alt="banana_sample"]')['src']
- expect(link).to match(%r{/uploads/-/system/temp/\h{32}/banana_sample\.gif\z})
+ expect(link).to match(%r{/uploads/-/system/user/#{user.id}/\h{32}/banana_sample\.gif\z})
reqs = inspect_requests { visit(link) }
expect(reqs.first.status_code).to eq(200)
diff --git a/spec/frontend/ide/services/index_spec.js b/spec/frontend/ide/services/index_spec.js
new file mode 100644
index 00000000000..499fa8fc012
--- /dev/null
+++ b/spec/frontend/ide/services/index_spec.js
@@ -0,0 +1,55 @@
+import services from '~/ide/services';
+import Api from '~/api';
+
+jest.mock('~/api');
+
+const TEST_PROJECT_ID = 'alice/wonderland';
+const TEST_BRANCH = 'master-patch-123';
+const TEST_COMMIT_SHA = '123456789';
+
+describe('IDE services', () => {
+ describe('commit', () => {
+ let payload;
+
+ beforeEach(() => {
+ payload = {
+ branch: TEST_BRANCH,
+ commit_message: 'Hello world',
+ actions: [],
+ start_sha: undefined,
+ };
+
+ Api.createBranch.mockReturnValue(Promise.resolve());
+ Api.commitMultiple.mockReturnValue(Promise.resolve());
+ });
+
+ describe.each`
+ startSha | shouldCreateBranch
+ ${undefined} | ${false}
+ ${TEST_COMMIT_SHA} | ${true}
+ `('when start_sha is $startSha', ({ startSha, shouldCreateBranch }) => {
+ beforeEach(() => {
+ payload.start_sha = startSha;
+
+ return services.commit(TEST_PROJECT_ID, payload);
+ });
+
+ if (shouldCreateBranch) {
+ it('should create branch', () => {
+ expect(Api.createBranch).toHaveBeenCalledWith(TEST_PROJECT_ID, {
+ ref: TEST_COMMIT_SHA,
+ branch: TEST_BRANCH,
+ });
+ });
+ } else {
+ it('should not create branch', () => {
+ expect(Api.createBranch).not.toHaveBeenCalled();
+ });
+ }
+
+ it('should commit', () => {
+ expect(Api.commitMultiple).toHaveBeenCalledWith(TEST_PROJECT_ID, payload);
+ });
+ });
+ });
+});
diff --git a/spec/graphql/types/label_type_spec.rb b/spec/graphql/types/label_type_spec.rb
new file mode 100644
index 00000000000..da2b0b578da
--- /dev/null
+++ b/spec/graphql/types/label_type_spec.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+describe GitlabSchema.types['Label'] do
+ it { is_expected.to require_graphql_authorizations(:read_label) }
+end
diff --git a/spec/graphql/types/metadata_type_spec.rb b/spec/graphql/types/metadata_type_spec.rb
index 55205bf5b6a..5236380e477 100644
--- a/spec/graphql/types/metadata_type_spec.rb
+++ b/spec/graphql/types/metadata_type_spec.rb
@@ -2,4 +2,5 @@ require 'spec_helper'
describe GitlabSchema.types['Metadata'] do
it { expect(described_class.graphql_name).to eq('Metadata') }
+ it { is_expected.to require_graphql_authorizations(:read_instance_metadata) }
end
diff --git a/spec/graphql/types/namespace_type.rb b/spec/graphql/types/namespace_type.rb
index 7cd6a79ae5d..3aeea6ed6c7 100644
--- a/spec/graphql/types/namespace_type.rb
+++ b/spec/graphql/types/namespace_type.rb
@@ -4,4 +4,8 @@ require 'spec_helper'
describe GitlabSchema.types['Namespace'] do
it { expect(described_class.graphql_name).to eq('Namespace') }
+
+ it { expect(described_class).to have_graphql_field(:projects) }
+
+ it { is_expected.to require_graphql_authorizations(:read_namespace) }
end
diff --git a/spec/graphql/types/query_type_spec.rb b/spec/graphql/types/query_type_spec.rb
index b4626955816..71aa38bf73c 100644
--- a/spec/graphql/types/query_type_spec.rb
+++ b/spec/graphql/types/query_type_spec.rb
@@ -24,9 +24,5 @@ describe GitlabSchema.types['Query'] do
is_expected.to have_graphql_type(Types::MetadataType)
is_expected.to have_graphql_resolver(Resolvers::MetadataResolver)
end
-
- it 'authorizes with read_instance_metadata' do
- is_expected.to require_graphql_authorizations(:read_instance_metadata)
- end
end
end
diff --git a/spec/javascripts/ide/stores/modules/commit/actions_spec.js b/spec/javascripts/ide/stores/modules/commit/actions_spec.js
index cdeb9b4b896..39902157441 100644
--- a/spec/javascripts/ide/stores/modules/commit/actions_spec.js
+++ b/spec/javascripts/ide/stores/modules/commit/actions_spec.js
@@ -7,6 +7,8 @@ import consts from '~/ide/stores/modules/commit/constants';
import { commitActionTypes } from '~/ide/constants';
import { resetStore, file } from 'spec/ide/helpers';
+const TEST_COMMIT_SHA = '123456789';
+
describe('IDE commit module actions', () => {
beforeEach(() => {
spyOn(router, 'push');
@@ -136,6 +138,9 @@ describe('IDE commit module actions', () => {
branches: {
master: {
workingReference: '',
+ commit: {
+ short_id: TEST_COMMIT_SHA,
+ },
},
},
};
@@ -236,6 +241,9 @@ describe('IDE commit module actions', () => {
branches: {
master: {
workingReference: '1',
+ commit: {
+ short_id: TEST_COMMIT_SHA,
+ },
},
},
};
@@ -244,7 +252,7 @@ describe('IDE commit module actions', () => {
...file('changed'),
type: 'blob',
active: true,
- lastCommitSha: '123456789',
+ lastCommitSha: TEST_COMMIT_SHA,
};
store.state.stagedFiles.push(f);
store.state.changedFiles = [
@@ -303,7 +311,7 @@ describe('IDE commit module actions', () => {
previous_path: undefined,
},
],
- start_branch: 'master',
+ start_sha: TEST_COMMIT_SHA,
});
done();
@@ -326,11 +334,11 @@ describe('IDE commit module actions', () => {
file_path: jasmine.anything(),
content: undefined,
encoding: jasmine.anything(),
- last_commit_id: '123456789',
+ last_commit_id: TEST_COMMIT_SHA,
previous_path: undefined,
},
],
- start_branch: undefined,
+ start_sha: undefined,
});
done();
diff --git a/spec/javascripts/ide/stores/utils_spec.js b/spec/javascripts/ide/stores/utils_spec.js
index debe1c4acee..e3bf6d40245 100644
--- a/spec/javascripts/ide/stores/utils_spec.js
+++ b/spec/javascripts/ide/stores/utils_spec.js
@@ -132,7 +132,7 @@ describe('Multi-file store utils', () => {
previous_path: undefined,
},
],
- start_branch: undefined,
+ start_sha: undefined,
});
});
@@ -187,7 +187,7 @@ describe('Multi-file store utils', () => {
previous_path: undefined,
},
],
- start_branch: undefined,
+ start_sha: undefined,
});
});
});
diff --git a/spec/lib/banzai/filter/relative_link_filter_spec.rb b/spec/lib/banzai/filter/relative_link_filter_spec.rb
index dad0a5535c0..a6e8a2fc8fc 100644
--- a/spec/lib/banzai/filter/relative_link_filter_spec.rb
+++ b/spec/lib/banzai/filter/relative_link_filter_spec.rb
@@ -83,6 +83,11 @@ describe Banzai::Filter::RelativeLinkFilter do
expect { filter(act) }.not_to raise_error
end
+ it 'does not explode with an escaped null byte' do
+ act = link("/%00")
+ expect { filter(act) }.not_to raise_error
+ end
+
it 'does not raise an exception with a space in the path' do
act = link("/uploads/d18213acd3732630991986120e167e3d/Landscape_8.jpg \nBut here's some more unexpected text :smile:)")
expect { filter(act) }.not_to raise_error
diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb
index 7644d83992f..b4bfb1c5b5a 100644
--- a/spec/lib/gitlab/git/repository_spec.rb
+++ b/spec/lib/gitlab/git/repository_spec.rb
@@ -231,6 +231,18 @@ describe Gitlab::Git::Repository, :seed_helper do
it { is_expected.to be < 2 }
end
+ describe '#object_directory_size' do
+ before do
+ allow(repository.gitaly_repository_client)
+ .to receive(:get_object_directory_size)
+ .and_return(2)
+ end
+
+ subject { repository.object_directory_size }
+
+ it { is_expected.to eq 2048 }
+ end
+
describe '#empty?' do
it { expect(repository).not_to be_empty }
end
diff --git a/spec/lib/gitlab/gitaly_client/repository_service_spec.rb b/spec/lib/gitlab/gitaly_client/repository_service_spec.rb
index 09de7ca6afd..a3808adb376 100644
--- a/spec/lib/gitlab/gitaly_client/repository_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/repository_service_spec.rb
@@ -73,6 +73,17 @@ describe Gitlab::GitalyClient::RepositoryService do
end
end
+ describe '#get_object_directory_size' do
+ it 'sends a get_object_directory_size message' do
+ expect_any_instance_of(Gitaly::RepositoryService::Stub)
+ .to receive(:get_object_directory_size)
+ .with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
+ .and_return(size: 0)
+
+ client.get_object_directory_size
+ end
+ end
+
describe '#apply_gitattributes' do
let(:revision) { 'master' }
diff --git a/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb b/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb
index aec9c4baf0a..d60d1b7559a 100644
--- a/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb
+++ b/spec/lib/gitlab/graphql/authorize/authorize_field_service_spec.rb
@@ -7,35 +7,39 @@ require 'spec_helper'
describe Gitlab::Graphql::Authorize::AuthorizeFieldService do
def type(type_authorizations = [])
Class.new(Types::BaseObject) do
- graphql_name "TestType"
+ graphql_name 'TestType'
authorize type_authorizations
end
end
- def type_with_field(field_type, field_authorizations = [], resolved_value = "Resolved value")
+ def type_with_field(field_type, field_authorizations = [], resolved_value = 'Resolved value', **options)
Class.new(Types::BaseObject) do
- graphql_name "TestTypeWithField"
- field :test_field, field_type, null: true, authorize: field_authorizations, resolve: -> (_, _, _) { resolved_value}
+ graphql_name 'TestTypeWithField'
+ options.reverse_merge!(null: true)
+ field :test_field, field_type,
+ authorize: field_authorizations,
+ resolve: -> (_, _, _) { resolved_value },
+ **options
end
end
let(:current_user) { double(:current_user) }
subject(:service) { described_class.new(field) }
- describe "#authorized_resolve" do
- let(:presented_object) { double("presented object") }
- let(:presented_type) { double("parent type", object: presented_object) }
+ describe '#authorized_resolve' do
+ let(:presented_object) { double('presented object') }
+ let(:presented_type) { double('parent type', object: presented_object) }
subject(:resolved) { service.authorized_resolve.call(presented_type, {}, { current_user: current_user }) }
- context "scalar types" do
- shared_examples "checking permissions on the presented object" do
- it "checks the abilities on the object being presented and returns the value" do
+ context 'scalar types' do
+ shared_examples 'checking permissions on the presented object' do
+ it 'checks the abilities on the object being presented and returns the value' do
expected_permissions.each do |permission|
spy_ability_check_for(permission, presented_object, passed: true)
end
- expect(resolved).to eq("Resolved value")
+ expect(resolved).to eq('Resolved value')
end
it "returns nil if the value wasn't authorized" do
@@ -45,61 +49,71 @@ describe Gitlab::Graphql::Authorize::AuthorizeFieldService do
end
end
- context "when the field is a built-in scalar type" do
- let(:field) { type_with_field(GraphQL::STRING_TYPE, :read_field).fields["testField"].to_graphql }
+ context 'when the field is a built-in scalar type' do
+ let(:field) { type_with_field(GraphQL::STRING_TYPE, :read_field).fields['testField'].to_graphql }
let(:expected_permissions) { [:read_field] }
- it_behaves_like "checking permissions on the presented object"
+ it_behaves_like 'checking permissions on the presented object'
end
- context "when the field is a list of scalar types" do
- let(:field) { type_with_field([GraphQL::STRING_TYPE], :read_field).fields["testField"].to_graphql }
+ context 'when the field is a list of scalar types' do
+ let(:field) { type_with_field([GraphQL::STRING_TYPE], :read_field).fields['testField'].to_graphql }
let(:expected_permissions) { [:read_field] }
- it_behaves_like "checking permissions on the presented object"
+ it_behaves_like 'checking permissions on the presented object'
end
- context "when the field is sub-classed scalar type" do
- let(:field) { type_with_field(Types::TimeType, :read_field).fields["testField"].to_graphql }
+ context 'when the field is sub-classed scalar type' do
+ let(:field) { type_with_field(Types::TimeType, :read_field).fields['testField'].to_graphql }
let(:expected_permissions) { [:read_field] }
- it_behaves_like "checking permissions on the presented object"
+ it_behaves_like 'checking permissions on the presented object'
end
- context "when the field is a list of sub-classed scalar types" do
- let(:field) { type_with_field([Types::TimeType], :read_field).fields["testField"].to_graphql }
+ context 'when the field is a list of sub-classed scalar types' do
+ let(:field) { type_with_field([Types::TimeType], :read_field).fields['testField'].to_graphql }
let(:expected_permissions) { [:read_field] }
- it_behaves_like "checking permissions on the presented object"
+ it_behaves_like 'checking permissions on the presented object'
end
end
- context "when the field is a specific type" do
+ context 'when the field is a specific type' do
let(:custom_type) { type(:read_type) }
- let(:object_in_field) { double("presented in field") }
- let(:field) { type_with_field(custom_type, :read_field, object_in_field).fields["testField"].to_graphql }
+ let(:object_in_field) { double('presented in field') }
+ let(:field) { type_with_field(custom_type, :read_field, object_in_field).fields['testField'].to_graphql }
- it "checks both field & type permissions" do
+ it 'checks both field & type permissions' do
spy_ability_check_for(:read_field, object_in_field, passed: true)
spy_ability_check_for(:read_type, object_in_field, passed: true)
expect(resolved).to eq(object_in_field)
end
- it "returns nil if viewing was not allowed" do
+ it 'returns nil if viewing was not allowed' do
spy_ability_check_for(:read_field, object_in_field, passed: false)
spy_ability_check_for(:read_type, object_in_field, passed: true)
expect(resolved).to be_nil
end
- context "when the field is a list" do
- let(:object_1) { double("presented in field 1") }
- let(:object_2) { double("presented in field 2") }
+ context 'when the field is not nullable' do
+ let(:field) { type_with_field(custom_type, [], object_in_field, null: false).fields['testField'].to_graphql }
+
+ it 'returns nil when viewing is not allowed' do
+ spy_ability_check_for(:read_type, object_in_field, passed: false)
+
+ expect(resolved).to be_nil
+ end
+ end
+
+ context 'when the field is a list' do
+ let(:object_1) { double('presented in field 1') }
+ let(:object_2) { double('presented in field 2') }
let(:presented_types) { [double(object: object_1), double(object: object_2)] }
- let(:field) { type_with_field([custom_type], :read_field, presented_types).fields["testField"].to_graphql }
+ let(:field) { type_with_field([custom_type], :read_field, presented_types).fields['testField'].to_graphql }
- it "checks all permissions" do
+ it 'checks all permissions' do
allow(Ability).to receive(:allowed?) { true }
spy_ability_check_for(:read_field, object_1, passed: true)
@@ -110,7 +124,7 @@ describe Gitlab::Graphql::Authorize::AuthorizeFieldService do
expect(resolved).to eq(presented_types)
end
- it "filters out objects that the user cannot see" do
+ it 'filters out objects that the user cannot see' do
allow(Ability).to receive(:allowed?) { true }
spy_ability_check_for(:read_type, object_1, passed: false)
diff --git a/spec/lib/gitlab/issuable_metadata_spec.rb b/spec/lib/gitlab/issuable_metadata_spec.rb
index 916f3876a8e..032467b8b4e 100644
--- a/spec/lib/gitlab/issuable_metadata_spec.rb
+++ b/spec/lib/gitlab/issuable_metadata_spec.rb
@@ -7,11 +7,11 @@ describe Gitlab::IssuableMetadata do
subject { Class.new { include Gitlab::IssuableMetadata }.new }
it 'returns an empty Hash if an empty collection is provided' do
- expect(subject.issuable_meta_data(Issue.none, 'Issue')).to eq({})
+ expect(subject.issuable_meta_data(Issue.none, 'Issue', user)).to eq({})
end
it 'raises an error when given a collection with no limit' do
- expect { subject.issuable_meta_data(Issue.all, 'Issue') }.to raise_error(/must have a limit/)
+ expect { subject.issuable_meta_data(Issue.all, 'Issue', user) }.to raise_error(/must have a limit/)
end
context 'issues' do
@@ -23,7 +23,7 @@ describe Gitlab::IssuableMetadata do
let!(:closing_issues) { create(:merge_requests_closing_issues, issue: issue, merge_request: merge_request) }
it 'aggregates stats on issues' do
- data = subject.issuable_meta_data(Issue.all.limit(10), 'Issue')
+ data = subject.issuable_meta_data(Issue.all.limit(10), 'Issue', user)
expect(data.count).to eq(2)
expect(data[issue.id].upvotes).to eq(1)
@@ -46,7 +46,7 @@ describe Gitlab::IssuableMetadata do
let!(:note) { create(:note_on_merge_request, author: user, project: project, noteable: merge_request, note: "a comment on a MR") }
it 'aggregates stats on merge requests' do
- data = subject.issuable_meta_data(MergeRequest.all.limit(10), 'MergeRequest')
+ data = subject.issuable_meta_data(MergeRequest.all.limit(10), 'MergeRequest', user)
expect(data.count).to eq(2)
expect(data[merge_request.id].upvotes).to eq(1)
diff --git a/spec/routing/uploads_routing_spec.rb b/spec/routing/uploads_routing_spec.rb
index 6a041ffdd6c..42e84774088 100644
--- a/spec/routing/uploads_routing_spec.rb
+++ b/spec/routing/uploads_routing_spec.rb
@@ -12,10 +12,19 @@ describe 'Uploads', 'routing' do
)
end
+ it 'allows creating uploads for users' do
+ expect(post('/uploads/user?id=1')).to route_to(
+ controller: 'uploads',
+ action: 'create',
+ model: 'user',
+ id: '1'
+ )
+ end
+
it 'does not allow creating uploads for other models' do
- UploadsController::MODEL_CLASSES.keys.compact.each do |model|
- next if model == 'personal_snippet'
+ unroutable_models = UploadsController::MODEL_CLASSES.keys.compact - %w(personal_snippet user)
+ unroutable_models.each do |model|
expect(post("/uploads/#{model}?id=1")).not_to be_routable
end
end
diff --git a/spec/services/projects/propagate_service_template_spec.rb b/spec/services/projects/propagate_service_template_spec.rb
index f93e5aae82a..2c3effec617 100644
--- a/spec/services/projects/propagate_service_template_spec.rb
+++ b/spec/services/projects/propagate_service_template_spec.rb
@@ -72,7 +72,7 @@ describe Projects::PropagateServiceTemplate do
expect(project.pushover_service.properties).to eq(service_template.properties)
end
- describe 'bulk update' do
+ describe 'bulk update', :use_sql_query_cache do
let(:project_total) { 5 }
before do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 9266bee34d6..ec17bee640d 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -215,6 +215,12 @@ RSpec.configure do |config|
ActionController::Base.cache_store = caching_store
end
+ config.around(:each, :use_sql_query_cache) do |example|
+ ActiveRecord::Base.cache do
+ example.run
+ end
+ end
+
# The :each scope runs "inside" the example, so this hook ensures the DB is in the
# correct state before any examples' before hooks are called. This prevents a
# problem where `ScheduleIssuesClosedAtTypeChange` (or any migration that depends
diff --git a/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb b/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb
new file mode 100644
index 00000000000..5f4e178f2e5
--- /dev/null
+++ b/spec/support/shared_examples/requests/api/issues/merge_requests_count_shared_examples.rb
@@ -0,0 +1,37 @@
+def get_issue
+ json_response.is_a?(Array) ? json_response.detect {|issue| issue['id'] == target_issue.id} : json_response
+end
+
+shared_examples 'accessible merge requests count' do
+ it 'returns anonymous accessible merge requests count' do
+ get api(api_url), params: { scope: 'all' }
+
+ issue = get_issue
+ expect(issue).not_to be_nil
+ expect(issue['merge_requests_count']).to eq(1)
+ end
+
+ it 'returns guest accessible merge requests count' do
+ get api(api_url, guest), params: { scope: 'all' }
+
+ issue = get_issue
+ expect(issue).not_to be_nil
+ expect(issue['merge_requests_count']).to eq(1)
+ end
+
+ it 'returns reporter accessible merge requests count' do
+ get api(api_url, user), params: { scope: 'all' }
+
+ issue = get_issue
+ expect(issue).not_to be_nil
+ expect(issue['merge_requests_count']).to eq(2)
+ end
+
+ it 'returns admin accessible merge requests count' do
+ get api(api_url, admin), params: { scope: 'all' }
+
+ issue = get_issue
+ expect(issue).not_to be_nil
+ expect(issue['merge_requests_count']).to eq(2)
+ end
+end
diff --git a/spec/uploaders/file_mover_spec.rb b/spec/uploaders/file_mover_spec.rb
index e474a714b10..d5e8a90cecd 100644
--- a/spec/uploaders/file_mover_spec.rb
+++ b/spec/uploaders/file_mover_spec.rb
@@ -3,20 +3,29 @@ require 'spec_helper'
describe FileMover do
include FileMoverHelpers
+ let(:user) { create(:user) }
let(:filename) { 'banana_sample.gif' }
- let(:temp_file_path) { File.join('uploads/-/system/temp', 'secret55', filename) }
+ let(:secret) { 'secret55' }
+ let(:temp_file_path) { File.join("uploads/-/system/user/#{user.id}", secret, filename) }
let(:temp_description) do
"test ![banana_sample](/#{temp_file_path}) "\
"same ![banana_sample](/#{temp_file_path}) "
end
- let(:file_path) { File.join('uploads/-/system/personal_snippet', snippet.id.to_s, 'secret55', filename) }
+ let(:file_path) { File.join('uploads/-/system/personal_snippet', snippet.id.to_s, secret, filename) }
let(:snippet) { create(:personal_snippet, description: temp_description) }
- subject { described_class.new(temp_file_path, snippet).execute }
+ let(:tmp_uploader) do
+ PersonalFileUploader.new(user, secret: secret)
+ end
+
+ let(:file) { fixture_file_upload('spec/fixtures/banana_sample.gif') }
+ subject { described_class.new(temp_file_path, from_model: user, to_model: snippet).execute }
describe '#execute' do
before do
+ tmp_uploader.store!(file)
+
expect(FileUtils).to receive(:mkdir_p).with(a_string_including(File.dirname(file_path)))
expect(FileUtils).to receive(:move).with(a_string_including(temp_file_path), a_string_including(file_path))
allow_any_instance_of(CarrierWave::SanitizedFile).to receive(:exists?).and_return(true)
@@ -25,6 +34,8 @@ describe FileMover do
stub_file_mover(temp_file_path)
end
+ let(:tmp_upload) { tmp_uploader.upload }
+
context 'when move and field update successful' do
it 'updates the description correctly' do
subject
@@ -36,8 +47,10 @@ describe FileMover do
)
end
- it 'creates a new update record' do
- expect { subject }.to change { Upload.count }.by(1)
+ it 'updates existing upload record' do
+ expect { subject }
+ .to change { tmp_upload.reload.attributes.values_at('model_id', 'model_type') }
+ .from([user.id, 'User']).to([snippet.id, 'PersonalSnippet'])
end
it 'schedules a background migration' do
@@ -52,30 +65,31 @@ describe FileMover do
expect(FileUtils).to receive(:move).with(a_string_including(file_path), a_string_including(temp_file_path))
end
- subject { described_class.new(file_path, snippet, :non_existing_field).execute }
+ subject { described_class.new(file_path, :non_existing_field, from_model: user, to_model: snippet).execute }
it 'does not update the description' do
subject
expect(snippet.reload.description)
.to eq(
- "test ![banana_sample](/uploads/-/system/temp/secret55/banana_sample.gif) "\
- "same ![banana_sample](/uploads/-/system/temp/secret55/banana_sample.gif) "
+ "test ![banana_sample](/uploads/-/system/user/#{user.id}/secret55/banana_sample.gif) "\
+ "same ![banana_sample](/uploads/-/system/user/#{user.id}/secret55/banana_sample.gif) "
)
end
- it 'does not create a new update record' do
- expect { subject }.not_to change { Upload.count }
+ it 'does not change the upload record' do
+ expect { subject }
+ .not_to change { tmp_upload.reload.attributes.values_at('model_id', 'model_type') }
end
end
end
context 'security' do
context 'when relative path is involved' do
- let(:temp_file_path) { File.join('uploads/-/system/temp', '..', 'another_subdir_of_temp') }
+ let(:temp_file_path) { File.join("uploads/-/system/user/#{user.id}", '..', 'another_subdir_of_temp') }
it 'does not trigger move if path is outside designated directory' do
- stub_file_mover('uploads/-/system/another_subdir_of_temp')
+ stub_file_mover("uploads/-/system/user/#{user.id}/another_subdir_of_temp")
expect(FileUtils).not_to receive(:move)
subject
diff --git a/spec/validators/color_validator_spec.rb b/spec/validators/color_validator_spec.rb
new file mode 100644
index 00000000000..e5a38ac9372
--- /dev/null
+++ b/spec/validators/color_validator_spec.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ColorValidator do
+ using RSpec::Parameterized::TableSyntax
+
+ subject do
+ Class.new do
+ include ActiveModel::Model
+ include ActiveModel::Validations
+ attr_accessor :color
+ validates :color, color: true
+ end.new
+ end
+
+ where(:color, :is_valid) do
+ '#000abc' | true
+ '#aaa' | true
+ '#BBB' | true
+ '#cCc' | true
+ '#ffff' | false
+ '#000111222' | false
+ 'invalid' | false
+ '000' | false
+ end
+
+ with_them do
+ it 'only accepts valid colors' do
+ subject.color = color
+
+ expect(subject.valid?).to eq(is_valid)
+ end
+ end
+
+ it 'fails fast for long invalid string' do
+ subject.color = '#' + ('0' * 50_000) + 'xxx'
+
+ expect do
+ Timeout.timeout(5.seconds) { subject.valid? }
+ end.not_to raise_error
+ end
+end