'.html_safe, code_close: ''.html_safe }
- %li= html_escape(_('When using the %{code_open}http://%{code_close} or %{code_open}https://%{code_close} protocols, please provide the exact URL to the repository. HTTP redirects will not be followed.')) % { code_open: ''.html_safe, code_close: ''.html_safe }
+ %li= html_escape(_('When using the %{code_open}http://%{code_close} or %{code_open}https://%{code_close} protocols, provide the exact URL to the repository. HTTP redirects will not be followed.')) % { code_open: ''.html_safe, code_close: ''.html_safe }
%li= html_escape(_('Include the username in the URL if required: %{code_open}https://username@gitlab.company.com/group/project.git%{code_close}.')) % { code_open: ''.html_safe, code_close: ''.html_safe }
%li
- minutes = Gitlab.config.gitlab_shell.git_timeout / 60
= _("The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination.") % { number_of_minutes: minutes }
%li= mirror_lfs_sync_message
%li
- = _('This user will be the author of all events in the activity feed that are the result of an update,
+ = _('In case of pull mirroring, your user will be the author of all events in the activity feed that are the result of an update,
like new branches being created or new commits being pushed to existing branches.')
diff --git a/app/views/projects/mirrors/_mirror_repos.html.haml b/app/views/projects/mirrors/_mirror_repos.html.haml
index 5b074ff8a28..98d35845b31 100644
--- a/app/views/projects/mirrors/_mirror_repos.html.haml
+++ b/app/views/projects/mirrors/_mirror_repos.html.haml
@@ -10,7 +10,7 @@
= expanded ? _('Collapse') : _('Expand')
%p
= _('Set up your project to automatically push and/or pull changes to/from another repository. Branches, tags, and commits will be synced automatically.')
- = link_to _('Read more'), help_page_path('user/project/repository/repository_mirroring.md'), target: '_blank'
+ = link_to _('How do I mirror repositories?'), help_page_path('user/project/repository/repository_mirroring'), target: '_blank', rel: 'noopener noreferrer'
.settings-content
- if mirror_settings_enabled
@@ -21,7 +21,7 @@
.form-group.has-feedback
= label_tag :url, _('Git repository URL'), class: 'label-light'
- = text_field_tag :url, nil, class: 'form-control js-mirror-url js-repo-url qa-mirror-repository-url-input', placeholder: _('Input your repository URL'), required: true, pattern: "(#{protocols}):\/\/.+", autocomplete: 'new-password'
+ = text_field_tag :url, nil, class: 'form-control js-mirror-url js-repo-url qa-mirror-repository-url-input', placeholder: _('Input the remote repository URL'), required: true, pattern: "(#{protocols}):\/\/.+", autocomplete: 'new-password'
= render 'projects/mirrors/instructions'
@@ -29,8 +29,10 @@
.form-check.gl-mb-3
= check_box_tag :only_protected_branches, '1', false, class: 'js-mirror-protected form-check-input'
- = label_tag :only_protected_branches, _('Only mirror protected branches'), class: 'form-check-label'
- = link_to sprite_icon('question-o'), help_page_path('user/project/protected_branches'), target: '_blank'
+ = label_tag :only_protected_branches, _('Mirror only protected branches'), class: 'form-check-label'
+ .form-text.text-muted
+ = _('If enabled, only protected branches will be mirrored.')
+ = link_to _('Learn more.'), help_page_path('user/project/repository/repository_mirroring', anchor: 'mirror-only-protected-branches'), target: '_blank', rel: 'noopener noreferrer'
.panel-footer
= f.submit _('Mirror repository'), class: 'gl-button btn btn-success js-mirror-submit qa-mirror-repository-button', name: :update_remote_mirror
diff --git a/app/views/projects/mirrors/_mirror_repos_push.html.haml b/app/views/projects/mirrors/_mirror_repos_push.html.haml
index 03839146f3b..04f44f4748e 100644
--- a/app/views/projects/mirrors/_mirror_repos_push.html.haml
+++ b/app/views/projects/mirrors/_mirror_repos_push.html.haml
@@ -10,4 +10,6 @@
.form-check.gl-mb-3
= check_box_tag :keep_divergent_refs, '1', false, class: 'js-mirror-keep-divergent-refs form-check-input'
= label_tag :keep_divergent_refs, _('Keep divergent refs'), class: 'form-check-label'
- = link_to sprite_icon('question-o'), help_page_path('user/project/repository/repository_mirroring', anchor: 'keep-divergent-refs'), target: '_blank'
+ .form-text.text-muted
+ = _('By default, if any ref (branch, tag, or commit) on the remote mirror has diverged from the local repository, the entire push will fail, and nothing will be updated. Choose this option to override this behavior. After the mirror is created, this can only be modified via the API.')
+ = link_to _('Learn more.'), help_page_path('user/project/repository/repository_mirroring', anchor: 'keep-divergent-refs'), target: '_blank', rel: 'noopener noreferrer'
diff --git a/changelogs/unreleased/297503-cablett-remove-index.yml b/changelogs/unreleased/297503-cablett-remove-index.yml
new file mode 100644
index 00000000000..33d52edeac1
--- /dev/null
+++ b/changelogs/unreleased/297503-cablett-remove-index.yml
@@ -0,0 +1,5 @@
+---
+title: Remove unneeded group label index
+merge_request: 51676
+author:
+type: other
diff --git a/changelogs/unreleased/georgekoltsov-fix-bulk-import-graphql-extractor.yml b/changelogs/unreleased/georgekoltsov-fix-bulk-import-graphql-extractor.yml
new file mode 100644
index 00000000000..1d5b10ff284
--- /dev/null
+++ b/changelogs/unreleased/georgekoltsov-fix-bulk-import-graphql-extractor.yml
@@ -0,0 +1,5 @@
+---
+title: Update GraphqlExtractor return value to be original hash
+merge_request: 51596
+author:
+type: fixed
diff --git a/changelogs/unreleased/id-mark-optional_code_owners_sections-as-default.yml b/changelogs/unreleased/id-mark-optional_code_owners_sections-as-default.yml
new file mode 100644
index 00000000000..9f436e991a4
--- /dev/null
+++ b/changelogs/unreleased/id-mark-optional_code_owners_sections-as-default.yml
@@ -0,0 +1,5 @@
+---
+title: Designate optional sections in the codeowners file
+merge_request: 51643
+author:
+type: added
diff --git a/changelogs/unreleased/jv-ci-refspec-sha.yml b/changelogs/unreleased/jv-ci-refspec-sha.yml
new file mode 100644
index 00000000000..c51eadb2624
--- /dev/null
+++ b/changelogs/unreleased/jv-ci-refspec-sha.yml
@@ -0,0 +1,5 @@
+---
+title: 'CI: use commit SHA in persistent refspec'
+merge_request: 51208
+author:
+type: performance
diff --git a/changelogs/unreleased/pipeline-error-message.yml b/changelogs/unreleased/pipeline-error-message.yml
new file mode 100644
index 00000000000..3999fbacf46
--- /dev/null
+++ b/changelogs/unreleased/pipeline-error-message.yml
@@ -0,0 +1,5 @@
+---
+title: Update pipeline alert text to be more readable
+merge_request: 49575
+author:
+type: other
diff --git a/changelogs/unreleased/update-toast-position-set-status.yml b/changelogs/unreleased/update-toast-position-set-status.yml
new file mode 100644
index 00000000000..c833b5e228f
--- /dev/null
+++ b/changelogs/unreleased/update-toast-position-set-status.yml
@@ -0,0 +1,5 @@
+---
+title: Update toast position on set status
+merge_request: 50886
+author:
+type: fixed
diff --git a/config/feature_flags/development/optional_code_owners_sections.yml b/config/feature_flags/development/optional_code_owners_sections.yml
index d97d5d8b701..a7933f42fc9 100644
--- a/config/feature_flags/development/optional_code_owners_sections.yml
+++ b/config/feature_flags/development/optional_code_owners_sections.yml
@@ -5,4 +5,4 @@ rollout_issue_url:
milestone: '13.8'
type: development
group: group::source code
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/ops/scalability_ci_fetch_sha.yml b/config/feature_flags/ops/scalability_ci_fetch_sha.yml
new file mode 100644
index 00000000000..e8133f16072
--- /dev/null
+++ b/config/feature_flags/ops/scalability_ci_fetch_sha.yml
@@ -0,0 +1,8 @@
+---
+name: scalability_ci_fetch_sha
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/51208
+rollout_issue_url: https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/746
+milestone: '13.8'
+type: ops
+group: team::Scalability
+default_enabled: false
diff --git a/config/initializers/carrierwave_patch.rb b/config/initializers/carrierwave_patch.rb
index a5102696251..c8c6f75949c 100644
--- a/config/initializers/carrierwave_patch.rb
+++ b/config/initializers/carrierwave_patch.rb
@@ -23,7 +23,9 @@ module CarrierWave
# Multithreaded uploads are essential for copying large amounts of data
# within the request timeout.
if ::Feature.enabled?(:s3_multithreaded_uploads, default_enabled: true) && fog_provider == 'AWS'
- file.concurrency = 10 # AWS SDK uses 10 threads by default
+ # AWS SDK uses 10 threads by default and a multipart chunk size of 10 MB
+ file.concurrency = 10
+ file.multipart_chunk_size = 10485760
file.copy(@uploader.fog_directory, new_path, copy_to_options)
else
# Some Fog providers may issue a GET request (https://github.com/fog/fog-google/issues/512)
diff --git a/db/migrate/20210114033715_remove_group_id_title_index.rb b/db/migrate/20210114033715_remove_group_id_title_index.rb
new file mode 100644
index 00000000000..8d63da3d400
--- /dev/null
+++ b/db/migrate/20210114033715_remove_group_id_title_index.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class RemoveGroupIdTitleIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_labels_on_group_id_and_title_with_null_project_id'
+ LABELS_TABLE = :labels
+
+ def up
+ remove_concurrent_index_by_name LABELS_TABLE, INDEX_NAME
+ end
+
+ def down
+ add_concurrent_index LABELS_TABLE, [:group_id, :title], where: 'project_id IS NULL', name: INDEX_NAME
+ end
+end
diff --git a/db/schema_migrations/20210114033715 b/db/schema_migrations/20210114033715
new file mode 100644
index 00000000000..6d25bd971e2
--- /dev/null
+++ b/db/schema_migrations/20210114033715
@@ -0,0 +1 @@
+69aae8d967fdb8af816a969fd818ed325b8d780b4faaa205c78a66c5d533ab2a
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index c3657e808df..3e1723463d0 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -22045,8 +22045,6 @@ CREATE UNIQUE INDEX index_labels_on_group_id_and_project_id_and_title ON labels
CREATE UNIQUE INDEX index_labels_on_group_id_and_title_unique ON labels USING btree (group_id, title) WHERE (project_id IS NULL);
-CREATE INDEX index_labels_on_group_id_and_title_with_null_project_id ON labels USING btree (group_id, title) WHERE (project_id IS NULL);
-
CREATE INDEX index_labels_on_project_id ON labels USING btree (project_id);
CREATE UNIQUE INDEX index_labels_on_project_id_and_title_unique ON labels USING btree (project_id, title) WHERE (group_id IS NULL);
diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md
index cfefaccf76e..7920a3bf7f3 100644
--- a/doc/ci/pipelines/index.md
+++ b/doc/ci/pipelines/index.md
@@ -89,9 +89,9 @@ This table lists the refspecs injected for each pipeline type:
| Pipeline type | Refspecs |
|--------------- |---------------------------------------- |
-| Pipeline for Branches | `+refs/pipelines/