summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/snippets/components/snippet_header.vue38
-rw-r--r--app/models/audit_event.rb16
-rw-r--r--app/services/audit_event_service.rb10
-rw-r--r--app/services/groups/deploy_tokens/create_service.rb2
-rw-r--r--app/services/projects/deploy_tokens/create_service.rb2
-rw-r--r--app/views/admin/application_settings/_repository_storage.html.haml6
-rw-r--r--changelogs/unreleased/34079-mirrored-url-visible-for-users-despite-no-access-to-repositories.yml5
-rw-r--r--changelogs/unreleased/create-token--http-response.yml5
-rw-r--r--changelogs/unreleased/dmishunov-new-buttons.yml5
-rw-r--r--changelogs/unreleased/fj-update-repository-shards-admin-copies.yml5
-rw-r--r--db/migrate/20200330121000_add_confidential_attribute_to_epics.rb17
-rw-r--r--db/structure.sql2
-rw-r--r--doc/administration/img/repository_storages_admin_ui.pngbin20897 -> 0 bytes
-rw-r--r--doc/administration/img/repository_storages_admin_ui_v12_10.pngbin0 -> 94975 bytes
-rw-r--r--doc/administration/repository_storage_paths.md14
-rw-r--r--doc/administration/troubleshooting/debug.md4
-rw-r--r--doc/api/markdown.md4
-rw-r--r--doc/development/i18n/externalization.md8
-rw-r--r--doc/development/i18n/proofreader.md4
-rw-r--r--doc/development/i18n/translation.md4
-rw-r--r--doc/development/lfs.md15
-rw-r--r--doc/development/testing_guide/ci.md11
-rw-r--r--doc/topics/git/numerous_undo_possibilities_in_git/index.md33
-rw-r--r--doc/topics/git/troubleshooting_git.md7
-rw-r--r--doc/user/project/repository/repository_mirroring.md4
-rw-r--r--locale/gitlab.pot27
-rw-r--r--spec/controllers/groups/settings/ci_cd_controller_spec.rb2
-rw-r--r--spec/controllers/projects/settings/ci_cd_controller_spec.rb2
-rw-r--r--spec/frontend/diffs/components/commit_item_spec.js4
-rw-r--r--spec/frontend/snippets/components/snippet_header_spec.js10
-rw-r--r--spec/lib/gitlab/import_export/safe_model_attributes.yml1
31 files changed, 160 insertions, 107 deletions
diff --git a/app/assets/javascripts/snippets/components/snippet_header.vue b/app/assets/javascripts/snippets/components/snippet_header.vue
index c280096b2bf..79b191cb25a 100644
--- a/app/assets/javascripts/snippets/components/snippet_header.vue
+++ b/app/assets/javascripts/snippets/components/snippet_header.vue
@@ -4,12 +4,12 @@ import {
GlAvatar,
GlIcon,
GlSprintf,
- GlDeprecatedButton,
GlModal,
GlAlert,
GlLoadingIcon,
GlDropdown,
GlDropdownItem,
+ GlNewButton,
} from '@gitlab/ui';
import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
@@ -22,13 +22,13 @@ export default {
GlAvatar,
GlIcon,
GlSprintf,
- GlDeprecatedButton,
GlModal,
GlAlert,
GlLoadingIcon,
GlDropdown,
GlDropdownItem,
TimeAgoTooltip,
+ GlNewButton,
},
apollo: {
canCreateSnippet: {
@@ -67,17 +67,14 @@ export default {
condition: this.snippet.userPermissions.updateSnippet,
text: __('Edit'),
href: this.editLink,
- click: undefined,
- variant: 'outline-info',
- cssClass: undefined,
},
{
condition: this.snippet.userPermissions.adminSnippet,
text: __('Delete'),
- href: undefined,
click: this.showDeleteModal,
- variant: 'outline-danger',
- cssClass: 'btn-inverted btn-danger ml-2',
+ variant: 'danger',
+ category: 'secondary',
+ cssClass: 'ml-2',
},
{
condition: this.canCreateSnippet,
@@ -85,9 +82,9 @@ export default {
href: this.snippet.project
? `${this.snippet.project.webUrl}/snippets/new`
: '/snippets/new',
- click: undefined,
- variant: 'outline-success',
- cssClass: 'btn-inverted btn-success ml-2',
+ variant: 'success',
+ category: 'secondary',
+ cssClass: 'ml-2',
},
];
},
@@ -187,18 +184,20 @@ export default {
</div>
<div class="detail-page-header-actions">
- <div class="d-none d-sm-block">
+ <div class="d-none d-sm-flex">
<template v-for="(action, index) in personalSnippetActions">
- <gl-deprecated-button
+ <gl-new-button
v-if="action.condition"
:key="index"
+ :disabled="action.disabled"
:variant="action.variant"
+ :category="action.category"
:class="action.cssClass"
- :href="action.href || undefined"
+ :href="action.href"
@click="action.click ? action.click() : undefined"
>
{{ action.text }}
- </gl-deprecated-button>
+ </gl-new-button>
</template>
</div>
<div class="d-block d-sm-none dropdown">
@@ -206,7 +205,7 @@ export default {
<gl-dropdown-item
v-for="(action, index) in personalSnippetActions"
:key="index"
- :href="action.href || undefined"
+ :href="action.href"
@click="action.click ? action.click() : undefined"
>{{ action.text }}</gl-dropdown-item
>
@@ -228,16 +227,17 @@ export default {
</gl-sprintf>
<template #modal-footer>
- <gl-deprecated-button @click="closeDeleteModal">{{ __('Cancel') }}</gl-deprecated-button>
- <gl-deprecated-button
+ <gl-new-button @click="closeDeleteModal">{{ __('Cancel') }}</gl-new-button>
+ <gl-new-button
variant="danger"
+ category="primary"
:disabled="isDeleting"
data-qa-selector="delete_snippet_button"
@click="deleteSnippet"
>
<gl-loading-icon v-if="isDeleting" inline />
{{ __('Delete snippet') }}
- </gl-deprecated-button>
+ </gl-new-button>
</template>
</gl-modal>
</div>
diff --git a/app/models/audit_event.rb b/app/models/audit_event.rb
index 03841917bbf..7ff0076c3e3 100644
--- a/app/models/audit_event.rb
+++ b/app/models/audit_event.rb
@@ -30,12 +30,26 @@ class AuditEvent < ApplicationRecord
end
def author_name
- self.user.name
+ lazy_author.name
end
def formatted_details
details.merge(details.slice(:from, :to).transform_values(&:to_s))
end
+
+ def lazy_author
+ BatchLoader.for(author_id).batch(default_value: default_author_value) do |author_ids, loader|
+ User.where(id: author_ids).find_each do |user|
+ loader.call(user.id, user)
+ end
+ end
+ end
+
+ private
+
+ def default_author_value
+ ::Gitlab::Audit::NullAuthor.for(author_id, details[:author_name])
+ end
end
AuditEvent.prepend_if_ee('EE::AuditEvent')
diff --git a/app/services/audit_event_service.rb b/app/services/audit_event_service.rb
index 42ed5f17d8d..d9e40c456aa 100644
--- a/app/services/audit_event_service.rb
+++ b/app/services/audit_event_service.rb
@@ -13,7 +13,7 @@ class AuditEventService
#
# @return [AuditEventService]
def initialize(author, entity, details = {})
- @author = author
+ @author = build_author(author)
@entity = entity
@details = details
end
@@ -49,6 +49,14 @@ class AuditEventService
private
+ def build_author(author)
+ if author.is_a?(User)
+ author
+ else
+ Gitlab::Audit::UnauthenticatedAuthor.new(name: author)
+ end
+ end
+
def base_payload
{
author_id: @author.id,
diff --git a/app/services/groups/deploy_tokens/create_service.rb b/app/services/groups/deploy_tokens/create_service.rb
index d747dabcd3c..81f761eb61d 100644
--- a/app/services/groups/deploy_tokens/create_service.rb
+++ b/app/services/groups/deploy_tokens/create_service.rb
@@ -9,7 +9,7 @@ module Groups
deploy_token = create_deploy_token_for(@group, params)
if deploy_token.persisted?
- success(deploy_token: deploy_token, http_status: :ok)
+ success(deploy_token: deploy_token, http_status: :created)
else
error(deploy_token.errors.full_messages.to_sentence, :bad_request)
end
diff --git a/app/services/projects/deploy_tokens/create_service.rb b/app/services/projects/deploy_tokens/create_service.rb
index e943b2489ac..2e71650b066 100644
--- a/app/services/projects/deploy_tokens/create_service.rb
+++ b/app/services/projects/deploy_tokens/create_service.rb
@@ -9,7 +9,7 @@ module Projects
deploy_token = create_deploy_token_for(@project, params)
if deploy_token.persisted?
- success(deploy_token: deploy_token, http_status: :ok)
+ success(deploy_token: deploy_token, http_status: :created)
else
error(deploy_token.errors.full_messages.to_sentence, :bad_request)
end
diff --git a/app/views/admin/application_settings/_repository_storage.html.haml b/app/views/admin/application_settings/_repository_storage.html.haml
index b97e9a194f3..c3ae39ddd48 100644
--- a/app/views/admin/application_settings/_repository_storage.html.haml
+++ b/app/views/admin/application_settings/_repository_storage.html.haml
@@ -9,13 +9,13 @@
= f.check_box :hashed_storage_enabled, class: 'form-check-input qa-hashed-storage-checkbox'
= f.label :hashed_storage_enabled, _("Use hashed storage"), class: 'label-bold form-check-label'
.form-text.text-muted
- = _("Use hashed storage paths for newly created and renamed projects. Enable immutable, hash-based paths and repository names to store repositories on disk. This prevents repositories from having to be moved or renamed when the Project URL changes and may improve disk I/O performance.")
+ = _("Use hashed storage paths for newly created and renamed repositories. Enable immutable, hash-based paths and repository names to store repositories on disk. This prevents repositories from having to be moved or renamed when the Repository URL changes and may improve disk I/O performance.")
.sub-section
- %h4= _("Storage nodes for new projects")
+ %h4= _("Storage nodes for new repositories")
.form-group
.form-text
%p.text-secondary
- = _('Select the configured storaged available for new projects to be placed on.')
+ = _('Select the configured storage available for new repositories to be placed on.')
= link_to icon('question-circle'), help_page_path('administration/repository_storage_paths')
.form-check
= f.collection_check_boxes :repository_storages, Gitlab.config.repositories.storages, :first, :first, include_hidden: false do |b|
diff --git a/changelogs/unreleased/34079-mirrored-url-visible-for-users-despite-no-access-to-repositories.yml b/changelogs/unreleased/34079-mirrored-url-visible-for-users-despite-no-access-to-repositories.yml
new file mode 100644
index 00000000000..90e28cb5dac
--- /dev/null
+++ b/changelogs/unreleased/34079-mirrored-url-visible-for-users-despite-no-access-to-repositories.yml
@@ -0,0 +1,5 @@
+---
+title: Only display mirrored URL to users who can manage Repository settings
+merge_request: 27166
+author:
+type: changed
diff --git a/changelogs/unreleased/create-token--http-response.yml b/changelogs/unreleased/create-token--http-response.yml
new file mode 100644
index 00000000000..11f24452492
--- /dev/null
+++ b/changelogs/unreleased/create-token--http-response.yml
@@ -0,0 +1,5 @@
+---
+title: Token creation uses HTTP status CREATED
+merge_request: 28587
+author:
+type: fixed
diff --git a/changelogs/unreleased/dmishunov-new-buttons.yml b/changelogs/unreleased/dmishunov-new-buttons.yml
new file mode 100644
index 00000000000..a86893a51c0
--- /dev/null
+++ b/changelogs/unreleased/dmishunov-new-buttons.yml
@@ -0,0 +1,5 @@
+---
+title: Replaced old-style buttons with the new ones on Snippet view
+merge_request: 28614
+author:
+type: other
diff --git a/changelogs/unreleased/fj-update-repository-shards-admin-copies.yml b/changelogs/unreleased/fj-update-repository-shards-admin-copies.yml
new file mode 100644
index 00000000000..133c6d03e9a
--- /dev/null
+++ b/changelogs/unreleased/fj-update-repository-shards-admin-copies.yml
@@ -0,0 +1,5 @@
+---
+title: Update copies in Admin Panel > Repository Storage section
+merge_request: 27986
+author:
+type: changed
diff --git a/db/migrate/20200330121000_add_confidential_attribute_to_epics.rb b/db/migrate/20200330121000_add_confidential_attribute_to_epics.rb
new file mode 100644
index 00000000000..01728436b93
--- /dev/null
+++ b/db/migrate/20200330121000_add_confidential_attribute_to_epics.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddConfidentialAttributeToEpics < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default(:epics, :confidential, :boolean, default: false)
+ end
+
+ def down
+ remove_column(:epics, :confidential)
+ end
+end
diff --git a/db/structure.sql b/db/structure.sql
index d9062b0f3e1..94d98c68f48 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -2271,6 +2271,7 @@ CREATE TABLE public.epics (
state_id smallint DEFAULT 1 NOT NULL,
start_date_sourcing_epic_id integer,
due_date_sourcing_epic_id integer,
+ confidential boolean DEFAULT false NOT NULL,
external_key character varying(255)
);
@@ -12925,6 +12926,7 @@ COPY "schema_migrations" (version) FROM STDIN;
20200326144443
20200326145443
20200330074719
+20200330121000
20200330132913
20200331220930
\.
diff --git a/doc/administration/img/repository_storages_admin_ui.png b/doc/administration/img/repository_storages_admin_ui.png
deleted file mode 100644
index 51b2f5f8c15..00000000000
--- a/doc/administration/img/repository_storages_admin_ui.png
+++ /dev/null
Binary files differ
diff --git a/doc/administration/img/repository_storages_admin_ui_v12_10.png b/doc/administration/img/repository_storages_admin_ui_v12_10.png
new file mode 100644
index 00000000000..b66e2c598bc
--- /dev/null
+++ b/doc/administration/img/repository_storages_admin_ui_v12_10.png
Binary files differ
diff --git a/doc/administration/repository_storage_paths.md b/doc/administration/repository_storage_paths.md
index e308242b1f6..857fb0b6a90 100644
--- a/doc/administration/repository_storage_paths.md
+++ b/doc/administration/repository_storage_paths.md
@@ -104,16 +104,16 @@ working, you can remove the `repos_path` line.
Note that Omnibus stores the repositories in a `repositories` subdirectory
of the `git-data` directory.
-## Choose where new project repositories will be stored
+## Choose where new repositories will be stored
-Once you set the multiple storage paths, you can choose where new projects will
-be stored under **Admin Area > Settings > Repository > Repository storage > Storage
-nodes for new projects**.
+Once you set the multiple storage paths, you can choose where new repositories
+will be stored under **Admin Area > Settings > Repository >
+Repository storage > Storage nodes for new repositories**.
-![Choose repository storage path in Admin Area](img/repository_storages_admin_ui.png)
+![Choose repository storage path in Admin Area](img/repository_storages_admin_ui_v12_10.png)
-Beginning with GitLab 8.13.4, multiple paths can be chosen. New projects will be
-randomly placed on one of the selected paths.
+Beginning with GitLab 8.13.4, multiple paths can be chosen. New repositories
+will be randomly placed on one of the selected paths.
[ce-4578]: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/4578
[restart-gitlab]: restart_gitlab.md#installations-from-source
diff --git a/doc/administration/troubleshooting/debug.md b/doc/administration/troubleshooting/debug.md
index 78aa10489ce..6a22b22a5be 100644
--- a/doc/administration/troubleshooting/debug.md
+++ b/doc/administration/troubleshooting/debug.md
@@ -156,9 +156,7 @@ unicorn['worker_timeout'] = 300
For source installations, edit `config/unicorn.rb`.
-[Reconfigure] GitLab for the changes to take effect.
-
-[Reconfigure]: ../restart_gitlab.md#omnibus-gitlab-reconfigure
+[Reconfigure](../restart_gitlab.md#omnibus-gitlab-reconfigure) GitLab for the changes to take effect.
#### Troubleshooting without affecting other users
diff --git a/doc/api/markdown.md b/doc/api/markdown.md
index 3b4b6323022..45f105b4e2a 100644
--- a/doc/api/markdown.md
+++ b/doc/api/markdown.md
@@ -1,6 +1,6 @@
# Markdown API
-> [Introduced][ce-18926] in GitLab 11.0.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/18926) in GitLab 11.0.
Available only in APIv4.
@@ -25,5 +25,3 @@ Response example:
```json
{ "html": "<p dir=\"auto\">Hello world! <gl-emoji title=\"party popper\" data-name=\"tada\" data-unicode-version=\"6.0\">🎉</gl-emoji></p>" }
```
-
-[ce-18926]: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/18926
diff --git a/doc/development/i18n/externalization.md b/doc/development/i18n/externalization.md
index 5c6e31d0a37..a550d977916 100644
--- a/doc/development/i18n/externalization.md
+++ b/doc/development/i18n/externalization.md
@@ -292,9 +292,7 @@ const dateFormat = createDateTimeFormat({ year: 'numeric', month: 'long', day: '
console.log(dateFormat.format(new Date('2063-04-05'))) // April 5, 2063
```
-This makes use of [`Intl.DateTimeFormat`].
-
-[`Intl.DateTimeFormat`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
+This makes use of [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat).
- In Ruby/HAML, we have two ways of adding format to dates and times:
@@ -404,9 +402,7 @@ This also applies when using links in between translated sentences, otherwise th
The reasoning behind this is that in some languages words change depending on context. For example in Japanese は is added to the subject of a sentence and を to the object. This is impossible to translate correctly if we extract individual words from the sentence.
When in doubt, try to follow the best practices described in this [Mozilla
-Developer documentation][mdn].
-
-[mdn]: https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_content_best_practices#Splitting
+Developer documentation](https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_content_best_practices#Splitting).
##### Vue components interpolation
diff --git a/doc/development/i18n/proofreader.md b/doc/development/i18n/proofreader.md
index 5535011d8c1..0e631a41de8 100644
--- a/doc/development/i18n/proofreader.md
+++ b/doc/development/i18n/proofreader.md
@@ -121,7 +121,7 @@ are very appreciative of the work done by translators and proofreaders!
1. Request proofreader permissions by opening a merge request to add yourself
to the list of proofreaders.
- Open the [proofreader.md source file][proofreader-src] and click **Edit**.
+ Open the [proofreader.md source file](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/i18n/proofreader.md) and click **Edit**.
Add your language in alphabetical order, and add yourself to the list
including:
@@ -138,5 +138,3 @@ are very appreciative of the work done by translators and proofreaders!
the language or current proofreaders.
- When a request is made for the first proofreader for a language and there are no [GitLab team members](https://about.gitlab.com/company/team/)
or [Core team members](https://about.gitlab.com/community/core-team/) who speak the language, we will request links to previous translation work in other communities or projects.
-
-[proofreader-src]: https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/i18n/proofreader.md
diff --git a/doc/development/i18n/translation.md b/doc/development/i18n/translation.md
index 50a417e9996..683dae6ce3d 100644
--- a/doc/development/i18n/translation.md
+++ b/doc/development/i18n/translation.md
@@ -69,7 +69,7 @@ determining a suitable level of formality.
### Inclusive language
-[Diversity] is one of GitLab's values.
+[Diversity](https://about.gitlab.com/handbook/values/#diversity) is one of GitLab's values.
We ask you to avoid translations which exclude people based on their gender or
ethnicity.
In languages which distinguish between a male and female form, use both or
@@ -78,8 +78,6 @@ choose a neutral formulation.
For example in German, the word "user" can be translated into "Benutzer" (male) or "Benutzerin" (female).
Therefore "create a new user" would translate into "Benutzer(in) anlegen".
-[Diversity]: https://about.gitlab.com/handbook/values/#diversity
-
### Updating the glossary
To propose additions to the glossary please
diff --git a/doc/development/lfs.md b/doc/development/lfs.md
index 63271531960..e64bc0f7d3a 100644
--- a/doc/development/lfs.md
+++ b/doc/development/lfs.md
@@ -2,10 +2,11 @@
## Deep Dive
-In April 2019, Francisco Javier López hosted a [Deep Dive] on GitLab's [Git LFS] implementation to share his domain specific knowledge with anyone who may work in this part of the code base in the future. You can find the [recording on YouTube], and the slides on [Google Slides] and in [PDF]. Everything covered in this deep dive was accurate as of GitLab 11.10, and while specific details may have changed since then, it should still serve as a good introduction.
-
-[Deep Dive]: https://gitlab.com/gitlab-org/create-stage/issues/1
-[Git LFS]: ../topics/git/lfs/index.md
-[recording on YouTube]: https://www.youtube.com/watch?v=Yyxwcksr0Qc
-[Google Slides]: https://docs.google.com/presentation/d/1E-aw6-z0rYd0346YhIWE7E9A65zISL9iIMAOq2zaw9E/edit
-[PDF]: https://gitlab.com/gitlab-org/create-stage/uploads/07a89257a140db067bdfb484aecd35e1/Git_LFS_Deep_Dive__Create_.pdf
+In April 2019, Francisco Javier López hosted a [Deep Dive](https://gitlab.com/gitlab-org/create-stage/issues/1)
+on GitLab's [Git LFS](../topics/git/lfs/index.md) implementation to share his domain
+specific knowledge with anyone who may work in this part of the code base in the future.
+You can find the [recording on YouTube](https://www.youtube.com/watch?v=Yyxwcksr0Qc),
+and the slides on [Google Slides](https://docs.google.com/presentation/d/1E-aw6-z0rYd0346YhIWE7E9A65zISL9iIMAOq2zaw9E/edit)
+and in [PDF](https://gitlab.com/gitlab-org/create-stage/uploads/07a89257a140db067bdfb484aecd35e1/Git_LFS_Deep_Dive__Create_.pdf).
+Everything covered in this deep dive was accurate as of GitLab 11.10, and while specific
+details may have changed since then, it should still serve as a good introduction.
diff --git a/doc/development/testing_guide/ci.md b/doc/development/testing_guide/ci.md
index 5bdd0a69d7f..6917639454c 100644
--- a/doc/development/testing_guide/ci.md
+++ b/doc/development/testing_guide/ci.md
@@ -25,23 +25,18 @@ After that, the next pipeline will use the up-to-date `knapsack/report-master.js
## Monitoring
-The GitLab test suite is [monitored] for the `master` branch, and any branch
+The GitLab test suite is [monitored](../performance.md#rspec-profiling) for the `master` branch, and any branch
that includes `rspec-profile` in their name.
-A [public dashboard] is available for everyone to see. Feel free to look at the
+A [public dashboard](https://redash.gitlab.com/public/dashboards/l1WhHXaxrCWM5Ai9D7YDqHKehq6OU3bx5gssaiWe?org_slug=default) is available for everyone to see. Feel free to look at the
slowest test files and try to improve them.
-[monitored]: ../performance.md#rspec-profiling
-[public dashboard]: https://redash.gitlab.com/public/dashboards/l1WhHXaxrCWM5Ai9D7YDqHKehq6OU3bx5gssaiWe?org_slug=default
-
## CI setup
- Rails logging to `log/test.log` is disabled by default in CI [for
- performance reasons][logging]. To override this setting, provide the
+ performance reasons](https://jtway.co/speed-up-your-rails-test-suite-by-6-in-1-line-13fedb869ec4). To override this setting, provide the
`RAILS_ENABLE_TEST_LOG` environment variable.
-[logging]: https://jtway.co/speed-up-your-rails-test-suite-by-6-in-1-line-13fedb869ec4
-
---
[Return to Testing documentation](index.md)
diff --git a/doc/topics/git/numerous_undo_possibilities_in_git/index.md b/doc/topics/git/numerous_undo_possibilities_in_git/index.md
index 3b93c978931..9c40041414c 100644
--- a/doc/topics/git/numerous_undo_possibilities_in_git/index.md
+++ b/doc/topics/git/numerous_undo_possibilities_in_git/index.md
@@ -20,7 +20,7 @@ please refer to the [Git book](https://git-scm.com/book/en/v2).
We will explain a few different techniques to undo your changes based on the stage
of the change in your current development. Also, keep in mind that [nothing in
-Git is really deleted][git-autoclean-ref].
+Git is really deleted](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery).
This means that until Git automatically cleans detached commits (which cannot be
accessed by branch or tag) it will be possible to view them with `git reflog` command
@@ -28,7 +28,7 @@ and access them with direct commit-id. Read more about _[redoing the undo](#redo
## Introduction
-This guide is organized depending on the [stage of development][git-basics]
+This guide is organized depending on the [stage of development](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)
where you want to undo your changes from and if they were shared with other developers
or not. Because Git is tracking changes a created or edited file is in the unstaged state
(if created it is untracked by Git). After you add it to a repository (`git add`) you put
@@ -52,16 +52,16 @@ Here's what we'll cover in this tutorial:
### Branching strategy
-[Git][git-official] is a de-centralized version control system, which means that beside regular
+[Git](https://git-scm.com/) is a de-centralized version control system, which means that beside regular
versioning of the whole repository, it has possibilities to exchange changes
with other repositories.
To avoid chaos with
-[multiple sources of truth][git-distributed], various
+[multiple sources of truth](https://git-scm.com/about/distributed), various
development workflows have to be followed, and it depends on your internal
workflow how certain changes or commits can be undone or changed.
-[GitLab Flow][gitlab-flow] provides a good
+[GitLab Flow](https://about.gitlab.com/blog/2014/09/29/gitlab-flow/) provides a good
balance between developers clashing with each other while
developing the same feature and cooperating seamlessly, but it does not enable
joined development of the same feature by multiple developers by default.
@@ -71,7 +71,7 @@ with every synchronization is unavoidable, but a proper or chosen Git Workflow w
prevent that anything is lost or out of sync when feature is complete.
You can also
-read through this blog post on [Git Tips & Tricks][gitlab-git-tips-n-tricks]
+read through this blog post on [Git Tips & Tricks](https://about.gitlab.com/blog/2016/12/08/git-tips-and-tricks/)
to learn how to easily **do** things in Git.
## Undo local changes
@@ -234,7 +234,7 @@ git bisect A..E
```
Bisect will provide us with commit-id of the middle commit to test, and then guide us
-through simple bisection process. You can read more about it [in official Git Tools][git-debug]
+through simple bisection process. You can read more about it [in official Git Tools](https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git)
In our example we will end up with commit `B`, that introduced bug/error. We have
4 options on how to remove it (or part of it) from our repository.
@@ -333,7 +333,7 @@ Sometimes you realize that the changes you undid were useful and you want them
back. Well because of first paragraph you are in luck. Command `git reflog`
enables you to *recall* detached local commits by referencing or applying them
via commit-id. Although, do not expect to see really old commits in reflog, because
-Git regularly [cleans the commits which are *unreachable* by branches or tags][git-autoclean-ref].
+Git regularly [cleans the commits which are *unreachable* by branches or tags](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery).
To view repository history and to track older commits you can use below command:
@@ -403,7 +403,7 @@ the cleanup of detached commits (happens automatically).
Modified history breaks the development chain of other developers, as changed
history does not have matching commits'ids. For that reason it should not be
used on any public branch or on branch that *might* be used by other developers.
-When contributing to big open source repositories (for example, [GitLab][gitlab]
+When contributing to big open source repositories (for example, [GitLab](https://gitlab.com/gitlab-org/gitlab/blob/master/CONTRIBUTING.md#contribution-acceptance-criteria)
itself), it is acceptable to *squash* commits into a single one, to present a
nicer history of your contribution.
@@ -476,7 +476,7 @@ Git also enables you to delete sensitive information from your past commits and
it does modify history in the progress. That is why we have included it in this
section and not as a standalone topic. To do so, you should run the
`git filter-branch`, which enables you to rewrite history with
-[certain filters][git-filters-manual].
+[certain filters](https://git-scm.com/docs/git-filter-branch#_options).
This command uses rebase to modify history and if you want to remove certain
file from history altogether use:
@@ -487,7 +487,7 @@ git filter-branch --tree-filter 'rm filename' HEAD
Since `git filter-branch` command might be slow on big repositories, there are
tools that can use some of Git specifics to enable faster execution of common
tasks (which is exactly what removing sensitive information file is about).
-An alternative is the open source community-maintained tool [BFG][bfg-repo-cleaner].
+An alternative is the open source community-maintained tool [BFG](https://rtyley.github.io/bfg-repo-cleaner/).
Keep in mind that these tools are faster because they do not provide the same
feature set as `git filter-branch` does, but focus on specific use cases.
@@ -512,14 +512,3 @@ If you have none to add when creating a doc, leave this section in place
but commented out to help encourage others to add to it in the future. -->
<!-- Identifiers, in alphabetical order -->
-
-[bfg-repo-cleaner]: https://rtyley.github.io/bfg-repo-cleaner/
-[git-autoclean-ref]: https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery
-[git-basics]: https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository
-[git-debug]: https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git
-[git-distributed]: https://git-scm.com/about/distributed
-[git-filters-manual]: https://git-scm.com/docs/git-filter-branch#_options
-[git-official]: https://git-scm.com/
-[gitlab]: https://gitlab.com/gitlab-org/gitlab/blob/master/CONTRIBUTING.md#contribution-acceptance-criteria
-[gitlab-flow]: https://about.gitlab.com/blog/2014/09/29/gitlab-flow/
-[gitlab-git-tips-n-tricks]: https://about.gitlab.com/blog/2016/12/08/git-tips-and-tricks/
diff --git a/doc/topics/git/troubleshooting_git.md b/doc/topics/git/troubleshooting_git.md
index 8270fad7086..f8d812d37e6 100644
--- a/doc/topics/git/troubleshooting_git.md
+++ b/doc/topics/git/troubleshooting_git.md
@@ -42,7 +42,7 @@ set to 50MB. The default is 1MB.
**If pushing over SSH**, first check your SSH configuration as 'Broken pipe'
errors can sometimes be caused by underlying issues with SSH (such as
authentication). Make sure that SSH is correctly configured by following the
-instructions in the [SSH troubleshooting] docs.
+instructions in the [SSH troubleshooting](../../ssh/README.md#troubleshooting) docs.
There's another option where you can prevent session timeouts by configuring
SSH 'keep alive' either on the client or on the server (if you are a GitLab
@@ -86,7 +86,7 @@ git push
### Upgrade your Git client
In case you're running an older version of Git (< 2.9), consider upgrading
-to >= 2.9 (see [Broken pipe when pushing to Git repository][Broken-Pipe]).
+to >= 2.9 (see [Broken pipe when pushing to Git repository](https://stackoverflow.com/questions/19120120/broken-pipe-when-pushing-to-git-repository/36971469#36971469)).
## `ssh_exchange_identification` error
@@ -168,6 +168,3 @@ The default value of `http.postBuffer`, 1 MiB, is applied if the setting is not
```shell
git config http.postBuffer 524288000
```
-
-[SSH troubleshooting]: ../../ssh/README.md#troubleshooting "SSH Troubleshooting"
-[Broken-Pipe]: https://stackoverflow.com/questions/19120120/broken-pipe-when-pushing-to-git-repository/36971469#36971469 "StackOverflow: 'Broken pipe when pushing to Git repository'"
diff --git a/doc/user/project/repository/repository_mirroring.md b/doc/user/project/repository/repository_mirroring.md
index 7c28e956e12..8064eacf404 100644
--- a/doc/user/project/repository/repository_mirroring.md
+++ b/doc/user/project/repository/repository_mirroring.md
@@ -28,6 +28,10 @@ immediate update, unless:
- The mirror is already being updated.
- 5 minutes haven't elapsed since its last update.
+For security reasons, from [GitLab 12.10 onwards](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27166),
+the URL to the original repository is only displayed to users with
+Maintainer or Owner permissions to the mirrored project.
+
## Use cases
The following are some possible use cases for repository mirroring:
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 3de227fba99..278aca1bf86 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -3353,6 +3353,12 @@ msgstr ""
msgid "Cannot create the abuse report. This user has been blocked."
msgstr ""
+msgid "Cannot make epic confidential if it contains not-confidential issues"
+msgstr ""
+
+msgid "Cannot make epic confidential if it contains not-confidential sub-epics"
+msgstr ""
+
msgid "Cannot merge"
msgstr ""
@@ -3371,6 +3377,9 @@ msgstr ""
msgid "Cannot refer to a group milestone by an internal id!"
msgstr ""
+msgid "Cannot set confidential epic for not-confidential issue"
+msgstr ""
+
msgid "Cannot show preview. For previews on sketch files, they must have the file format introduced by Sketch version 43 and above."
msgstr ""
@@ -5760,6 +5769,9 @@ msgstr ""
msgid "Could not save prometheus manual configuration"
msgstr ""
+msgid "Could not update the LDAP settings"
+msgstr ""
+
msgid "Could not upload your designs as one or more files uploaded are not supported."
msgstr ""
@@ -11585,6 +11597,9 @@ msgstr ""
msgid "LDAP settings"
msgstr ""
+msgid "LDAP settings updated"
+msgstr ""
+
msgid "LDAP sync in progress. This could take a few minutes. Refresh the page to see the changes."
msgstr ""
@@ -13598,6 +13613,9 @@ msgstr ""
msgid "Not started"
msgstr ""
+msgid "Not-confidential epic cannot be assigned to a confidential parent epic"
+msgstr ""
+
msgid "Note"
msgstr ""
@@ -17646,9 +17664,6 @@ msgstr ""
msgid "Security Dashboard"
msgstr ""
-msgid "Security Dashboard|Error fetching the dashboard data. Please check your network connection and try again."
-msgstr ""
-
msgid "Security Dashboard|Error fetching the vulnerability counts. Please check your network connection and try again."
msgstr ""
@@ -17940,7 +17955,7 @@ msgstr ""
msgid "Select the branch you want to set as the default for this project. All merge requests and commits will automatically be made against this branch unless you specify a different one."
msgstr ""
-msgid "Select the configured storaged available for new projects to be placed on."
+msgid "Select the configured storage available for new repositories to be placed on."
msgstr ""
msgid "Select the custom project template source group."
@@ -19226,7 +19241,7 @@ msgstr ""
msgid "Storage"
msgstr ""
-msgid "Storage nodes for new projects"
+msgid "Storage nodes for new repositories"
msgstr ""
msgid "Storage:"
@@ -21969,7 +21984,7 @@ msgstr ""
msgid "Use hashed storage"
msgstr ""
-msgid "Use hashed storage paths for newly created and renamed projects. Enable immutable, hash-based paths and repository names to store repositories on disk. This prevents repositories from having to be moved or renamed when the Project URL changes and may improve disk I/O performance."
+msgid "Use hashed storage paths for newly created and renamed repositories. Enable immutable, hash-based paths and repository names to store repositories on disk. This prevents repositories from having to be moved or renamed when the Repository URL changes and may improve disk I/O performance."
msgstr ""
msgid "Use one line per URI"
diff --git a/spec/controllers/groups/settings/ci_cd_controller_spec.rb b/spec/controllers/groups/settings/ci_cd_controller_spec.rb
index 8ba7a96e1ee..b5154f4f877 100644
--- a/spec/controllers/groups/settings/ci_cd_controller_spec.rb
+++ b/spec/controllers/groups/settings/ci_cd_controller_spec.rb
@@ -267,7 +267,7 @@ describe Groups::Settings::CiCdController do
it 'creates the deploy token' do
subject
- expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/deploy_token')
expect(json_response).to match(expected_response)
end
diff --git a/spec/controllers/projects/settings/ci_cd_controller_spec.rb b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
index 87b40a02567..8f516de3322 100644
--- a/spec/controllers/projects/settings/ci_cd_controller_spec.rb
+++ b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
@@ -300,7 +300,7 @@ describe Projects::Settings::CiCdController do
it 'creates the deploy token' do
subject
- expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/deploy_token')
expect(json_response).to match(expected_response)
end
diff --git a/spec/frontend/diffs/components/commit_item_spec.js b/spec/frontend/diffs/components/commit_item_spec.js
index 6bb3a0dcf21..517d050eb54 100644
--- a/spec/frontend/diffs/components/commit_item_spec.js
+++ b/spec/frontend/diffs/components/commit_item_spec.js
@@ -59,7 +59,9 @@ describe('diffs/components/commit_item', () => {
expect(titleElement.text()).toBe(commit.title_html);
});
- it('renders commit description', () => {
+ // https://gitlab.com/gitlab-org/gitlab/-/issues/209776
+ // eslint-disable-next-line jest/no-disabled-tests
+ it.skip('renders commit description', () => {
const descElement = getDescElement();
const descExpandElement = getDescExpandElement();
diff --git a/spec/frontend/snippets/components/snippet_header_spec.js b/spec/frontend/snippets/components/snippet_header_spec.js
index 878baab9cac..1b67c08e5a4 100644
--- a/spec/frontend/snippets/components/snippet_header_spec.js
+++ b/spec/frontend/snippets/components/snippet_header_spec.js
@@ -1,7 +1,7 @@
import SnippetHeader from '~/snippets/components/snippet_header.vue';
import DeleteSnippetMutation from '~/snippets/mutations/deleteSnippet.mutation.graphql';
import { ApolloMutation } from 'vue-apollo';
-import { GlDeprecatedButton, GlModal } from '@gitlab/ui';
+import { GlNewButton, GlModal } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
describe('Snippet header component', () => {
@@ -89,7 +89,7 @@ describe('Snippet header component', () => {
updateSnippet: false,
},
});
- expect(wrapper.findAll(GlDeprecatedButton).length).toEqual(0);
+ expect(wrapper.findAll(GlNewButton).length).toEqual(0);
createComponent({
permissions: {
@@ -97,7 +97,7 @@ describe('Snippet header component', () => {
updateSnippet: false,
},
});
- expect(wrapper.findAll(GlDeprecatedButton).length).toEqual(1);
+ expect(wrapper.findAll(GlNewButton).length).toEqual(1);
createComponent({
permissions: {
@@ -105,7 +105,7 @@ describe('Snippet header component', () => {
updateSnippet: true,
},
});
- expect(wrapper.findAll(GlDeprecatedButton).length).toEqual(2);
+ expect(wrapper.findAll(GlNewButton).length).toEqual(2);
createComponent({
permissions: {
@@ -117,7 +117,7 @@ describe('Snippet header component', () => {
canCreateSnippet: true,
});
return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.findAll(GlDeprecatedButton).length).toEqual(3);
+ expect(wrapper.findAll(GlNewButton).length).toEqual(3);
});
});
diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml
index 7190d84573e..653b011084e 100644
--- a/spec/lib/gitlab/import_export/safe_model_attributes.yml
+++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml
@@ -845,6 +845,7 @@ Epic:
- due_date_sourcing_epic_id
- health_status
- external_key
+ - confidential
EpicIssue:
- id
- relative_position