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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-03 18:07:39 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-03 18:07:39 +0300
commit3cda3d43aef1e92e2eedf7383122c6db9c61149f (patch)
tree1b4dd068a449d050afafa403de54a00a63e9bfc4
parent83916cf0a2f9254455a08a723961db34f0840df4 (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab/ci/notify.gitlab-ci.yml5
-rw-r--r--.rubocop.yml4
-rw-r--r--.rubocop_todo/layout/argument_alignment.yml3631
-rw-r--r--.rubocop_todo/layout/hash_alignment.yml6
-rw-r--r--.rubocop_todo/rails/helper_instance_variable.yml1
-rw-r--r--app/assets/javascripts/ide/init_gitlab_web_ide.js8
-rw-r--r--app/assets/javascripts/pages/admin/application_settings/account_and_limits.js2
-rw-r--r--app/assets/javascripts/token_access/components/opt_in_jwt.vue24
-rw-r--r--app/assets/javascripts/token_access/constants.js14
-rw-r--r--app/assets/javascripts/work_items/components/item_title.vue2
-rw-r--r--app/assets/javascripts/work_items/components/work_item_created_updated.vue115
-rw-r--r--app/assets/javascripts/work_items/components/work_item_detail.vue9
-rw-r--r--app/assets/javascripts/work_items/graphql/work_item.fragment.graphql5
-rw-r--r--app/controllers/projects/commits_controller.rb2
-rw-r--r--app/controllers/projects/network_controller.rb6
-rw-r--r--app/controllers/projects/refs_controller.rb18
-rw-r--r--app/graphql/resolvers/work_items_resolver.rb2
-rw-r--r--app/helpers/ide_helper.rb33
-rw-r--r--app/models/work_item.rb25
-rw-r--r--app/models/work_items/widgets/hierarchy.rb2
-rw-r--r--app/views/ide/_show.html.haml2
-rw-r--r--app/views/projects/graphs/show.html.haml8
-rw-r--r--app/views/projects/network/show.html.haml2
-rw-r--r--config/feature_flags/development/use_ref_type_parameter.yml9
-rw-r--r--config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml10
-rw-r--r--data/deprecations/15-9-deprecate-option-to-remove-project-immediately.yml13
-rw-r--r--doc/administration/geo/replication/troubleshooting.md28
-rw-r--r--doc/administration/geo/secondary_proxy/index.md3
-rw-r--r--doc/administration/reference_architectures/10k_users.md26
-rw-r--r--doc/administration/reference_architectures/25k_users.md27
-rw-r--r--doc/administration/reference_architectures/3k_users.md26
-rw-r--r--doc/administration/reference_architectures/50k_users.md26
-rw-r--r--doc/administration/reference_architectures/5k_users.md22
-rw-r--r--doc/api/remote_mirrors.md5
-rw-r--r--doc/update/deprecations.md18
-rw-r--r--lib/backup/database.rb22
-rw-r--r--lib/extracts_ref.rb2
-rw-r--r--lib/gitlab/database/lock_writes_manager.rb12
-rw-r--r--lib/gitlab/database/tables_locker.rb65
-rw-r--r--lib/gitlab/database/transaction_timeout_settings.rb21
-rw-r--r--lib/gitlab/redis/wrapper.rb17
-rw-r--r--lib/gitlab/usage_data.rb3
-rw-r--r--lib/gitlab/usage_data_counters/editor_unique_counter.rb5
-rw-r--r--lib/sidebars/projects/menus/repository_menu.rb18
-rw-r--r--lib/tasks/gitlab/db/lock_writes.rake47
-rw-r--r--locale/gitlab.pot11
-rw-r--r--spec/controllers/projects/refs_controller_spec.rb79
-rw-r--r--spec/frontend/ide/init_gitlab_web_ide_spec.js11
-rw-r--r--spec/frontend/token_access/opt_in_jwt_spec.js56
-rw-r--r--spec/frontend/work_items/components/work_item_created_updated_spec.js104
-rw-r--r--spec/frontend/work_items/components/work_item_detail_spec.js16
-rw-r--r--spec/frontend/work_items/mock_data.js32
-rw-r--r--spec/helpers/ide_helper_spec.rb39
-rw-r--r--spec/lib/backup/database_spec.rb39
-rw-r--r--spec/lib/extracts_ref_spec.rb12
-rw-r--r--spec/lib/gitlab/database/tables_locker_spec.rb214
-rw-r--r--spec/lib/gitlab/database/transaction_timeout_settings_spec.rb37
-rw-r--r--spec/lib/gitlab/redis/repository_cache_spec.rb3
-rw-r--r--spec/lib/gitlab/redis/sidekiq_status_spec.rb5
-rw-r--r--spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb13
-rw-r--r--spec/lib/gitlab/usage_data_spec.rb3
-rw-r--r--spec/lib/sidebars/projects/menus/repository_menu_spec.rb15
-rw-r--r--spec/models/work_item_spec.rb48
-rw-r--r--spec/models/work_items/widgets/hierarchy_spec.rb30
-rw-r--r--spec/requests/api/graphql/work_item_spec.rb14
-rw-r--r--spec/requests/projects/network_controller_spec.rb11
-rw-r--r--spec/support/redis/redis_new_instance_shared_examples.rb50
-rw-r--r--spec/support/redis/redis_shared_examples.rb67
-rw-r--r--spec/tasks/gitlab/db/lock_writes_rake_spec.rb197
-rw-r--r--spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb40
70 files changed, 3966 insertions, 1531 deletions
diff --git a/.gitlab/ci/notify.gitlab-ci.yml b/.gitlab/ci/notify.gitlab-ci.yml
index 638e1cd8bd8..20f19978022 100644
--- a/.gitlab/ci/notify.gitlab-ci.yml
+++ b/.gitlab/ci/notify.gitlab-ci.yml
@@ -55,13 +55,14 @@ notify-pipeline-failure:
script:
- |
if [[ "${CREATE_INCIDENT_FOR_PIPELINE_FAILURE}" == "true" ]]; then
- scripts/create-pipeline-failure-incident.rb -p ${INCIDENT_PROJECT} -f ${INCIDENT_JSON} -t ${BROKEN_BRANCH_PROJECT_TOKEN};
+ scripts/create-pipeline-failure-incident.rb -p ${INCIDENT_PROJECT} -f ${INCIDENT_JSON} -t ${BROKEN_BRANCH_PROJECT_TOKEN} ||
+ scripts/slack ${SLACK_CHANNEL} "☠️ Broken pipeline incident creation failed! ☠️ See ${CI_JOB_URL}" ci_failing "Failed pipeline reporter";
echosuccess "Created incident $(jq '.web_url' ${INCIDENT_JSON})";
fi
- |
scripts/generate-failed-pipeline-slack-message.rb -i ${INCIDENT_JSON} -f ${FAILED_PIPELINE_SLACK_MESSAGE_FILE};
curl -X POST -H 'Content-Type: application/json' --data @${FAILED_PIPELINE_SLACK_MESSAGE_FILE} "$CI_SLACK_WEBHOOK_URL" ||
- scripts/slack ${SLACK_CHANNEL} "☠️ Broken pipeline notification failed! ☠️ See ${CI_JOB_URL}" ci_failing "Failed pipeline reporter"
+ scripts/slack ${SLACK_CHANNEL} "☠️ Broken pipeline notification failed! ☠️ See ${CI_JOB_URL}" ci_failing "Failed pipeline reporter";
artifacts:
paths:
diff --git a/.rubocop.yml b/.rubocop.yml
index 77c54053db3..acae3d7f895 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -945,10 +945,6 @@ Cop/FeatureFlagUsage:
- 'lib/gitlab/patch/**/*.rb'
- 'lib/gitlab/instrumentation/**/*.rb'
-# See https://gitlab.com/gitlab-org/gitlab/-/issues/386618
-Layout/HashAlignment:
- Enabled: false
-
Style/ArgumentsForwarding:
Enabled: true
AllowOnlyRestArgument: false
diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml
index 8531f0500f8..c7e3efbf25e 100644
--- a/.rubocop_todo/layout/argument_alignment.yml
+++ b/.rubocop_todo/layout/argument_alignment.yml
@@ -1,1513 +1,3310 @@
---
# Cop supports --autocorrect.
Layout/ArgumentAlignment:
- # Offense count: 4159
- # Temporarily disabled due to too many offenses
- Enabled: false
+ Details: grace period
Exclude:
- - 'app/controllers/admin/cohorts_controller.rb'
- - 'app/controllers/admin/dev_ops_report_controller.rb'
- - 'app/controllers/admin/usage_trends_controller.rb'
- - 'app/controllers/admin/users_controller.rb'
+ - 'app/controllers/admin/application_settings_controller.rb'
+ - 'app/controllers/admin/ci/variables_controller.rb'
+ - 'app/controllers/admin/groups_controller.rb'
+ - 'app/controllers/admin/spam_logs_controller.rb'
+ - 'app/controllers/admin/topics_controller.rb'
- 'app/controllers/application_controller.rb'
- - 'app/controllers/concerns/import/github_oauth.rb'
- - 'app/controllers/concerns/notes_actions.rb'
- - 'app/controllers/concerns/page_limiter.rb'
- - 'app/controllers/concerns/sends_blob.rb'
- - 'app/controllers/concerns/snippets_actions.rb'
+ - 'app/controllers/chaos_controller.rb'
+ - 'app/controllers/concerns/authenticates_with_two_factor.rb'
+ - 'app/controllers/concerns/enforces_two_factor_authentication.rb'
+ - 'app/controllers/concerns/invisible_captcha_on_signup.rb'
+ - 'app/controllers/concerns/issuable_actions.rb'
+ - 'app/controllers/concerns/known_sign_in.rb'
+ - 'app/controllers/concerns/membership_actions.rb'
+ - 'app/controllers/concerns/observability/content_security_policy.rb'
- 'app/controllers/concerns/wiki_actions.rb'
+ - 'app/controllers/dashboard/todos_controller.rb'
+ - 'app/controllers/groups/children_controller.rb'
+ - 'app/controllers/groups/group_members_controller.rb'
- 'app/controllers/groups_controller.rb'
- - 'app/controllers/ide_controller.rb'
- - 'app/controllers/import/gitea_controller.rb'
- - 'app/controllers/import/github_controller.rb'
- - 'app/controllers/import/gitlab_groups_controller.rb'
+ - 'app/controllers/metrics_controller.rb'
- 'app/controllers/oauth/authorizations_controller.rb'
- - 'app/controllers/passwords_controller.rb'
- - 'app/controllers/profiles_controller.rb'
- - 'app/controllers/projects/branches_controller.rb'
- - 'app/controllers/projects/cycle_analytics_controller.rb'
- - 'app/controllers/projects/graphs_controller.rb'
+ - 'app/controllers/oauth/authorized_applications_controller.rb'
+ - 'app/controllers/oauth/jira_dvcs/authorizations_controller.rb'
+ - 'app/controllers/profiles/emails_controller.rb'
+ - 'app/controllers/projects/blob_controller.rb'
+ - 'app/controllers/projects/commit_controller.rb'
+ - 'app/controllers/projects/environments_controller.rb'
+ - 'app/controllers/projects/error_tracking_controller.rb'
+ - 'app/controllers/projects/feature_flags_controller.rb'
+ - 'app/controllers/projects/google_cloud/base_controller.rb'
- 'app/controllers/projects/jobs_controller.rb'
+ - 'app/controllers/projects/labels_controller.rb'
- 'app/controllers/projects/merge_requests/creations_controller.rb'
+ - 'app/controllers/projects/merge_requests_controller.rb'
+ - 'app/controllers/projects/pages_controller.rb'
- 'app/controllers/projects/pages_domains_controller.rb'
- 'app/controllers/projects/pipeline_schedules_controller.rb'
- 'app/controllers/projects/pipelines_controller.rb'
- - 'app/controllers/projects/uploads_controller.rb'
+ - 'app/controllers/projects/prometheus/metrics_controller.rb'
+ - 'app/controllers/projects/repositories_controller.rb'
+ - 'app/controllers/projects/security/configuration_controller.rb'
+ - 'app/controllers/projects/tree_controller.rb'
- 'app/controllers/projects/web_ide_terminals_controller.rb'
- - 'app/controllers/registrations_controller.rb'
- - 'app/controllers/repositories/git_http_controller.rb'
+ - 'app/controllers/repositories/lfs_api_controller.rb'
+ - 'app/controllers/repositories/lfs_locks_api_controller.rb'
- 'app/controllers/search_controller.rb'
- 'app/controllers/sessions_controller.rb'
- - 'app/finders/context_commits_finder.rb'
- - 'app/finders/deployments_finder.rb'
- - 'app/finders/issues_finder.rb'
- - 'app/finders/projects/prometheus/alerts_finder.rb'
- - 'app/graphql/mutations/award_emojis/toggle.rb'
+ - 'app/controllers/users_controller.rb'
+ - 'app/finders/autocomplete/users_finder.rb'
+ - 'app/finders/group_descendants_finder.rb'
+ - 'app/graphql/mutations/achievements/create.rb'
+ - 'app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb'
+ - 'app/graphql/mutations/alert_management/alerts/set_assignees.rb'
+ - 'app/graphql/mutations/alert_management/base.rb'
+ - 'app/graphql/mutations/alert_management/http_integration/create.rb'
+ - 'app/graphql/mutations/alert_management/http_integration/destroy.rb'
+ - 'app/graphql/mutations/alert_management/http_integration/http_integration_base.rb'
+ - 'app/graphql/mutations/alert_management/http_integration/reset_token.rb'
+ - 'app/graphql/mutations/alert_management/http_integration/update.rb'
+ - 'app/graphql/mutations/alert_management/prometheus_integration/create.rb'
+ - 'app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb'
+ - 'app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb'
+ - 'app/graphql/mutations/alert_management/prometheus_integration/update.rb'
+ - 'app/graphql/mutations/alert_management/update_alert_status.rb'
+ - 'app/graphql/mutations/award_emojis/base.rb'
+ - 'app/graphql/mutations/base_mutation.rb'
+ - 'app/graphql/mutations/boards/common_mutation_arguments.rb'
+ - 'app/graphql/mutations/boards/create.rb'
- 'app/graphql/mutations/boards/destroy.rb'
+ - 'app/graphql/mutations/boards/issues/issue_move_list.rb'
+ - 'app/graphql/mutations/boards/lists/base_create.rb'
- 'app/graphql/mutations/boards/lists/base_update.rb'
+ - 'app/graphql/mutations/boards/lists/create.rb'
- 'app/graphql/mutations/boards/lists/destroy.rb'
- 'app/graphql/mutations/boards/lists/update.rb'
+ - 'app/graphql/mutations/boards/update.rb'
+ - 'app/graphql/mutations/branches/create.rb'
+ - 'app/graphql/mutations/ci/job/artifacts_destroy.rb'
+ - 'app/graphql/mutations/ci/job/base.rb'
+ - 'app/graphql/mutations/ci/job/cancel.rb'
+ - 'app/graphql/mutations/ci/job/play.rb'
+ - 'app/graphql/mutations/ci/job/retry.rb'
+ - 'app/graphql/mutations/ci/job/unschedule.rb'
+ - 'app/graphql/mutations/ci/job_artifact/destroy.rb'
- 'app/graphql/mutations/ci/job_token_scope/add_project.rb'
- 'app/graphql/mutations/ci/job_token_scope/remove_project.rb'
- 'app/graphql/mutations/ci/pipeline/base.rb'
- - 'app/graphql/mutations/ci/project_ci_cd_settings_update.rb'
+ - 'app/graphql/mutations/ci/pipeline/retry.rb'
+ - 'app/graphql/mutations/ci/pipeline_schedule/base.rb'
+ - 'app/graphql/mutations/ci/pipeline_schedule/create.rb'
+ - 'app/graphql/mutations/ci/pipeline_schedule/play.rb'
+ - 'app/graphql/mutations/ci/pipeline_schedule/take_ownership.rb'
+ - 'app/graphql/mutations/ci/pipeline_schedule/update.rb'
+ - 'app/graphql/mutations/ci/runner/bulk_delete.rb'
+ - 'app/graphql/mutations/ci/runner/delete.rb'
- 'app/graphql/mutations/ci/runner/update.rb'
- 'app/graphql/mutations/ci/runners_registration_token/reset.rb'
- - 'app/graphql/mutations/concerns/mutations/work_items/widgetable.rb'
+ - 'app/graphql/mutations/clusters/agent_tokens/create.rb'
+ - 'app/graphql/mutations/clusters/agent_tokens/revoke.rb'
+ - 'app/graphql/mutations/clusters/agents/create.rb'
+ - 'app/graphql/mutations/clusters/agents/delete.rb'
+ - 'app/graphql/mutations/commits/create.rb'
+ - 'app/graphql/mutations/concerns/mutations/assignable.rb'
+ - 'app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb'
+ - 'app/graphql/mutations/concerns/mutations/resolves_subscription.rb'
+ - 'app/graphql/mutations/concerns/mutations/work_items/update_arguments.rb'
+ - 'app/graphql/mutations/container_expiration_policies/update.rb'
+ - 'app/graphql/mutations/container_repositories/destroy.rb'
+ - 'app/graphql/mutations/container_repositories/destroy_tags.rb'
+ - 'app/graphql/mutations/custom_emoji/create.rb'
+ - 'app/graphql/mutations/custom_emoji/destroy.rb'
+ - 'app/graphql/mutations/customer_relations/contacts/base.rb'
+ - 'app/graphql/mutations/customer_relations/contacts/create.rb'
- 'app/graphql/mutations/customer_relations/contacts/update.rb'
+ - 'app/graphql/mutations/customer_relations/organizations/create.rb'
- 'app/graphql/mutations/customer_relations/organizations/update.rb'
- 'app/graphql/mutations/dependency_proxy/group_settings/update.rb'
- 'app/graphql/mutations/dependency_proxy/image_ttl_group_policy/update.rb'
- - 'app/graphql/mutations/design_management/move.rb'
+ - 'app/graphql/mutations/design_management/base.rb'
+ - 'app/graphql/mutations/design_management/delete.rb'
+ - 'app/graphql/mutations/design_management/upload.rb'
- 'app/graphql/mutations/discussions/toggle_resolve.rb'
- - 'app/graphql/mutations/issues/set_severity.rb'
- - 'app/graphql/mutations/metrics/dashboard/annotations/create.rb'
+ - 'app/graphql/mutations/echo.rb'
+ - 'app/graphql/mutations/environments/canary_ingress/update.rb'
+ - 'app/graphql/mutations/groups/update.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event/base.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event/create.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event/destroy.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event/promote_from_note.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event/update.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event_tag/base.rb'
+ - 'app/graphql/mutations/incident_management/timeline_event_tag/create.rb'
+ - 'app/graphql/mutations/issues/base.rb'
+ - 'app/graphql/mutations/issues/common_mutation_arguments.rb'
+ - 'app/graphql/mutations/issues/create.rb'
+ - 'app/graphql/mutations/issues/move.rb'
+ - 'app/graphql/mutations/issues/set_confidential.rb'
+ - 'app/graphql/mutations/issues/set_crm_contacts.rb'
+ - 'app/graphql/mutations/issues/set_due_date.rb'
+ - 'app/graphql/mutations/issues/set_escalation_status.rb'
+ - 'app/graphql/mutations/issues/set_locked.rb'
+ - 'app/graphql/mutations/issues/set_subscription.rb'
+ - 'app/graphql/mutations/issues/update.rb'
+ - 'app/graphql/mutations/jira_import/import_users.rb'
+ - 'app/graphql/mutations/jira_import/start.rb'
+ - 'app/graphql/mutations/labels/create.rb'
+ - 'app/graphql/mutations/members/groups/bulk_update.rb'
+ - 'app/graphql/mutations/merge_requests/accept.rb'
+ - 'app/graphql/mutations/merge_requests/base.rb'
+ - 'app/graphql/mutations/merge_requests/create.rb'
+ - 'app/graphql/mutations/merge_requests/reviewer_rereview.rb'
+ - 'app/graphql/mutations/merge_requests/set_draft.rb'
+ - 'app/graphql/mutations/merge_requests/set_labels.rb'
+ - 'app/graphql/mutations/merge_requests/set_locked.rb'
+ - 'app/graphql/mutations/merge_requests/set_milestone.rb'
+ - 'app/graphql/mutations/merge_requests/set_reviewers.rb'
+ - 'app/graphql/mutations/merge_requests/set_subscription.rb'
+ - 'app/graphql/mutations/merge_requests/update.rb'
- 'app/graphql/mutations/metrics/dashboard/annotations/delete.rb'
- 'app/graphql/mutations/namespace/package_settings/update.rb'
+ - 'app/graphql/mutations/notes/base.rb'
- 'app/graphql/mutations/notes/create/base.rb'
- 'app/graphql/mutations/notes/create/diff_note.rb'
- 'app/graphql/mutations/notes/create/image_diff_note.rb'
- 'app/graphql/mutations/notes/create/note.rb'
+ - 'app/graphql/mutations/notes/destroy.rb'
- 'app/graphql/mutations/notes/reposition_image_diff_note.rb'
+ - 'app/graphql/mutations/notes/update/base.rb'
+ - 'app/graphql/mutations/notes/update/image_diff_note.rb'
+ - 'app/graphql/mutations/notes/update/note.rb'
+ - 'app/graphql/mutations/packages/bulk_destroy.rb'
- 'app/graphql/mutations/packages/cleanup/policy/update.rb'
+ - 'app/graphql/mutations/packages/destroy.rb'
+ - 'app/graphql/mutations/packages/destroy_file.rb'
- 'app/graphql/mutations/packages/destroy_files.rb'
- - 'app/graphql/mutations/pages/base.rb'
- - 'app/graphql/mutations/pages/mark_onboarding_complete.rb'
- - 'app/graphql/mutations/security/ci_configuration/base_security_analyzer.rb'
- - 'app/graphql/mutations/security/ci_configuration/configure_sast.rb'
+ - 'app/graphql/mutations/release_asset_links/create.rb'
+ - 'app/graphql/mutations/release_asset_links/delete.rb'
+ - 'app/graphql/mutations/release_asset_links/update.rb'
+ - 'app/graphql/mutations/releases/base.rb'
+ - 'app/graphql/mutations/releases/create.rb'
+ - 'app/graphql/mutations/releases/delete.rb'
+ - 'app/graphql/mutations/releases/update.rb'
+ - 'app/graphql/mutations/saved_replies/base.rb'
+ - 'app/graphql/mutations/saved_replies/create.rb'
+ - 'app/graphql/mutations/saved_replies/destroy.rb'
+ - 'app/graphql/mutations/saved_replies/update.rb'
+ - 'app/graphql/mutations/snippets/base.rb'
+ - 'app/graphql/mutations/snippets/create.rb'
+ - 'app/graphql/mutations/snippets/destroy.rb'
+ - 'app/graphql/mutations/snippets/mark_as_spam.rb'
+ - 'app/graphql/mutations/snippets/update.rb'
- 'app/graphql/mutations/terraform/state/base.rb'
+ - 'app/graphql/mutations/timelogs/base.rb'
+ - 'app/graphql/mutations/timelogs/create.rb'
+ - 'app/graphql/mutations/timelogs/delete.rb'
+ - 'app/graphql/mutations/todos/create.rb'
+ - 'app/graphql/mutations/todos/mark_all_done.rb'
+ - 'app/graphql/mutations/todos/mark_done.rb'
+ - 'app/graphql/mutations/todos/restore.rb'
+ - 'app/graphql/mutations/todos/restore_many.rb'
+ - 'app/graphql/mutations/uploads/delete.rb'
- 'app/graphql/mutations/user_callouts/create.rb'
+ - 'app/graphql/mutations/user_preferences/update.rb'
+ - 'app/graphql/mutations/work_items/create.rb'
+ - 'app/graphql/mutations/work_items/create_from_task.rb'
+ - 'app/graphql/mutations/work_items/delete.rb'
+ - 'app/graphql/mutations/work_items/delete_task.rb'
+ - 'app/graphql/mutations/work_items/update.rb'
+ - 'app/graphql/mutations/work_items/update_task.rb'
- 'app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb'
- 'app/graphql/resolvers/alert_management/alert_resolver.rb'
- 'app/graphql/resolvers/alert_management/alert_status_counts_resolver.rb'
+ - 'app/graphql/resolvers/alert_management/http_integrations_resolver.rb'
+ - 'app/graphql/resolvers/alert_management/integrations_resolver.rb'
+ - 'app/graphql/resolvers/blobs_resolver.rb'
+ - 'app/graphql/resolvers/board_list_issues_resolver.rb'
+ - 'app/graphql/resolvers/board_list_resolver.rb'
+ - 'app/graphql/resolvers/board_lists_resolver.rb'
+ - 'app/graphql/resolvers/board_resolver.rb'
+ - 'app/graphql/resolvers/boards_resolver.rb'
- 'app/graphql/resolvers/ci/all_jobs_resolver.rb'
+ - 'app/graphql/resolvers/ci/config_resolver.rb'
+ - 'app/graphql/resolvers/ci/group_runners_resolver.rb'
- 'app/graphql/resolvers/ci/jobs_resolver.rb'
- 'app/graphql/resolvers/ci/project_pipeline_counts_resolver.rb'
- - 'app/graphql/resolvers/ci/test_suite_resolver.rb'
+ - 'app/graphql/resolvers/ci/runner_jobs_resolver.rb'
+ - 'app/graphql/resolvers/ci/runner_projects_resolver.rb'
+ - 'app/graphql/resolvers/ci/runner_resolver.rb'
+ - 'app/graphql/resolvers/ci/runner_setup_resolver.rb'
+ - 'app/graphql/resolvers/ci/runner_status_resolver.rb'
+ - 'app/graphql/resolvers/ci/runners_resolver.rb'
+ - 'app/graphql/resolvers/ci/template_resolver.rb'
+ - 'app/graphql/resolvers/ci/variables_resolver.rb'
+ - 'app/graphql/resolvers/clusters/agent_tokens_resolver.rb'
- 'app/graphql/resolvers/clusters/agents_resolver.rb'
+ - 'app/graphql/resolvers/concerns/board_item_filterable.rb'
- 'app/graphql/resolvers/concerns/group_issuable_resolver.rb'
- 'app/graphql/resolvers/concerns/issues/sort_arguments.rb'
+ - 'app/graphql/resolvers/concerns/project_search_arguments.rb'
+ - 'app/graphql/resolvers/concerns/resolves_pipelines.rb'
+ - 'app/graphql/resolvers/concerns/resolves_snippets.rb'
- 'app/graphql/resolvers/concerns/search_arguments.rb'
+ - 'app/graphql/resolvers/concerns/time_frame_arguments.rb'
- 'app/graphql/resolvers/container_repositories_resolver.rb'
- 'app/graphql/resolvers/container_repository_tags_resolver.rb'
+ - 'app/graphql/resolvers/crm/contact_state_counts_resolver.rb'
+ - 'app/graphql/resolvers/crm/contacts_resolver.rb'
+ - 'app/graphql/resolvers/crm/organization_state_counts_resolver.rb'
+ - 'app/graphql/resolvers/crm/organizations_resolver.rb'
+ - 'app/graphql/resolvers/deployment_resolver.rb'
+ - 'app/graphql/resolvers/deployments_resolver.rb'
+ - 'app/graphql/resolvers/design_management/design_at_version_resolver.rb'
+ - 'app/graphql/resolvers/design_management/design_resolver.rb'
+ - 'app/graphql/resolvers/design_management/designs_resolver.rb'
+ - 'app/graphql/resolvers/design_management/version/design_at_version_resolver.rb'
+ - 'app/graphql/resolvers/design_management/version/designs_at_version_resolver.rb'
+ - 'app/graphql/resolvers/design_management/version_in_collection_resolver.rb'
+ - 'app/graphql/resolvers/design_management/version_resolver.rb'
+ - 'app/graphql/resolvers/design_management/versions_resolver.rb'
+ - 'app/graphql/resolvers/echo_resolver.rb'
+ - 'app/graphql/resolvers/environments/last_deployment_resolver.rb'
- 'app/graphql/resolvers/environments_resolver.rb'
- 'app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb'
- 'app/graphql/resolvers/error_tracking/sentry_error_stack_trace_resolver.rb'
- 'app/graphql/resolvers/error_tracking/sentry_errors_resolver.rb'
+ - 'app/graphql/resolvers/full_path_resolver.rb'
+ - 'app/graphql/resolvers/group_labels_resolver.rb'
- 'app/graphql/resolvers/group_members_resolver.rb'
- - 'app/graphql/resolvers/group_packages_resolver.rb'
+ - 'app/graphql/resolvers/group_milestones_resolver.rb'
+ - 'app/graphql/resolvers/groups_resolver.rb'
+ - 'app/graphql/resolvers/incident_management/timeline_events_resolver.rb'
- 'app/graphql/resolvers/issues/base_parent_resolver.rb'
- 'app/graphql/resolvers/issues/base_resolver.rb'
- 'app/graphql/resolvers/issues_resolver.rb'
+ - 'app/graphql/resolvers/labels_resolver.rb'
- 'app/graphql/resolvers/members_resolver.rb'
+ - 'app/graphql/resolvers/merge_request_resolver.rb'
+ - 'app/graphql/resolvers/merge_requests_resolver.rb'
+ - 'app/graphql/resolvers/metrics/dashboard_resolver.rb'
+ - 'app/graphql/resolvers/metrics/dashboards/annotation_resolver.rb'
+ - 'app/graphql/resolvers/milestones_resolver.rb'
- 'app/graphql/resolvers/namespace_projects_resolver.rb'
- - 'app/graphql/resolvers/package_details_resolver.rb'
- 'app/graphql/resolvers/packages_base_resolver.rb'
- 'app/graphql/resolvers/paginated_tree_resolver.rb'
- 'app/graphql/resolvers/project_jobs_resolver.rb'
- 'app/graphql/resolvers/project_members_resolver.rb'
- - 'app/graphql/resolvers/projects/fork_targets_resolver.rb'
- - 'app/graphql/resolvers/projects/snippets_resolver.rb'
+ - 'app/graphql/resolvers/project_milestones_resolver.rb'
+ - 'app/graphql/resolvers/project_pipeline_resolver.rb'
+ - 'app/graphql/resolvers/project_pipeline_schedules_resolver.rb'
+ - 'app/graphql/resolvers/projects/fork_details_resolver.rb'
+ - 'app/graphql/resolvers/projects/jira_projects_resolver.rb'
+ - 'app/graphql/resolvers/projects/services_resolver.rb'
+ - 'app/graphql/resolvers/projects_resolver.rb'
- 'app/graphql/resolvers/release_resolver.rb'
- - 'app/graphql/resolvers/repository_branch_names_resolver.rb'
+ - 'app/graphql/resolvers/releases_resolver.rb'
+ - 'app/graphql/resolvers/snippets/blobs_resolver.rb'
- 'app/graphql/resolvers/snippets_resolver.rb'
- 'app/graphql/resolvers/terraform/states_resolver.rb'
+ - 'app/graphql/resolvers/timelog_resolver.rb'
+ - 'app/graphql/resolvers/todo_resolver.rb'
+ - 'app/graphql/resolvers/todos_resolver.rb'
+ - 'app/graphql/resolvers/topics_resolver.rb'
- 'app/graphql/resolvers/tree_resolver.rb'
+ - 'app/graphql/resolvers/user_merge_requests_resolver_base.rb'
+ - 'app/graphql/resolvers/user_resolver.rb'
+ - 'app/graphql/resolvers/user_starred_projects_resolver.rb'
+ - 'app/graphql/resolvers/users/groups_resolver.rb'
+ - 'app/graphql/resolvers/users/snippets_resolver.rb'
- 'app/graphql/resolvers/users_resolver.rb'
+ - 'app/graphql/resolvers/work_items/types_resolver.rb'
+ - 'app/graphql/resolvers/work_items_resolver.rb'
- 'app/graphql/subscriptions/issuable_updated.rb'
- - 'app/graphql/types/alert_management/domain_filter_enum.rb'
- - 'app/graphql/types/ci/group_variable_connection_type.rb'
- - 'app/graphql/types/ci/project_variable_connection_type.rb'
+ - 'app/graphql/types/access_level_type.rb'
+ - 'app/graphql/types/achievements/achievement_type.rb'
+ - 'app/graphql/types/admin/analytics/usage_trends/measurement_type.rb'
+ - 'app/graphql/types/admin/sidekiq_queues/delete_jobs_response_type.rb'
+ - 'app/graphql/types/alert_management/alert_status_counts_type.rb'
+ - 'app/graphql/types/alert_management/alert_type.rb'
+ - 'app/graphql/types/alert_management/integration_type.rb'
+ - 'app/graphql/types/award_emojis/award_emoji_type.rb'
+ - 'app/graphql/types/base_enum.rb'
+ - 'app/graphql/types/blob_viewer_type.rb'
+ - 'app/graphql/types/board_list_type.rb'
+ - 'app/graphql/types/board_type.rb'
+ - 'app/graphql/types/boards/board_issuable_input_base_type.rb'
+ - 'app/graphql/types/boards/board_issue_input_base_type.rb'
+ - 'app/graphql/types/boards/board_issue_input_type.rb'
+ - 'app/graphql/types/branch_protections/base_access_level_type.rb'
+ - 'app/graphql/types/branch_rules/branch_protection_type.rb'
+ - 'app/graphql/types/branch_type.rb'
+ - 'app/graphql/types/ci/analytics_type.rb'
+ - 'app/graphql/types/ci/application_setting_type.rb'
+ - 'app/graphql/types/ci/build_need_type.rb'
+ - 'app/graphql/types/ci/ci_cd_setting_type.rb'
+ - 'app/graphql/types/ci/code_quality_degradation_severity_enum.rb'
+ - 'app/graphql/types/ci/code_quality_report_summary_type.rb'
+ - 'app/graphql/types/ci/config/config_type.rb'
+ - 'app/graphql/types/ci/config/group_type.rb'
+ - 'app/graphql/types/ci/config/include_type.rb'
+ - 'app/graphql/types/ci/config/job_restriction_type.rb'
+ - 'app/graphql/types/ci/config/job_type.rb'
+ - 'app/graphql/types/ci/config/need_type.rb'
+ - 'app/graphql/types/ci/config/stage_type.rb'
+ - 'app/graphql/types/ci/config_variable_type.rb'
+ - 'app/graphql/types/ci/detailed_status_type.rb'
+ - 'app/graphql/types/ci/freeze_period_type.rb'
+ - 'app/graphql/types/ci/group_type.rb'
+ - 'app/graphql/types/ci/group_variable_type.rb'
+ - 'app/graphql/types/ci/instance_variable_type.rb'
+ - 'app/graphql/types/ci/job_artifact_type.rb'
+ - 'app/graphql/types/ci/job_status_enum.rb'
+ - 'app/graphql/types/ci/job_token_scope_type.rb'
+ - 'app/graphql/types/ci/job_type.rb'
+ - 'app/graphql/types/ci/manual_variable_type.rb'
+ - 'app/graphql/types/ci/pipeline_counts_type.rb'
+ - 'app/graphql/types/ci/pipeline_merge_request_event_type_enum.rb'
+ - 'app/graphql/types/ci/pipeline_message_type.rb'
+ - 'app/graphql/types/ci/pipeline_schedule_type.rb'
+ - 'app/graphql/types/ci/pipeline_scope_enum.rb'
+ - 'app/graphql/types/ci/pipeline_status_enum.rb'
+ - 'app/graphql/types/ci/pipeline_type.rb'
+ - 'app/graphql/types/ci/project_variable_type.rb'
+ - 'app/graphql/types/ci/recent_failures_type.rb'
+ - 'app/graphql/types/ci/runner_access_level_enum.rb'
+ - 'app/graphql/types/ci/runner_architecture_type.rb'
+ - 'app/graphql/types/ci/runner_job_execution_status_enum.rb'
+ - 'app/graphql/types/ci/runner_membership_filter_enum.rb'
+ - 'app/graphql/types/ci/runner_platform_type.rb'
+ - 'app/graphql/types/ci/runner_setup_type.rb'
+ - 'app/graphql/types/ci/runner_status_enum.rb'
+ - 'app/graphql/types/ci/runner_type.rb'
+ - 'app/graphql/types/ci/runner_type_enum.rb'
+ - 'app/graphql/types/ci/runner_web_url_edge.rb'
+ - 'app/graphql/types/ci/stage_type.rb'
+ - 'app/graphql/types/ci/status_action_type.rb'
+ - 'app/graphql/types/ci/template_type.rb'
+ - 'app/graphql/types/ci/test_case_status_enum.rb'
+ - 'app/graphql/types/ci/test_case_type.rb'
+ - 'app/graphql/types/ci/test_report_summary_type.rb'
+ - 'app/graphql/types/ci/test_report_total_type.rb'
+ - 'app/graphql/types/ci/test_suite_summary_type.rb'
+ - 'app/graphql/types/ci/test_suite_type.rb'
+ - 'app/graphql/types/ci/variable_interface.rb'
- 'app/graphql/types/ci_configuration/sast/analyzers_entity_input_type.rb'
- - 'app/graphql/types/ci_configuration/sast/input_type.rb'
+ - 'app/graphql/types/ci_configuration/sast/analyzers_entity_type.rb'
+ - 'app/graphql/types/ci_configuration/sast/entity_input_type.rb'
+ - 'app/graphql/types/ci_configuration/sast/entity_type.rb'
+ - 'app/graphql/types/ci_configuration/sast/options_entity_type.rb'
+ - 'app/graphql/types/ci_configuration/sast/type.rb'
+ - 'app/graphql/types/clusters/agent_activity_event_type.rb'
+ - 'app/graphql/types/clusters/agent_token_type.rb'
+ - 'app/graphql/types/clusters/agent_type.rb'
+ - 'app/graphql/types/commit_action_type.rb'
- 'app/graphql/types/commit_signature_interface.rb'
- 'app/graphql/types/commit_signatures/gpg_signature_type.rb'
- 'app/graphql/types/commit_signatures/ssh_signature_type.rb'
- 'app/graphql/types/commit_signatures/x509_signature_type.rb'
- - 'app/graphql/types/customer_relations/contact_sort_enum.rb'
- - 'app/graphql/types/customer_relations/organization_sort_enum.rb'
+ - 'app/graphql/types/commit_type.rb'
+ - 'app/graphql/types/container_repository_details_type.rb'
+ - 'app/graphql/types/countable_connection_type.rb'
+ - 'app/graphql/types/current_user_todos.rb'
+ - 'app/graphql/types/custom_emoji_type.rb'
+ - 'app/graphql/types/customer_relations/contact_state_counts_type.rb'
+ - 'app/graphql/types/customer_relations/contact_state_enum.rb'
+ - 'app/graphql/types/customer_relations/contact_type.rb'
+ - 'app/graphql/types/customer_relations/organization_state_counts_type.rb'
+ - 'app/graphql/types/customer_relations/organization_state_enum.rb'
+ - 'app/graphql/types/customer_relations/organization_type.rb'
+ - 'app/graphql/types/dependency_proxy/manifest_type.rb'
+ - 'app/graphql/types/deployment_status_enum.rb'
+ - 'app/graphql/types/deployment_tag_type.rb'
- 'app/graphql/types/deployment_type.rb'
+ - 'app/graphql/types/deployments_order_by_input_type.rb'
+ - 'app/graphql/types/design_management/design_at_version_type.rb'
+ - 'app/graphql/types/design_management/design_collection_copy_state_enum.rb'
+ - 'app/graphql/types/design_management/design_collection_type.rb'
+ - 'app/graphql/types/design_management/design_fields.rb'
+ - 'app/graphql/types/design_management/design_type.rb'
+ - 'app/graphql/types/design_management/version_type.rb'
+ - 'app/graphql/types/design_management_type.rb'
+ - 'app/graphql/types/diff_paths_input_type.rb'
+ - 'app/graphql/types/diff_refs_type.rb'
+ - 'app/graphql/types/diff_stats_summary_type.rb'
+ - 'app/graphql/types/diff_stats_type.rb'
- 'app/graphql/types/environment_type.rb'
- - 'app/graphql/types/error_tracking/sentry_error_frequency_type.rb'
- - 'app/graphql/types/error_tracking/sentry_error_tags_type.rb'
+ - 'app/graphql/types/error_tracking/sentry_detailed_error_type.rb'
+ - 'app/graphql/types/error_tracking/sentry_error_collection_type.rb'
+ - 'app/graphql/types/error_tracking/sentry_error_stack_trace_context_type.rb'
+ - 'app/graphql/types/error_tracking/sentry_error_stack_trace_entry_type.rb'
+ - 'app/graphql/types/error_tracking/sentry_error_stack_trace_type.rb'
+ - 'app/graphql/types/error_tracking/sentry_error_type.rb'
+ - 'app/graphql/types/event_type.rb'
+ - 'app/graphql/types/evidence_type.rb'
+ - 'app/graphql/types/grafana_integration_type.rb'
+ - 'app/graphql/types/group_invitation_type.rb'
+ - 'app/graphql/types/group_member_type.rb'
+ - 'app/graphql/types/group_type.rb'
+ - 'app/graphql/types/incident_management/timeline_event_tag_type.rb'
+ - 'app/graphql/types/incident_management/timeline_event_type.rb'
+ - 'app/graphql/types/invitation_interface.rb'
+ - 'app/graphql/types/issue_status_counts_type.rb'
+ - 'app/graphql/types/issue_type.rb'
+ - 'app/graphql/types/issue_type_enum.rb'
- 'app/graphql/types/issues/negated_issue_filter_input_type.rb'
- - 'app/graphql/types/limited_countable_connection_type.rb'
- - 'app/graphql/types/merge_request_state_event_enum.rb'
- - 'app/graphql/types/namespace/package_settings_type.rb'
+ - 'app/graphql/types/issues/unioned_issue_filter_input_type.rb'
+ - 'app/graphql/types/jira_import_type.rb'
+ - 'app/graphql/types/jira_user_type.rb'
+ - 'app/graphql/types/jira_users_mapping_input_type.rb'
+ - 'app/graphql/types/kas/agent_configuration_type.rb'
+ - 'app/graphql/types/kas/agent_connection_type.rb'
+ - 'app/graphql/types/kas/agent_metadata_type.rb'
+ - 'app/graphql/types/key_type.rb'
+ - 'app/graphql/types/label_type.rb'
+ - 'app/graphql/types/member_interface.rb'
+ - 'app/graphql/types/merge_request_connection_type.rb'
+ - 'app/graphql/types/merge_request_review_state_enum.rb'
+ - 'app/graphql/types/merge_request_type.rb'
+ - 'app/graphql/types/merge_requests/detailed_merge_status_enum.rb'
+ - 'app/graphql/types/merge_requests/interacts_with_merge_request.rb'
+ - 'app/graphql/types/merge_requests/merge_status_enum.rb'
+ - 'app/graphql/types/metadata/kas_type.rb'
+ - 'app/graphql/types/metadata_type.rb'
+ - 'app/graphql/types/metrics/dashboard_type.rb'
+ - 'app/graphql/types/metrics/dashboards/annotation_type.rb'
+ - 'app/graphql/types/milestone_stats_type.rb'
+ - 'app/graphql/types/milestone_type.rb'
+ - 'app/graphql/types/mutation_type.rb'
+ - 'app/graphql/types/namespace/shared_runners_setting_enum.rb'
+ - 'app/graphql/types/namespace_type.rb'
+ - 'app/graphql/types/nested_environment_type.rb'
+ - 'app/graphql/types/notes/diff_image_position_input_type.rb'
+ - 'app/graphql/types/notes/diff_position_base_input_type.rb'
+ - 'app/graphql/types/notes/diff_position_input_type.rb'
+ - 'app/graphql/types/notes/diff_position_type.rb'
+ - 'app/graphql/types/notes/discussion_type.rb'
+ - 'app/graphql/types/notes/update_diff_image_position_input_type.rb'
+ - 'app/graphql/types/packages/cleanup/policy_type.rb'
+ - 'app/graphql/types/packages/file_metadata_type.rb'
- 'app/graphql/types/packages/package_base_type.rb'
- - 'app/graphql/types/permission_types/group_enum.rb'
+ - 'app/graphql/types/packages/package_details_type.rb'
+ - 'app/graphql/types/packages/package_file_type.rb'
+ - 'app/graphql/types/packages/package_type.rb'
+ - 'app/graphql/types/permission_types/ci/pipeline_schedules.rb'
+ - 'app/graphql/types/permission_types/issue.rb'
+ - 'app/graphql/types/permission_types/merge_request.rb'
+ - 'app/graphql/types/permission_types/project.rb'
+ - 'app/graphql/types/project_invitation_type.rb'
+ - 'app/graphql/types/project_member_type.rb'
+ - 'app/graphql/types/project_statistics_type.rb'
- 'app/graphql/types/project_type.rb'
+ - 'app/graphql/types/projects/branch_rule_type.rb'
+ - 'app/graphql/types/projects/fork_details_type.rb'
+ - 'app/graphql/types/projects/repository_language_type.rb'
+ - 'app/graphql/types/projects/service_type.rb'
+ - 'app/graphql/types/projects/services/jira_project_type.rb'
+ - 'app/graphql/types/projects/services/jira_service_type.rb'
+ - 'app/graphql/types/projects/topic_type.rb'
+ - 'app/graphql/types/prometheus_alert_type.rb'
+ - 'app/graphql/types/query_complexity_type.rb'
+ - 'app/graphql/types/query_type.rb'
+ - 'app/graphql/types/range_input_type.rb'
- 'app/graphql/types/release_asset_link_shared_input_arguments.rb'
+ - 'app/graphql/types/release_asset_link_type.rb'
+ - 'app/graphql/types/release_assets_input_type.rb'
+ - 'app/graphql/types/release_assets_type.rb'
+ - 'app/graphql/types/release_links_type.rb'
+ - 'app/graphql/types/release_source_type.rb'
+ - 'app/graphql/types/release_type.rb'
+ - 'app/graphql/types/repository/blob_type.rb'
+ - 'app/graphql/types/repository_type.rb'
+ - 'app/graphql/types/resolvable_interface.rb'
- 'app/graphql/types/saved_reply_type.rb'
- - 'app/graphql/types/upload_type.rb'
- - 'app/graphql/types/user_preferences_type.rb'
- - 'app/graphql/types/work_items/widget_interface.rb'
- - 'app/graphql/types/work_items/widgets/assignees_input_type.rb'
- - 'app/graphql/types/work_items/widgets/assignees_type.rb'
+ - 'app/graphql/types/security/report_type_enum.rb'
+ - 'app/graphql/types/sha_format_enum.rb'
+ - 'app/graphql/types/snippet_type.rb'
+ - 'app/graphql/types/snippets/blob_action_input_type.rb'
+ - 'app/graphql/types/snippets/blob_connection_type.rb'
+ - 'app/graphql/types/snippets/blob_type.rb'
+ - 'app/graphql/types/sort_enum.rb'
+ - 'app/graphql/types/subscription_type.rb'
+ - 'app/graphql/types/task_completion_status.rb'
+ - 'app/graphql/types/terraform/state_type.rb'
+ - 'app/graphql/types/terraform/state_version_type.rb'
+ - 'app/graphql/types/time_tracking/timelog_category_type.rb'
+ - 'app/graphql/types/time_tracking/timelog_connection_type.rb'
+ - 'app/graphql/types/timelog_type.rb'
+ - 'app/graphql/types/todo_type.rb'
+ - 'app/graphql/types/tree/blob_type.rb'
+ - 'app/graphql/types/tree/entry_type.rb'
+ - 'app/graphql/types/tree/submodule_type.rb'
+ - 'app/graphql/types/tree/tree_entry_type.rb'
+ - 'app/graphql/types/tree/tree_type.rb'
+ - 'app/graphql/types/user_callout_type.rb'
+ - 'app/graphql/types/user_interface.rb'
+ - 'app/graphql/types/user_merge_request_interaction_type.rb'
+ - 'app/graphql/types/user_status_type.rb'
+ - 'app/graphql/types/users/email_type.rb'
+ - 'app/graphql/types/users/namespace_commit_email_type.rb'
+ - 'app/graphql/types/work_item_type.rb'
+ - 'app/graphql/types/work_items/convert_task_input_type.rb'
+ - 'app/graphql/types/work_items/deleted_task_input_type.rb'
+ - 'app/graphql/types/work_items/type_type.rb'
+ - 'app/graphql/types/work_items/widgets/description_input_type.rb'
+ - 'app/graphql/types/work_items/widgets/description_type.rb'
+ - 'app/graphql/types/work_items/widgets/hierarchy_create_input_type.rb'
- 'app/graphql/types/work_items/widgets/hierarchy_type.rb'
- - 'app/graphql/types/work_items/widgets/labels_type.rb'
- - 'app/graphql/types/work_items/widgets/start_and_due_date_type.rb'
+ - 'app/graphql/types/work_items/widgets/hierarchy_update_input_type.rb'
+ - 'app/graphql/types/work_items/widgets/labels_update_input_type.rb'
+ - 'app/graphql/types/work_items/widgets/milestone_input_type.rb'
+ - 'app/graphql/types/work_items/widgets/milestone_type.rb'
+ - 'app/graphql/types/work_items/widgets/start_and_due_date_update_input_type.rb'
- 'app/graphql/types/x509_certificate_type.rb'
- 'app/graphql/types/x509_issuer_type.rb'
+ - 'app/helpers/application_helper.rb'
+ - 'app/helpers/application_settings_helper.rb'
- 'app/helpers/blob_helper.rb'
- - 'app/helpers/button_helper.rb'
- 'app/helpers/ci/status_helper.rb'
+ - 'app/helpers/commits_helper.rb'
+ - 'app/helpers/dashboard_helper.rb'
- 'app/helpers/events_helper.rb'
- - 'app/helpers/markup_helper.rb'
- - 'app/helpers/members_helper.rb'
+ - 'app/helpers/feature_flags_helper.rb'
+ - 'app/helpers/issuables_helper.rb'
+ - 'app/helpers/mirror_helper.rb'
- 'app/helpers/notes_helper.rb'
- - 'app/helpers/repository_languages_helper.rb'
+ - 'app/helpers/projects/error_tracking_helper.rb'
- 'app/helpers/snippets_helper.rb'
- 'app/helpers/todos_helper.rb'
- - 'app/helpers/wiki_helper.rb'
- - 'app/models/alert_management/http_integration.rb'
- - 'app/models/alerting/project_alerting_setting.rb'
+ - 'app/helpers/users/group_callouts_helper.rb'
+ - 'app/helpers/users_helper.rb'
+ - 'app/helpers/visibility_level_helper.rb'
+ - 'app/mailers/emails/projects.rb'
+ - 'app/mailers/notify.rb'
+ - 'app/models/abuse_report.rb'
+ - 'app/models/achievements/achievement.rb'
+ - 'app/models/achievements/user_achievement.rb'
+ - 'app/models/active_session.rb'
+ - 'app/models/analytics/cycle_analytics/project_level.rb'
+ - 'app/models/analytics/cycle_analytics/stage.rb'
+ - 'app/models/analytics/cycle_analytics/value_stream.rb'
+ - 'app/models/appearance.rb'
- 'app/models/application_setting.rb'
- - 'app/models/aws/role.rb'
+ - 'app/models/atlassian/identity.rb'
- 'app/models/bulk_imports/configuration.rb'
- 'app/models/bulk_imports/entity.rb'
- - 'app/models/bulk_imports/failure.rb'
- - 'app/models/bulk_imports/tracker.rb'
- - 'app/models/ci/build.rb'
+ - 'app/models/ci/build_trace_metadata.rb'
+ - 'app/models/ci/namespace_mirror.rb'
- 'app/models/ci/pipeline.rb'
- - 'app/models/ci/processable.rb'
- - 'app/models/ci/resource_group.rb'
+ - 'app/models/ci/project_mirror.rb'
+ - 'app/models/ci/ref.rb'
- 'app/models/ci/runner.rb'
+ - 'app/models/ci/runner_machine.rb'
+ - 'app/models/ci/running_build.rb'
- 'app/models/ci/stage.rb'
- - 'app/models/ci_platform_metric.rb'
- - 'app/models/clusters/agent.rb'
- - 'app/models/clusters/applications/helm.rb'
- - 'app/models/clusters/applications/prometheus.rb'
- - 'app/models/clusters/integrations/prometheus.rb'
- 'app/models/clusters/kubernetes_namespace.rb'
- - 'app/models/clusters/platforms/kubernetes.rb'
- - 'app/models/clusters/providers/aws.rb'
- - 'app/models/clusters/providers/gcp.rb'
- - 'app/models/commit_status.rb'
- - 'app/models/compare.rb'
- - 'app/models/concerns/blocks_unsafe_serialization.rb'
- - 'app/models/concerns/bulk_insert_safe.rb'
- - 'app/models/concerns/ci/has_variable.rb'
- - 'app/models/concerns/ci/new_has_variable.rb'
- - 'app/models/concerns/ci/partitionable.rb'
- - 'app/models/concerns/each_batch.rb'
- - 'app/models/concerns/integrations/slack_mattermost_notifier.rb'
+ - 'app/models/concerns/bulk_member_access_load.rb'
+ - 'app/models/concerns/ci/metadatable.rb'
+ - 'app/models/concerns/discussion_on_diff.rb'
+ - 'app/models/concerns/group_descendant.rb'
+ - 'app/models/concerns/integrations/has_issue_tracker_fields.rb'
- 'app/models/concerns/issuable.rb'
- - 'app/models/concerns/merge_request_reviewer_state.rb'
- - 'app/models/concerns/nullify_if_blank.rb'
- - 'app/models/concerns/packages/debian/architecture.rb'
- - 'app/models/concerns/packages/debian/component.rb'
- - 'app/models/concerns/packages/debian/distribution.rb'
- - 'app/models/concerns/packages/debian/distribution_key.rb'
- - 'app/models/concerns/repository_storage_movable.rb'
- - 'app/models/concerns/storage/legacy_namespace.rb'
+ - 'app/models/concerns/limitable.rb'
+ - 'app/models/concerns/mentionable/reference_regexes.rb'
+ - 'app/models/concerns/resolvable_discussion.rb'
- 'app/models/concerns/taskable.rb'
- - 'app/models/concerns/with_uploads.rb'
- - 'app/models/custom_emoji.rb'
- - 'app/models/deploy_token.rb'
+ - 'app/models/concerns/vulnerability_finding_helpers.rb'
+ - 'app/models/concerns/web_hooks/auto_disabling.rb'
+ - 'app/models/container_repository.rb'
+ - 'app/models/cycle_analytics/project_level_stage_adapter.rb'
- 'app/models/deployment.rb'
- - 'app/models/design_management/design_action.rb'
- - 'app/models/error_tracking/error.rb'
- - 'app/models/error_tracking/project_error_tracking_setting.rb'
- - 'app/models/event.rb'
- - 'app/models/gpg_key.rb'
- - 'app/models/gpg_key_subkey.rb'
+ - 'app/models/design_management/design.rb'
+ - 'app/models/design_management/version.rb'
+ - 'app/models/diff_discussion.rb'
+ - 'app/models/diff_viewer/base.rb'
+ - 'app/models/discussion.rb'
+ - 'app/models/environment.rb'
+ - 'app/models/generic_commit_status.rb'
- 'app/models/grafana_integration.rb'
- 'app/models/group.rb'
+ - 'app/models/group_group_link.rb'
- 'app/models/hooks/web_hook.rb'
- - 'app/models/incident_management/project_incident_management_setting.rb'
- - 'app/models/incident_management/timeline_event.rb'
- - 'app/models/incident_management/timeline_event_tag.rb'
- - 'app/models/integrations/asana.rb'
- - 'app/models/integrations/assembla.rb'
- - 'app/models/integrations/bamboo.rb'
- - 'app/models/integrations/buildkite.rb'
- - 'app/models/integrations/campfire.rb'
- - 'app/models/integrations/confluence.rb'
- - 'app/models/integrations/datadog.rb'
- - 'app/models/integrations/discord.rb'
- - 'app/models/integrations/drone_ci.rb'
- - 'app/models/integrations/emails_on_push.rb'
- - 'app/models/integrations/external_wiki.rb'
- - 'app/models/integrations/harbor.rb'
- - 'app/models/integrations/irker.rb'
- - 'app/models/integrations/jenkins.rb'
- - 'app/models/integrations/mock_ci.rb'
- - 'app/models/integrations/packagist.rb'
- - 'app/models/integrations/pipelines_email.rb'
- - 'app/models/integrations/pivotaltracker.rb'
- - 'app/models/integrations/prometheus.rb'
- - 'app/models/integrations/pushover.rb'
- - 'app/models/integrations/shimo.rb'
- - 'app/models/integrations/teamcity.rb'
- - 'app/models/integrations/zentao.rb'
- - 'app/models/issue.rb'
- - 'app/models/key.rb'
+ - 'app/models/integration.rb'
+ - 'app/models/integrations/apple_app_store.rb'
+ - 'app/models/integrations/base_chat_notification.rb'
+ - 'app/models/integrations/jira.rb'
+ - 'app/models/jira_connect_installation.rb'
- 'app/models/lfs_object.rb'
- - 'app/models/member.rb'
+ - 'app/models/loose_foreign_keys/deleted_record.rb'
- 'app/models/merge_request.rb'
- 'app/models/merge_request_diff.rb'
- - 'app/models/merge_request_diff_commit.rb'
+ - 'app/models/merge_requests_closing_issues.rb'
+ - 'app/models/ml/candidate_metadata.rb'
+ - 'app/models/ml/experiment_metadata.rb'
- 'app/models/namespace.rb'
+ - 'app/models/namespaces/traversal/linear_scopes.rb'
- 'app/models/note.rb'
- - 'app/models/operations/feature_flag.rb'
- - 'app/models/operations/feature_flags/strategy.rb'
- - 'app/models/operations/feature_flags/user_list.rb'
- - 'app/models/packages/conan/file_metadatum.rb'
+ - 'app/models/note_diff_file.rb'
+ - 'app/models/packages/cleanup/policy.rb'
+ - 'app/models/packages/conan/metadatum.rb'
+ - 'app/models/packages/debian/file_entry.rb'
- 'app/models/packages/debian/file_metadatum.rb'
- - 'app/models/packages/debian/publication.rb'
- - 'app/models/packages/dependency_link.rb'
- - 'app/models/packages/helm/file_metadatum.rb'
- - 'app/models/packages/maven/metadatum.rb'
- 'app/models/packages/package.rb'
+ - 'app/models/packages/rpm/metadatum.rb'
- 'app/models/pages_domain.rb'
+ - 'app/models/pages_domain_acme_order.rb'
- 'app/models/project.rb'
- - 'app/models/project_ci_cd_setting.rb'
- 'app/models/project_feature.rb'
- - 'app/models/project_metrics_setting.rb'
- - 'app/models/projects/import_export/relation_export.rb'
- - 'app/models/projects/import_export/relation_export_upload.rb'
- - 'app/models/redirect_route.rb'
- - 'app/models/route.rb'
+ - 'app/models/project_import_data.rb'
+ - 'app/models/project_team.rb'
+ - 'app/models/prometheus_alert.rb'
+ - 'app/models/release.rb'
+ - 'app/models/releases/source.rb'
+ - 'app/models/remote_mirror.rb'
+ - 'app/models/repository.rb'
+ - 'app/models/resource_timebox_event.rb'
- 'app/models/serverless/domain_cluster.rb'
- - 'app/models/snippet.rb'
+ - 'app/models/service_desk_setting.rb'
- 'app/models/terraform/state.rb'
+ - 'app/models/time_tracking/timelog_category.rb'
+ - 'app/models/u2f_registration.rb'
- 'app/models/user.rb'
- - 'app/models/users/callout.rb'
- - 'app/models/users/saved_reply.rb'
- - 'app/presenters/ci/pipeline_presenter.rb'
- - 'app/presenters/gitlab/blame_presenter.rb'
- - 'app/presenters/key_presenter.rb'
+ - 'app/models/user_preference.rb'
+ - 'app/models/users/group_callout.rb'
+ - 'app/models/users/phone_number_validation.rb'
+ - 'app/models/users/project_callout.rb'
+ - 'app/models/users/user_follow_user.rb'
+ - 'app/models/web_ide_terminal.rb'
+ - 'app/models/webauthn_registration.rb'
+ - 'app/models/wiki_page.rb'
+ - 'app/models/work_item.rb'
+ - 'app/policies/project_snippet_policy.rb'
+ - 'app/presenters/ci/build_runner_presenter.rb'
- 'app/presenters/label_presenter.rb'
- 'app/presenters/merge_request_presenter.rb'
- 'app/presenters/project_presenter.rb'
+ - 'app/presenters/snippet_blob_presenter.rb'
- 'app/serializers/build_details_entity.rb'
- - 'app/serializers/detailed_status_entity.rb'
- - 'app/serializers/diffs_entity.rb'
- - 'app/serializers/environment_entity.rb'
- - 'app/serializers/error_tracking/error_entity.rb'
+ - 'app/serializers/environment_serializer.rb'
+ - 'app/serializers/error_tracking/detailed_error_entity.rb'
+ - 'app/serializers/fork_namespace_entity.rb'
+ - 'app/serializers/group_child_entity.rb'
+ - 'app/serializers/issue_board_entity.rb'
+ - 'app/serializers/issue_entity.rb'
+ - 'app/serializers/linked_issue_entity.rb'
+ - 'app/serializers/merge_request_metrics_helper.rb'
+ - 'app/serializers/rollout_status_entity.rb'
- 'app/serializers/stage_entity.rb'
- - 'app/serializers/test_suite_entity.rb'
- - 'app/serializers/test_suite_summary_entity.rb'
- - 'app/serializers/triggered_pipeline_entity.rb'
+ - 'app/serializers/test_case_entity.rb'
- 'app/services/ci/archive_trace_service.rb'
- - 'app/services/ci/job_artifacts/create_service.rb'
+ - 'app/services/ci/ensure_stage_service.rb'
+ - 'app/services/ci/list_config_variables_service.rb'
- 'app/services/ci/parse_dotenv_artifact_service.rb'
- - 'app/services/ci/register_job_service.rb'
- 'app/services/ci/stuck_builds/drop_helpers.rb'
- - 'app/services/ci/update_build_state_service.rb'
- - 'app/services/concerns/exclusive_lease_guard.rb'
- - 'app/services/discussions/capture_diff_note_position_service.rb'
+ - 'app/services/compare_service.rb'
+ - 'app/services/concerns/rate_limited_service.rb'
+ - 'app/services/design_management/copy_design_collection/copy_service.rb'
+ - 'app/services/design_management/delete_designs_service.rb'
+ - 'app/services/design_management/runs_design_actions.rb'
+ - 'app/services/design_management/save_designs_service.rb'
- 'app/services/error_tracking/base_service.rb'
- - 'app/services/gravatar_service.rb'
- - 'app/services/issues/clone_service.rb'
- - 'app/services/jira/requests/base.rb'
+ - 'app/services/event_create_service.rb'
+ - 'app/services/files/update_service.rb'
+ - 'app/services/google_cloud/create_cloudsql_instance_service.rb'
+ - 'app/services/google_cloud/fetch_google_ip_list_service.rb'
+ - 'app/services/issuable_base_service.rb'
+ - 'app/services/issues/close_service.rb'
+ - 'app/services/issues/create_service.rb'
+ - 'app/services/issues/move_service.rb'
+ - 'app/services/issues/referenced_merge_requests_service.rb'
+ - 'app/services/lfs/lock_file_service.rb'
+ - 'app/services/markdown_content_rewriter_service.rb'
+ - 'app/services/members/base_service.rb'
+ - 'app/services/members/create_service.rb'
- 'app/services/members/creator_service.rb'
- - 'app/services/merge_requests/create_pipeline_service.rb'
+ - 'app/services/merge_requests/build_service.rb'
+ - 'app/services/merge_requests/ff_merge_service.rb'
+ - 'app/services/merge_requests/merge_service.rb'
- 'app/services/merge_requests/merge_to_ref_service.rb'
- - 'app/services/metrics/dashboard/update_dashboard_service.rb'
- - 'app/services/notification_service.rb'
- - 'app/services/packages/conan/create_package_service.rb'
- - 'app/services/packages/create_temporary_package_service.rb'
- - 'app/services/packages/go/create_package_service.rb'
- - 'app/services/packages/maven/create_package_service.rb'
- - 'app/services/prometheus/proxy_variable_substitution_service.rb'
+ - 'app/services/merge_requests/push_options_handler_service.rb'
+ - 'app/services/merge_requests/refresh_service.rb'
+ - 'app/services/merge_requests/reload_diffs_service.rb'
+ - 'app/services/merge_requests/retarget_chain_service.rb'
+ - 'app/services/metrics/dashboard/annotations/create_service.rb'
+ - 'app/services/metrics/dashboard/annotations/delete_service.rb'
+ - 'app/services/metrics/dashboard/clone_dashboard_service.rb'
+ - 'app/services/metrics/users_starred_dashboards/create_service.rb'
+ - 'app/services/ml/experiment_tracking/experiment_repository.rb'
+ - 'app/services/notes/create_service.rb'
+ - 'app/services/notes/destroy_service.rb'
+ - 'app/services/notes/update_service.rb'
+ - 'app/services/pages/migrate_from_legacy_storage_service.rb'
+ - 'app/services/post_receive_service.rb'
+ - 'app/services/preview_markdown_service.rb'
+ - 'app/services/projects/create_service.rb'
+ - 'app/services/projects/fork_service.rb'
+ - 'app/services/projects/hashed_storage/base_repository_service.rb'
+ - 'app/services/projects/import_service.rb'
+ - 'app/services/projects/lfs_pointers/lfs_download_link_list_service.rb'
+ - 'app/services/projects/overwrite_project_service.rb'
+ - 'app/services/projects/update_remote_mirror_service.rb'
- 'app/services/protected_branches/api_service.rb'
+ - 'app/services/protected_branches/legacy_api_create_service.rb'
- 'app/services/quick_actions/interpret_service.rb'
- - 'app/services/web_hook_service.rb'
+ - 'app/services/resource_events/change_labels_service.rb'
+ - 'app/services/search/global_service.rb'
+ - 'app/services/search/project_service.rb'
+ - 'app/services/security/ci_configuration/base_create_service.rb'
+ - 'app/services/security/ci_configuration/container_scanning_create_service.rb'
+ - 'app/services/security/ci_configuration/dependency_scanning_create_service.rb'
+ - 'app/services/security/ci_configuration/sast_iac_create_service.rb'
+ - 'app/services/security/ci_configuration/secret_detection_create_service.rb'
+ - 'app/services/service_response.rb'
+ - 'app/services/spam/akismet_service.rb'
+ - 'app/services/spam/spam_action_service.rb'
+ - 'app/services/spam/spam_verdict_service.rb'
+ - 'app/services/submodules/update_service.rb'
+ - 'app/services/suggestions/create_service.rb'
+ - 'app/services/users/activity_service.rb'
+ - 'app/services/users/build_service.rb'
+ - 'app/services/users/destroy_service.rb'
+ - 'app/services/users/migrate_records_to_ghost_user_in_batches_service.rb'
+ - 'app/services/users/refresh_authorized_projects_service.rb'
- 'app/services/webauthn/authenticate_service.rb'
- - 'app/uploaders/object_storage.rb'
- - 'app/workers/bulk_imports/entity_worker.rb'
- - 'app/workers/bulk_imports/export_request_worker.rb'
- - 'app/workers/bulk_imports/pipeline_worker.rb'
+ - 'app/services/work_items/create_service.rb'
+ - 'app/validators/feature_flag_user_xids_validator.rb'
+ - 'app/workers/gitlab/github_import/stage/import_protected_branches_worker.rb'
+ - 'app/workers/gitlab/jira_import/stuck_jira_import_jobs_worker.rb'
+ - 'app/workers/merge_requests/delete_source_branch_worker.rb'
+ - 'app/workers/packages/debian/process_package_file_worker.rb'
+ - 'app/workers/repository_update_remote_mirror_worker.rb'
- 'app/workers/run_pipeline_schedule_worker.rb'
+ - 'app/workers/stuck_export_jobs_worker.rb'
+ - 'app/workers/x509_issuer_crl_check_worker.rb'
- 'config/application.rb'
- - 'config/initializers/sawyer_patch.rb'
+ - 'config/initializers/google_api_client_patch.rb'
+ - 'config/initializers/hashie_mash_permitted_patch.rb'
+ - 'config/initializers/rack_timeout.rb'
+ - 'config/initializers/rest-client-hostname_override.rb'
- 'config/initializers/zz_metrics.rb'
- 'config/routes.rb'
- - 'config/routes/legacy_builds.rb'
+ - 'config/routes/admin.rb'
+ - 'config/routes/group.rb'
+ - 'config/routes/profile.rb'
- 'config/routes/project.rb'
- - 'config/routes/repository_deprecated.rb'
- 'config/routes/snippets.rb'
+ - 'config/routes/unmatched_project.rb'
- 'config/routes/uploads.rb'
- 'config/routes/user.rb'
- - 'db/migrate/20210609013512_add_unique_index_for_batched_background_migrations.rb'
- - 'db/migrate/20210625094554_create_error_tracking_error_events.rb'
- - 'db/migrate/20210720130006_create_error_tracking_client_keys.rb'
- - 'db/migrate/20210721174441_update_escalation_rule_fk_for_pending_alert_escalations.rb'
- - 'db/migrate/20210722074256_add_user_index_to_escalation_rules.rb'
- - 'db/migrate/20210723173132_create_index_on_environments_auto_delete_at.rb'
- - 'db/migrate/20210813111909_create_ci_build_trace_metadata.rb'
- - 'db/migrate/20210817084338_add_foreign_key_from_ci_build_metadata_to_ci_job_artifacts.rb'
- - 'db/migrate/20210820171834_add_foreign_keys_for_pending_issue_escalations.rb'
- - 'db/migrate/20210923042325_index_meta_data_on_user_credit_card_validations.rb'
- - 'db/migrate/20210928155022_improve_index_for_error_tracking.rb'
- - 'db/migrate/20211013080716_index_include_network_on_user_credit_card_validations.rb'
- - 'db/migrate/20211109101010_support_partition_query_in_loose_fk_table.rb'
- - 'db/migrate/20220119170426_remove_temporary_vulnerability_occurrences_deduplication_index.rb'
- - 'db/migrate/20220301003502_add_security_orchestration_policy_configuration_namespace_index.rb'
- - 'db/migrate/20220401071609_add_campaign_to_in_product_marketing_email.rb'
- - 'db/migrate/20220401110443_add_on_hold_until_column_for_batched_migration.rb'
- - 'db/migrate/20220404170446_add_index_for_non_requested_non_invited_awaiting_members.rb'
- - 'db/migrate/20220406113217_add_inactive_project_deletion_to_application_settings.rb'
- - 'db/migrate/20220408135815_update_index_on_greated_done_at_on_container_repositories.rb'
- - 'db/migrate/20220422220507_remove_tmp_index_supporting_leaky_regex_cleanup.rb'
- - 'db/migrate/20220505092254_add_allow_stale_runner_pruning_index_to_namespace_ci_cd_settings.rb'
- - 'db/migrate/20220512020500_index_batched_migrations_on_gitlab_schema_and_configuration.rb'
- - 'db/migrate/20220513093614_add_ding_talk_into_application_settings.rb'
- - 'db/migrate/20220516054002_temp_index_for_project_namespace_member_backfill.rb'
- - 'db/migrate/20220601223501_add_vulnerability_related_columns.rb'
- - 'db/migrate/20220608074738_add_max_repository_downloads_limit_to_application_settings.rb'
- - 'db/migrate/20220613054349_add_unique_project_download_limit_settings_to_namespace_settings.rb'
- - 'db/migrate/20220616182015_create_sbom_component_versions.rb'
- - 'db/migrate/20220616183240_add_sbom_component_versions_foreign_key_to_sbom_occurrences.rb'
- - 'db/migrate/20220627061008_add_fei_shu_integration.rb'
- - 'db/migrate/20220627122230_add_foreign_keys_to_user_namespace_callouts.rb'
- - 'db/migrate/20220627171538_add_error_tracking_settings.rb'
- - 'db/migrate/20220704034050_add_users_allowlist_to_git_rate_limits.rb'
- - 'db/migrate/20220708150315_add_vulnerabilities_foreign_key_to_vulnerability_merge_request_links.rb'
- - 'db/migrate/20220718083945_add_unique_project_download_limit_allowlist_to_namespace_settings.rb'
- - 'db/migrate/20220726025516_add_namespace_settings_unique_project_download_limit_allowlist_size_constraint.rb'
- - 'db/migrate/20220726154015_add_component_foreign_key_to_sbom_occurrences.rb'
+ - 'db/migrate/20210604082145_create_external_status_checks_table.rb'
+ - 'db/migrate/20210609090856_add_expiry_id_ssh_key_notification_index.rb'
+ - 'db/migrate/20210709221051_create_work_item_types.rb'
+ - 'db/migrate/20210719182944_add_request_response_to_supporing_message.rb'
+ - 'db/migrate/20210901065504_add_index_on_name_and_id_to_public_groups.rb'
+ - 'db/migrate/20210910014741_add_dependency_proxy_ttl_group_policy_worker_capacity_to_application_settings.rb'
+ - 'db/migrate/20211111112639_add_fk_compliance_violations_merge_request.rb'
+ - 'db/migrate/20211111112713_add_fk_compliance_violations_violating_user.rb'
+ - 'db/migrate/20211224112937_add_packages_cleanup_package_file_worker_capacity_to_application_settings.rb'
+ - 'db/migrate/20220204154220_add_index_on_greatest_done_at_to_container_repositories.rb'
+ - 'db/migrate/20220314184009_create_protected_environment_approval_rules.rb'
+ - 'db/migrate/20220401113123_add_check_constraint_to_vsa_aggregation_runtime_data_columns.rb'
+ - 'db/migrate/20220405125459_add_non_migrated_index_to_container_repositories.rb'
+ - 'db/migrate/20220408001450_add_work_item_type_name_unique_index_null_namespaces.rb'
+ - 'db/migrate/20220413075921_update_index_on_packages_build_infos.rb'
+ - 'db/migrate/20220413164146_remove_max_seats_used_indices.rb'
+ - 'db/migrate/20220419223906_add_arkose_namespace_to_application_settings.rb'
+ - 'db/migrate/20220420173247_add_group_inheritance_type_to_pe_authorizable.rb'
+ - 'db/migrate/20220425120604_create_packages_cleanup_policies.rb'
+ - 'db/migrate/20220511144946_add_work_item_parent_child_table.rb'
+ - 'db/migrate/20220511191502_add_registry_migration_guard_thresholds_to_application_settings.rb'
+ - 'db/migrate/20220513093615_add_ding_talk_tracker_data.rb'
+ - 'db/migrate/20220513095545_create_timelog_categories.rb'
+ - 'db/migrate/20220520120637_add_installable_conan_packages_index_to_packages.rb'
+ - 'db/migrate/20220520144821_add_registry_migration_pre_import_tags_rate_to_application_settings.rb'
+ - 'db/migrate/20220524141800_create_audit_events_streaming_headers.rb'
+ - 'db/migrate/20220601101800_add_index_on_runner_id_and_semver_columns.rb'
+ - 'db/migrate/20220607011733_add_phone_verification_code_enabled_to_application_settings.rb'
+ - 'db/migrate/20220615091059_add_created_at_index_to_compliance_management_frameworks.rb'
+ - 'db/migrate/20220615105811_add_index_on_clusters_agent_project_id_and_has_vulnerabilities_columns.rb'
+ - 'db/migrate/20220617123135_drop_temp_index_on_projects_on_id_and_runners_token.rb'
+ - 'db/migrate/20220617123144_drop_temp_index_on_projects_on_id_and_runners_token_encrypted.rb'
+ - 'db/migrate/20220621202616_add_partial_index_on_oauth_access_tokens_revoked_at.rb'
+ - 'db/migrate/20220630202329_add_partial_index_on_oauth_access_tokens_revoked_at_with_order.rb'
+ - 'db/migrate/20220707181910_create_member_roles.rb'
+ - 'db/migrate/20220711142148_add_invitation_flow_enforcement_to_application_settings.rb'
+ - 'db/migrate/20220713175658_add_packages_cleanup_policies_worker_capacity_to_application_settings.rb'
+ - 'db/migrate/20220713175737_add_application_settings_packages_cleanup_policies_worker_capacity_constraint.rb'
+ - 'db/migrate/20220713175812_add_enabled_policies_index_to_packages_cleanup_policies.rb'
- 'db/migrate/20220726230052_remove_tmp_index_project_membership_namespace_id_column.rb'
- - 'db/migrate/20220803004853_add_auto_ban_user_to_namespace_settings.rb'
- - 'db/migrate/20220803235114_add_auto_ban_user_to_application_settings.rb'
- - 'db/migrate/20220805154101_add_allow_run_pipelines_in_the_parent_project_setting.rb'
- - 'db/migrate/20220907115806_add_security_orchestration_policy_configuration_id.rb'
- - 'db/migrate/20220915140802_create_merge_request_predictions.rb'
- - 'db/migrate/20220921201347_add_maven_package_requests_forwarding_to_namespace_package_settings.rb'
- - 'db/migrate/20220928201920_create_project_wiki_repository_states.rb'
- - 'db/migrate/20220929171925_add_pypi_package_requests_forwarding_to_namespace_package_settings.rb'
- - 'db/migrate/20220929172356_add_npm_package_requests_forwarding_to_namespace_package_settings.rb'
- - 'db/migrate/20221005094926_create_incident_management_timeline_event_tag_links.rb'
- - 'db/migrate/20221005103010_add_index_project_id_on_scan_finding_approval_project_rules.rb'
- - 'db/migrate/20221011162637_add_partial_index_project_incident_management_settings_on_project_id_and_sla_timer.rb'
- - 'db/migrate/20221018202524_create_dependency_proxy_blob_states.rb'
- - 'db/migrate/20221102150737_index_environments_for_name_search_within_folder.rb'
- - 'db/migrate/20221102195642_create_dependency_proxy_manifest_states.rb'
- - 'db/migrate/20221108185442_add_project_wiki_repository_id_to_project_wiki_repository_states.rb'
- - 'db/migrate/20221110150942_add_project_id_lower_name_index_remove_old_index.rb'
+ - 'db/migrate/20220811092245_create_ml_candidate_params.rb'
+ - 'db/migrate/20220811092246_create_ml_candidate_metrics.rb'
+ - 'db/migrate/20220816135816_create_sbom_vulnerable_component_versions.rb'
+ - 'db/migrate/20220824082427_remove_tmp_idx_vulnerability_occurrences_on_id_and_scanner_id.rb'
+ - 'db/migrate/20220828131848_create_packages_rpm_metadata.rb'
+ - 'db/migrate/20220913043728_create_user_phone_number_validations.rb'
+ - 'db/migrate/20220923103006_add_ci_pipeline_metadata_title.rb'
+ - 'db/migrate/20221003151747_create_audit_events_streaming_event_type_filters.rb'
+ - 'db/migrate/20221008032350_add_password_expiration_migration.rb'
+ - 'db/migrate/20221009085130_add_mr_checks_columns_to_namespace_settings.rb'
+ - 'db/migrate/20221014031033_add_temp_index_to_project_features_where_releases_access_level_gt_repository.rb'
+ - 'db/migrate/20221020124018_add_delete_started_at_to_container_repositories.rb'
+ - 'db/migrate/20221025043930_change_default_value_on_password_last_changed_at_to_user_details.rb'
+ - 'db/migrate/20221025145452_change_vulnerability_feedback_unique_idx.rb'
+ - 'db/migrate/20221103205317_create_dast_pre_scan_verification.rb'
+ - 'db/migrate/20221104061320_add_disable_download_button_into_application_settings.rb'
+ - 'db/migrate/20221111142921_add_hierarchy_restrictions.rb'
+ - 'db/migrate/20221116160204_create_ml_experiment_metadata_and_ml_candidate_metadata.rb'
+ - 'db/migrate/20221121091238_add_work_item_progress.rb'
+ - 'db/migrate/20221130170433_create_dast_pre_scan_verification_step.rb'
+ - 'db/migrate/20221202144210_create_achievements.rb'
+ - 'db/migrate/20221207220120_create_dast_scanner_profiles_runner_tags.rb'
+ - 'db/migrate/20221214201256_create_user_achievements.rb'
+ - 'db/migrate/20221221134116_create_elastic_group_index_statuses.rb'
+ - 'db/migrate/20221222144954_create_analytics_dashboards_configuration_pointers.rb'
+ - 'db/migrate/20230106184809_create_dast_profiles_tags.rb'
+ - 'db/migrate/20230109093043_create_namespaces_storage_limit_exclusions.rb'
+ - 'db/migrate/20230109121313_add_runner_machines_contacted_at_index.rb'
+ - 'db/migrate/20230117173433_create_project_data_transfer.rb'
+ - 'db/migrate/20230123095022_create_scan_result_policies.rb'
+ - 'db/migrate/20230124193917_add_index_for_protected_tag_create_access_levels.rb'
+ - 'db/migrate/20230127151529_add_project_pointer_for_analytics_dashboard.rb'
+ - 'db/migrate/20230127151531_change_dashboard_analytics_project_pointer_project_null.rb'
- 'db/post_migrate/20210611080951_fix_missing_traversal_ids.rb'
- 'db/post_migrate/20210622045705_finalize_events_bigint_conversion.rb'
- - 'db/post_migrate/20210701033622_finalize_ci_builds_needs_bigint_conversion.rb'
- - 'db/post_migrate/20210706212710_finalize_ci_job_artifacts_bigint_conversion.rb'
- - 'db/post_migrate/20210713042153_finalize_ci_sources_pipelines_bigint_conversion.rb'
+ - 'db/post_migrate/20210701141346_finalize_ci_builds_stage_id_bigint_conversion.rb'
+ - 'db/post_migrate/20210707210916_finalize_ci_stages_bigint_conversion.rb'
+ - 'db/post_migrate/20210708011426_finalize_ci_builds_metadata_bigint_conversion.rb'
+ - 'db/post_migrate/20210802043253_finalize_push_event_payloads_bigint_conversion_3.rb'
+ - 'db/post_migrate/20210804151444_prepare_indexes_for_ci_job_artifact_bigint_conversion.rb'
- 'db/post_migrate/20210804153307_prepare_indexes_for_tagging_bigint_conversion.rb'
- - 'db/post_migrate/20210809143931_finalize_job_id_conversion_to_bigint_for_ci_job_artifacts.rb'
+ - 'db/post_migrate/20210804154407_prepare_indexes_for_ci_stage_bigint_conversion.rb'
- 'db/post_migrate/20210817024335_prepare_indexes_for_events_bigint_conversion.rb'
- - 'db/post_migrate/20210901184511_prepare_async_indexes_for_ci_builds.rb'
- - 'db/post_migrate/20210915202900_prepare_index_resource_group_status_commit_id_for_ci_builds.rb'
- - 'db/post_migrate/20210922084115_concurrent_index_resource_group_status_commit_id_for_ci_builds.rb'
+ - 'db/post_migrate/20210824174615_prepare_ci_builds_metadata_and_ci_build_async_indexes.rb'
+ - 'db/post_migrate/20210921062820_add_image_location_index_to_vulnerability_occurrences.rb'
- 'db/post_migrate/20211007093340_remove_analytics_snapshots_segment_id_column.rb'
- - 'db/post_migrate/20211011104843_add_new_loose_fk_index.rb'
- - 'db/post_migrate/20211031152417_add_indexes_to_issue_stage_events.rb'
- - 'db/post_migrate/20211031154919_add_indexes_to_merge_request_stage_events.rb'
- - 'db/post_migrate/20211109112454_drop_old_loose_fk_deleted_records_index.rb'
- - 'db/post_migrate/20220310134207_add_index_project_id_and_released_at_and_id_on_releases.rb'
- - 'db/post_migrate/20220315171027_add_tmp_index_to_support_leaky_regex_cleanup.rb'
- - 'db/post_migrate/20220322035654_add_migration_plan_index_to_container_repositories.rb'
- - 'db/post_migrate/20220323152202_add_index_on_visible_deployments.rb'
- - 'db/post_migrate/20220404183350_add_forbidden_state_index_to_users.rb'
- - 'db/post_migrate/20220412143551_add_partial_index_on_unencrypted_integrations.rb'
- - 'db/post_migrate/20220413011328_remove_partial_index_on_unencrypted_integrations.rb'
- - 'db/post_migrate/20220420214703_schedule_backfill_draft_status_on_merge_requests_corrected_regex.rb'
+ - 'db/post_migrate/20211021140426_remove_geo_upload_deprecated_fields.rb'
+ - 'db/post_migrate/20211022112202_add_cluster_id_location_index_to_vulnerability_occurrences.rb'
+ - 'db/post_migrate/20211027112901_drop_index_keys_on_expires_at_and_before_expiry_notification_undelivered.rb'
+ - 'db/post_migrate/20211102114802_update_vulnerability_occurrences_location.rb'
+ - 'db/post_migrate/20211118194239_drop_invalid_remediations.rb'
+ - 'db/post_migrate/20211213064821_add_agent_id_location_index_to_vulnerability_occurrences.rb'
+ - 'db/post_migrate/20211217120000_modify_kubernetes_resource_location_index_to_vulnerability_occurrences.rb'
+ - 'db/post_migrate/20220207080758_update_api_indexes_for_projects.rb'
+ - 'db/post_migrate/20220216201949_remove_package_files_limit_from_application_settings.rb'
+ - 'db/post_migrate/20220307192534_create_index_for_remove_duplicate_project_tag_releases.rb'
+ - 'db/post_migrate/20220307192645_remove_index_for_remove_duplicate_project_tag_releases.rb'
+ - 'db/post_migrate/20220307192725_create_unique_index_release_tag_project.rb'
+ - 'db/post_migrate/20220415124802_remove_job_artifact_deprecated_geo_fields.rb'
- 'db/post_migrate/20220425121435_backfill_integrations_enable_ssl_verification.rb'
- - 'db/post_migrate/20220503134610_remove_requirements_management_test_reports_requirement_id.rb'
- - 'db/post_migrate/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints.rb'
- - 'db/post_migrate/20220525172001_migrate_cluster_integration_worker_queues.rb'
- - 'db/post_migrate/20220530044712_add_index_for_vulnerability_reads_location_image.rb'
- - 'db/post_migrate/20220610223040_add_index_on_available_pypi_packages.rb'
- - 'db/post_migrate/20220621082245_remove_tmp_index_on_routes_namespace_id_column.rb'
- - 'db/post_migrate/20220622070547_add_temp_index_for_container_registry_size_migration.rb'
- - 'db/post_migrate/20220628110823_add_issues_namespace_id_fk_and_index.rb'
- - 'db/post_migrate/20220630050050_index_vulnerability_reads_on_casted_cluster_agent_id_full.rb'
- - 'db/post_migrate/20220630085003_drop_project_successfull_pages_deploy_index_from_ci_builds.rb'
- - 'db/post_migrate/20220704044408_remove_foreign_key_in_project_tracing_settings.rb'
- - 'db/post_migrate/20220706065245_remove_foreign_key_in_clusters_applications_elastic_stacks.rb'
- - 'db/post_migrate/20220706065611_remove_foreign_key_in_clusters_integration_elasticstack.rb'
- - 'db/post_migrate/20220707192420_remove_tmp_idx_merge_requests_draft_and_status.rb'
- - 'db/post_migrate/20220715054506_add_parent_link_unique_work_item_index.rb'
- - 'db/post_migrate/20220721140252_prepare_partial_trigram_indexes_for_issues.rb'
+ - 'db/post_migrate/20220523164734_add_foreign_key_to_vulnerability_reads_casted_cluster_agent_id.rb'
+ - 'db/post_migrate/20220526042017_remove_geo_lfs_object_deleted_event_references.rb'
+ - 'db/post_migrate/20220603173103_update_vulnerabilities_project_id_id_index.rb'
+ - 'db/post_migrate/20220606054503_add_tmp_index_job_artifacts_id_and_expire_at.rb'
+ - 'db/post_migrate/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences.rb'
+ - 'db/post_migrate/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences.rb'
+ - 'db/post_migrate/20220614185644_update_index_vulnerabilities_project_id_id.rb'
+ - 'db/post_migrate/20220616171355_update_vulnerabilities_project_id_id_active_cis_index.rb'
+ - 'db/post_migrate/20220617123022_add_unique_index_on_projects_on_runners_token.rb'
+ - 'db/post_migrate/20220617123034_add_unique_index_on_projects_on_runners_token_encrypted.rb'
+ - 'db/post_migrate/20220617123105_drop_index_on_projects_on_runners_token.rb'
+ - 'db/post_migrate/20220617123113_drop_index_on_projects_on_runners_token_encrypted.rb'
+ - 'db/post_migrate/20220617142124_add_index_on_installable_package_files.rb'
+ - 'db/post_migrate/20220617143228_replace_packages_index_on_project_id_and_status.rb'
+ - 'db/post_migrate/20220621192541_add_project_id_state_severity_default_branch_index_for_vulnerabilities.rb'
+ - 'db/post_migrate/20220720171102_add_index_on_vulnerability_reads_namespace_id.rb'
- 'db/post_migrate/20220726225114_remove_tmp_index_group_membership_namespace_id_column.rb'
- - 'db/post_migrate/20220801144713_add_partial_trigram_index_for_issue_title.rb'
- - 'db/post_migrate/20220801150028_add_partial_trigram_index_for_issue_description.rb'
- - 'db/post_migrate/20220803042351_add_tmp_index_todos_attention_request_action.rb'
+ - 'db/post_migrate/20220729033851_add_partial_legacy_open_source_license_available_index.rb'
+ - 'db/post_migrate/20220729052031_add_index_on_vulnerability_reads_namespace_id_with_report_type.rb'
+ - 'db/post_migrate/20220802132158_index_on_integration_type_new_id_when_active_and_has_group.rb'
- 'db/post_migrate/20220810093742_add_async_tmp_index_job_artifacts_id_and_expire_at.rb'
- - 'db/post_migrate/20220824114218_add_tmp_index_approval_merge_request_rules.rb'
- - 'db/post_migrate/20220825061250_drop_tmp_index_todos_attention_request_action_idx.rb'
- - 'db/post_migrate/20220901071310_add_tmp_index_user_callouts_on_attention_request_feature_names.rb'
- - 'db/post_migrate/20220901073300_remove_partial_trigram_indexes_for_issues.rb'
- - 'db/post_migrate/20220905090300_add_tmp_index_merge_request_reviewers_attention_request_state.rb'
- - 'db/post_migrate/20220913030552_add_tmp_index_system_note_metadata_on_attention_request_actions.rb'
- - 'db/post_migrate/20220915192521_prepare_async_trigram_index_for_vulnerability_reads_container_images.rb'
+ - 'db/post_migrate/20220820221036_update_tmp_non_migrated_index_on_container_repositories.rb'
+ - 'db/post_migrate/20220826152430_remove_container_repository_deprecated_geo_fields.rb'
+ - 'db/post_migrate/20220826152432_remove_container_repository_updated_events.rb'
- 'db/post_migrate/20220916112841_remove_unused_aggregation_columns.rb'
- - 'db/post_migrate/20220919023208_drop_unused_fields_from_merge_request_assignees.rb'
- - 'db/post_migrate/20220919041604_drop_unused_fields_from_merge_request_reviewers.rb'
- - 'db/post_migrate/20220919050555_drop_tmp_index_user_callouts_on_attention_request_feature_names.rb'
- - 'db/post_migrate/20220923052531_remove_tmp_index_merge_request_reviewers_on_attention_requested_state.rb'
- - 'db/post_migrate/20220923060226_remove_tmp_index_system_note_metadata_on_attention_request_actions.rb'
+ - 'db/post_migrate/20220919080303_delete_migrate_shared_vulnerability_scanners.rb'
- 'db/post_migrate/20220929081645_tmp_idx_null_member_namespace_id.rb'
- - 'db/post_migrate/20220929091500_add_tmp_index_vulns_on_report_type.rb'
+ - 'db/post_migrate/20221003192827_add_index_resolved_on_default_branch_to_vulnerabilities_read.rb'
- 'db/post_migrate/20221004092038_tmp_index_members_on_id_where_namespace_id_null.rb'
- - 'db/post_migrate/20221005103000_add_index_merge_request_id_on_scan_finding_approval_merge_request_rules.rb'
- - 'db/post_migrate/20221006083240_prepare_partial_trigram_indexes_for_issues_attempt_2.rb'
- - 'db/post_migrate/20221019102426_remove_tmp_index_approval_merge_request_rules_on_report_type.rb'
- - 'db/post_migrate/20221024034228_remove_sprints_project_id_column.rb'
- - 'db/post_migrate/20221025220607_add_index_id_on_scan_finding_approval_merge_request_rules.rb'
- - 'db/post_migrate/20221028000603_prepare_partial_trigram_indexes_for_issues_attempt_3.rb'
- - 'db/post_migrate/20221104042137_add_partial_trigram_index_for_issue_title_attempt_2.rb'
- - 'db/post_migrate/20221104042159_add_partial_trigram_index_for_issue_description_attempt_2.rb'
- - 'db/post_migrate/20221104074652_add_temp_index_for_project_statistics_upload_size_migration.rb'
- - 'db/post_migrate/20221104100203_recreate_async_trigram_index_for_vulnerability_reads_container_images.rb'
- - 'db/post_migrate/20221115120602_add_index_for_issues_health_status_ordering.rb'
- - 'db/post_migrate/20221117153015_add_index_merge_request_id_created_at_on_scan_finding_approval_merge_request_rules.rb'
- - 'ee/app/controllers/concerns/insights_actions.rb'
- - 'ee/app/controllers/customers_dot/proxy_controller.rb'
- - 'ee/app/controllers/ee/admin/dev_ops_report_controller.rb'
+ - 'db/post_migrate/20221010123040_add_compliance_framework_fk_to_namespace_settings.rb'
+ - 'db/post_migrate/20221021082255_add_unique_index_on_ci_runners_token.rb'
+ - 'db/post_migrate/20221021082312_add_unique_index_on_ci_runners_token_encrypted.rb'
+ - 'db/post_migrate/20221021082720_drop_index_on_ci_runners_token.rb'
+ - 'db/post_migrate/20221021082734_drop_index_on_ci_runners_token_encrypted.rb'
+ - 'db/post_migrate/20221021160735_add_index_for_common_finder_query_desc_with_namespace_id.rb'
+ - 'db/post_migrate/20221108222015_remove_temp_index_on_project_features_where_releases_access_level_gt_repository.rb'
+ - 'db/post_migrate/20221110190340_add_partial_legacy_open_source_license_available_project_id_index.rb'
+ - 'db/post_migrate/20221114142044_delete_experiments_foreign_keys.rb'
+ - 'db/post_migrate/20221116105434_remove_index_project_settings_on_legacy_open_source_license_available.rb'
+ - 'db/post_migrate/20221205170310_add_index_for_active_members.rb'
+ - 'db/post_migrate/20230104103748_remove_new_amount_used_column.rb'
+ - 'db/post_migrate/20230104150601_prepare_builds_metadata_async_idx.rb'
+ - 'db/post_migrate/20230104222514_add_foreign_key_to_builds_metadata.rb'
+ - 'db/post_migrate/20230104224020_drop_vuln_reads_on_default_branch_index.rb'
+ - 'db/post_migrate/20230105180002_remove_new_amount_used_column_on_ci_namespace_monthly_usages.rb'
+ - 'db/post_migrate/20230119123908_add_temporary_size_index_to_package_files.rb'
+ - 'db/post_migrate/20230123095023_add_scan_result_policy_id_to_software_license_policies.rb'
+ - 'db/post_migrate/20230124104310_prepare_web_hook_logs_id_created_at_async_index.rb'
+ - 'db/post_migrate/20230130070623_add_index_on_packages_package_file_file_name.rb'
+ - 'ee/app/components/namespaces/free_user_cap/base_alert_component.rb'
+ - 'ee/app/components/namespaces/free_user_cap/enforcement_at_limit_alert_component.rb'
+ - 'ee/app/components/namespaces/free_user_cap/shared.rb'
+ - 'ee/app/controllers/admin/credentials_controller.rb'
+ - 'ee/app/controllers/concerns/ee/analytics/cycle_analytics/stage_actions.rb'
- 'ee/app/controllers/ee/groups_controller.rb'
- 'ee/app/controllers/ee/passwords_controller.rb'
- - 'ee/app/controllers/groups/analytics/devops_adoption_controller.rb'
- - 'ee/app/controllers/groups/analytics/productivity_analytics_controller.rb'
- - 'ee/app/controllers/groups/contribution_analytics_controller.rb'
- - 'ee/app/controllers/groups/insights_controller.rb'
- - 'ee/app/controllers/groups/issues_analytics_controller.rb'
+ - 'ee/app/controllers/ee/registrations_controller.rb'
+ - 'ee/app/controllers/ee/search_controller.rb'
+ - 'ee/app/controllers/groups/analytics/ci_cd_analytics_controller.rb'
+ - 'ee/app/controllers/groups/analytics/cycle_analytics_controller.rb'
+ - 'ee/app/controllers/groups/saml_group_links_controller.rb'
+ - 'ee/app/controllers/groups/security/credentials_controller.rb'
- 'ee/app/controllers/groups/two_factor_auths_controller.rb'
- - 'ee/app/controllers/projects/analytics/code_reviews_controller.rb'
- - 'ee/app/controllers/projects/analytics/issues_analytics_controller.rb'
- - 'ee/app/controllers/projects/analytics/merge_request_analytics_controller.rb'
- - 'ee/app/controllers/projects/insights_controller.rb'
- - 'ee/app/controllers/projects/integrations/jira/issues_controller.rb'
+ - 'ee/app/controllers/omniauth_kerberos_controller.rb'
+ - 'ee/app/controllers/projects/integrations/zentao/issues_controller.rb'
+ - 'ee/app/controllers/registrations/groups_projects_controller.rb'
- 'ee/app/controllers/subscriptions_controller.rb'
- - 'ee/app/finders/geo/registry_finder.rb'
+ - 'ee/app/controllers/trials_controller.rb'
+ - 'ee/app/finders/security/findings_finder.rb'
+ - 'ee/app/finders/security/training_providers/base_url_finder.rb'
+ - 'ee/app/graphql/ee/mutations/alert_management/http_integration/create.rb'
+ - 'ee/app/graphql/ee/mutations/alert_management/http_integration/update.rb'
- 'ee/app/graphql/ee/mutations/boards/issues/issue_move_list.rb'
- - 'ee/app/graphql/ee/mutations/ci/project_ci_cd_settings_update.rb'
- - 'ee/app/graphql/ee/resolvers/clusters/agents_resolver.rb'
+ - 'ee/app/graphql/ee/mutations/boards/lists/create.rb'
+ - 'ee/app/graphql/ee/mutations/ci/runner/update.rb'
+ - 'ee/app/graphql/ee/mutations/issues/create.rb'
+ - 'ee/app/graphql/ee/mutations/issues/update.rb'
+ - 'ee/app/graphql/ee/mutations/work_items/create.rb'
+ - 'ee/app/graphql/ee/mutations/work_items/update.rb'
+ - 'ee/app/graphql/ee/resolvers/issues/base_parent_resolver.rb'
- 'ee/app/graphql/ee/resolvers/issues/base_resolver.rb'
- - 'ee/app/graphql/ee/types/board_list_type.rb'
- - 'ee/app/graphql/ee/types/board_type.rb'
+ - 'ee/app/graphql/ee/resolvers/namespace_projects_resolver.rb'
+ - 'ee/app/graphql/ee/resolvers/work_items_resolver.rb'
+ - 'ee/app/graphql/ee/types/alert_management/http_integration_type.rb'
+ - 'ee/app/graphql/ee/types/boards/board_issue_input_base_type.rb'
- 'ee/app/graphql/ee/types/boards/board_issue_input_type.rb'
- - 'ee/app/graphql/ee/types/ci/pipeline_type.rb'
- - 'ee/app/graphql/ee/types/ci/runner_type.rb'
- - 'ee/app/graphql/ee/types/deprecated_mutations.rb'
+ - 'ee/app/graphql/ee/types/boards/negated_board_issue_input_type.rb'
+ - 'ee/app/graphql/ee/types/branch_protections/base_access_level_type.rb'
+ - 'ee/app/graphql/ee/types/branch_rules/branch_protection_type.rb'
+ - 'ee/app/graphql/ee/types/ci/runner_countable_connection_type.rb'
+ - 'ee/app/graphql/ee/types/clusters/agent_type.rb'
+ - 'ee/app/graphql/ee/types/deployment_type.rb'
+ - 'ee/app/graphql/ee/types/environment_type.rb'
- 'ee/app/graphql/ee/types/group_type.rb'
- - 'ee/app/graphql/ee/types/issue_type.rb'
- - 'ee/app/graphql/ee/types/merge_request_type.rb'
+ - 'ee/app/graphql/ee/types/issues/negated_issue_filter_input_type.rb'
+ - 'ee/app/graphql/ee/types/namespace_type.rb'
+ - 'ee/app/graphql/ee/types/permission_types/deployment.rb'
+ - 'ee/app/graphql/ee/types/project_type.rb'
+ - 'ee/app/graphql/ee/types/projects/branch_rule_type.rb'
- 'ee/app/graphql/ee/types/query_type.rb'
- - 'ee/app/graphql/ee/types/repository/blob_type.rb'
- - 'ee/app/graphql/mutations/app_sec/fuzzing/api/ci_configuration/create.rb'
+ - 'ee/app/graphql/ee/types/subscription_type.rb'
+ - 'ee/app/graphql/ee/types/user_merge_request_interaction_type.rb'
+ - 'ee/app/graphql/mutations/analytics/devops_adoption/enabled_namespaces/bulk_enable.rb'
+ - 'ee/app/graphql/mutations/analytics/devops_adoption/enabled_namespaces/disable.rb'
+ - 'ee/app/graphql/mutations/analytics/devops_adoption/enabled_namespaces/enable.rb'
+ - 'ee/app/graphql/mutations/app_sec/dast/site_profiles/shared_arguments.rb'
- 'ee/app/graphql/mutations/app_sec/fuzzing/coverage/corpus/create.rb'
+ - 'ee/app/graphql/mutations/audit_events/external_audit_event_destinations/create.rb'
+ - 'ee/app/graphql/mutations/audit_events/external_audit_event_destinations/destroy.rb'
+ - 'ee/app/graphql/mutations/audit_events/external_audit_event_destinations/update.rb'
+ - 'ee/app/graphql/mutations/audit_events/streaming/event_type_filters/create.rb'
+ - 'ee/app/graphql/mutations/audit_events/streaming/event_type_filters/destroy.rb'
+ - 'ee/app/graphql/mutations/audit_events/streaming/headers/create.rb'
+ - 'ee/app/graphql/mutations/audit_events/streaming/headers/destroy.rb'
+ - 'ee/app/graphql/mutations/audit_events/streaming/headers/update.rb'
+ - 'ee/app/graphql/mutations/boards/epic_boards/create.rb'
+ - 'ee/app/graphql/mutations/boards/epic_boards/destroy.rb'
- 'ee/app/graphql/mutations/boards/epic_boards/epic_move_list.rb'
+ - 'ee/app/graphql/mutations/boards/epic_boards/update.rb'
+ - 'ee/app/graphql/mutations/boards/epic_lists/create.rb'
+ - 'ee/app/graphql/mutations/boards/epic_lists/destroy.rb'
- 'ee/app/graphql/mutations/boards/epic_lists/update.rb'
- - 'ee/app/graphql/mutations/ci/namespace_ci_cd_settings_update.rb'
+ - 'ee/app/graphql/mutations/boards/epics/create.rb'
+ - 'ee/app/graphql/mutations/boards/lists/update_limit_metrics.rb'
+ - 'ee/app/graphql/mutations/boards/scoped_board_mutation.rb'
+ - 'ee/app/graphql/mutations/boards/scoped_issue_board_arguments.rb'
+ - 'ee/app/graphql/mutations/boards/update_epic_user_preferences.rb'
+ - 'ee/app/graphql/mutations/compliance_management/frameworks/create.rb'
+ - 'ee/app/graphql/mutations/compliance_management/frameworks/destroy.rb'
+ - 'ee/app/graphql/mutations/compliance_management/frameworks/update.rb'
+ - 'ee/app/graphql/mutations/concerns/mutations/finds_project_or_group_for_security_policies.rb'
- 'ee/app/graphql/mutations/concerns/mutations/shared_epic_arguments.rb'
- 'ee/app/graphql/mutations/dast/profiles/create.rb'
+ - 'ee/app/graphql/mutations/dast/profiles/delete.rb'
+ - 'ee/app/graphql/mutations/dast/profiles/run.rb'
+ - 'ee/app/graphql/mutations/dast/profiles/update.rb'
+ - 'ee/app/graphql/mutations/dast_on_demand_scans/create.rb'
- 'ee/app/graphql/mutations/dast_scanner_profiles/create.rb'
+ - 'ee/app/graphql/mutations/dast_scanner_profiles/delete.rb'
+ - 'ee/app/graphql/mutations/dast_scanner_profiles/update.rb'
+ - 'ee/app/graphql/mutations/dast_site_profiles/create.rb'
+ - 'ee/app/graphql/mutations/dast_site_profiles/delete.rb'
+ - 'ee/app/graphql/mutations/dast_site_profiles/update.rb'
+ - 'ee/app/graphql/mutations/dast_site_tokens/create.rb'
+ - 'ee/app/graphql/mutations/dast_site_validations/create.rb'
+ - 'ee/app/graphql/mutations/dast_site_validations/revoke.rb'
+ - 'ee/app/graphql/mutations/epic_tree/reorder.rb'
+ - 'ee/app/graphql/mutations/epics/add_issue.rb'
+ - 'ee/app/graphql/mutations/epics/base.rb'
+ - 'ee/app/graphql/mutations/epics/create.rb'
+ - 'ee/app/graphql/mutations/epics/set_subscription.rb'
- 'ee/app/graphql/mutations/epics/update.rb'
+ - 'ee/app/graphql/mutations/gitlab_subscriptions/activate.rb'
+ - 'ee/app/graphql/mutations/incident_management/escalation_policy/base.rb'
+ - 'ee/app/graphql/mutations/incident_management/escalation_policy/create.rb'
+ - 'ee/app/graphql/mutations/incident_management/escalation_policy/destroy.rb'
+ - 'ee/app/graphql/mutations/incident_management/escalation_policy/update.rb'
+ - 'ee/app/graphql/mutations/incident_management/issuable_resource_link/base.rb'
- 'ee/app/graphql/mutations/incident_management/issuable_resource_link/create.rb'
- 'ee/app/graphql/mutations/incident_management/issuable_resource_link/destroy.rb'
- - 'ee/app/graphql/mutations/iterations/cadences/create.rb'
- - 'ee/app/graphql/mutations/iterations/cadences/update.rb'
- - 'ee/app/graphql/mutations/iterations/delete.rb'
- - 'ee/app/graphql/mutations/projects/set_locked.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_rotation/base.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_rotation/create.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_rotation/destroy.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_rotation/update.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_schedule/create.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_schedule/destroy.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_schedule/oncall_schedule_base.rb'
+ - 'ee/app/graphql/mutations/incident_management/oncall_schedule/update.rb'
+ - 'ee/app/graphql/mutations/instance_security_dashboard/add_project.rb'
+ - 'ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb'
+ - 'ee/app/graphql/mutations/issues/common_ee_mutation_arguments.rb'
+ - 'ee/app/graphql/mutations/issues/promote_to_epic.rb'
+ - 'ee/app/graphql/mutations/issues/set_epic.rb'
+ - 'ee/app/graphql/mutations/issues/set_escalation_policy.rb'
+ - 'ee/app/graphql/mutations/issues/set_iteration.rb'
+ - 'ee/app/graphql/mutations/issues/set_weight.rb'
+ - 'ee/app/graphql/mutations/iterations/cadences/destroy.rb'
+ - 'ee/app/graphql/mutations/iterations/create.rb'
+ - 'ee/app/graphql/mutations/iterations/update.rb'
+ - 'ee/app/graphql/mutations/namespaces/base.rb'
+ - 'ee/app/graphql/mutations/projects/initialize_product_analytics.rb'
+ - 'ee/app/graphql/mutations/projects/set_compliance_framework.rb'
+ - 'ee/app/graphql/mutations/quality_management/test_cases/create.rb'
+ - 'ee/app/graphql/mutations/requirements_management/base_requirement.rb'
+ - 'ee/app/graphql/mutations/requirements_management/export_requirements.rb'
- 'ee/app/graphql/mutations/requirements_management/update_requirement.rb'
- 'ee/app/graphql/mutations/security/finding/create_issue.rb'
- 'ee/app/graphql/mutations/security/finding/dismiss.rb'
+ - 'ee/app/graphql/mutations/security/finding/revert_to_detected.rb'
+ - 'ee/app/graphql/mutations/security/training_provider_update.rb'
+ - 'ee/app/graphql/mutations/security_policy/assign_security_policy_project.rb'
+ - 'ee/app/graphql/mutations/security_policy/commit_scan_execution_policy.rb'
+ - 'ee/app/graphql/mutations/security_policy/create_security_policy_project.rb'
+ - 'ee/app/graphql/mutations/security_policy/unassign_security_policy_project.rb'
- 'ee/app/graphql/mutations/users/abuse/namespace_bans/destroy.rb'
- - 'ee/app/graphql/mutations/vulnerabilities/create.rb'
+ - 'ee/app/graphql/mutations/vulnerabilities/confirm.rb'
+ - 'ee/app/graphql/mutations/vulnerabilities/create_external_issue_link.rb'
+ - 'ee/app/graphql/mutations/vulnerabilities/destroy_external_issue_link.rb'
+ - 'ee/app/graphql/mutations/vulnerabilities/dismiss.rb'
- 'ee/app/graphql/mutations/vulnerabilities/finding/dismiss.rb'
+ - 'ee/app/graphql/mutations/vulnerabilities/resolve.rb'
+ - 'ee/app/graphql/mutations/vulnerabilities/revert_to_detected.rb'
+ - 'ee/app/graphql/resolvers/alert_management/payload_alert_field_resolver.rb'
+ - 'ee/app/graphql/resolvers/analytics/contribution_analytics/contributions_resolver.rb'
+ - 'ee/app/graphql/resolvers/analytics/devops_adoption/enabled_namespaces_resolver.rb'
+ - 'ee/app/graphql/resolvers/analytics/devops_adoption/snapshots_resolver.rb'
+ - 'ee/app/graphql/resolvers/app_sec/dast/profile_resolver.rb'
+ - 'ee/app/graphql/resolvers/board_groupings/epics_resolver.rb'
- 'ee/app/graphql/resolvers/boards/board_list_epics_resolver.rb'
- - 'ee/app/graphql/resolvers/boards/epic_list_resolver.rb'
+ - 'ee/app/graphql/resolvers/boards/epic_boards_resolver.rb'
+ - 'ee/app/graphql/resolvers/boards/epic_lists_resolver.rb'
- 'ee/app/graphql/resolvers/ci/code_coverage_activities_resolver.rb'
+ - 'ee/app/graphql/resolvers/compliance_management/framework_resolver.rb'
+ - 'ee/app/graphql/resolvers/compliance_management/merge_requests/compliance_violation_resolver.rb'
- 'ee/app/graphql/resolvers/concerns/common_requirement_arguments.rb'
+ - 'ee/app/graphql/resolvers/dast_site_profile_resolver.rb'
+ - 'ee/app/graphql/resolvers/dast_site_validation_resolver.rb'
+ - 'ee/app/graphql/resolvers/dora_metrics_resolver.rb'
+ - 'ee/app/graphql/resolvers/epic_ancestors_resolver.rb'
+ - 'ee/app/graphql/resolvers/epics/children_resolver.rb'
+ - 'ee/app/graphql/resolvers/epics_resolver.rb'
+ - 'ee/app/graphql/resolvers/geo/geo_node_resolver.rb'
+ - 'ee/app/graphql/resolvers/geo/registries_resolver.rb'
- 'ee/app/graphql/resolvers/gitlab_subscriptions/preview_billable_user_change_resolver.rb'
- - 'ee/app/graphql/resolvers/iterations/cadences_resolver.rb'
+ - 'ee/app/graphql/resolvers/incident_management/escalation_policies_resolver.rb'
+ - 'ee/app/graphql/resolvers/incident_management/issuable_resource_links_resolver.rb'
+ - 'ee/app/graphql/resolvers/incident_management/oncall_rotations_resolver.rb'
+ - 'ee/app/graphql/resolvers/incident_management/oncall_schedule_resolver.rb'
+ - 'ee/app/graphql/resolvers/incident_management/oncall_shifts_resolver.rb'
+ - 'ee/app/graphql/resolvers/instance_security_dashboard/projects_resolver.rb'
- 'ee/app/graphql/resolvers/iterations_resolver.rb'
+ - 'ee/app/graphql/resolvers/network_policy_resolver.rb'
+ - 'ee/app/graphql/resolvers/pipeline_security_report_findings_resolver.rb'
+ - 'ee/app/graphql/resolvers/product_analytics/dashboards_resolver.rb'
+ - 'ee/app/graphql/resolvers/requirements_management/requirements_resolver.rb'
+ - 'ee/app/graphql/resolvers/requirements_management/test_reports_resolver.rb'
+ - 'ee/app/graphql/resolvers/security_orchestration/scan_execution_policy_resolver.rb'
+ - 'ee/app/graphql/resolvers/security_orchestration/scan_result_policy_resolver.rb'
+ - 'ee/app/graphql/resolvers/security_report/finding_resolver.rb'
+ - 'ee/app/graphql/resolvers/security_training_providers_resolver.rb'
- 'ee/app/graphql/resolvers/security_training_urls_resolver.rb'
- - 'ee/app/graphql/resolvers/vulnerabilities_count_per_day_resolver.rb'
+ - 'ee/app/graphql/resolvers/timebox_report_resolver.rb'
+ - 'ee/app/graphql/resolvers/vulnerabilities/issue_links_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerabilities_grade_resolver.rb'
- - 'ee/app/graphql/types/access_levels/group_type.rb'
- - 'ee/app/graphql/types/access_levels/user_type.rb'
- - 'ee/app/graphql/types/admin/cloud_licenses/current_license_type.rb'
- - 'ee/app/graphql/types/admin/cloud_licenses/license_type.rb'
- - 'ee/app/graphql/types/admin/cloud_licenses/subscription_future_entry_type.rb'
+ - 'ee/app/graphql/resolvers/vulnerabilities_resolver.rb'
+ - 'ee/app/graphql/resolvers/vulnerability_severities_count_resolver.rb'
- 'ee/app/graphql/types/alert_management/payload_alert_field_input_type.rb'
+ - 'ee/app/graphql/types/alert_management/payload_alert_field_type.rb'
+ - 'ee/app/graphql/types/alert_management/payload_alert_mapping_field_type.rb'
- 'ee/app/graphql/types/analytics/contribution_analytics/contribution_metadata_type.rb'
- - 'ee/app/graphql/types/analytics/devops_adoption/enabled_namespace_type.rb'
- - 'ee/app/graphql/types/analytics/devops_adoption/snapshot_type.rb'
- - 'ee/app/graphql/types/app_sec/fuzzing/api/ci_configuration_type.rb'
- - 'ee/app/graphql/types/app_sec/fuzzing/api/scan_profile_type.rb'
- - 'ee/app/graphql/types/app_sec/fuzzing/coverage/corpus_type.rb'
- - 'ee/app/graphql/types/boards/epic_board_type.rb'
- - 'ee/app/graphql/types/boards/epic_list_type.rb'
- - 'ee/app/graphql/types/boards/epic_user_preferences_type.rb'
- - 'ee/app/graphql/types/burnup_chart_daily_totals_type.rb'
- - 'ee/app/graphql/types/ci/code_quality_degradation_type.rb'
- - 'ee/app/graphql/types/ci/namespace_ci_cd_setting_type.rb'
- - 'ee/app/graphql/types/compliance_management/merge_requests/compliance_violation_type.rb'
+ - 'ee/app/graphql/types/approval_rule_type.rb'
+ - 'ee/app/graphql/types/audit_events/external_audit_event_destination_type.rb'
+ - 'ee/app/graphql/types/audit_events/streaming/header_type.rb'
+ - 'ee/app/graphql/types/boards/board_epic_input_type.rb'
+ - 'ee/app/graphql/types/boards/board_epic_type.rb'
+ - 'ee/app/graphql/types/boards/epic_list_metadata_type.rb'
+ - 'ee/app/graphql/types/branch_rules/approval_project_rule_type.rb'
+ - 'ee/app/graphql/types/branch_rules/external_status_check_type.rb'
+ - 'ee/app/graphql/types/ci/code_coverage_activity_type.rb'
+ - 'ee/app/graphql/types/ci/code_coverage_summary_type.rb'
+ - 'ee/app/graphql/types/ci/jobs_duration_statistics_type.rb'
+ - 'ee/app/graphql/types/ci/jobs_statistics_type.rb'
+ - 'ee/app/graphql/types/ci/minutes/namespace_monthly_usage_type.rb'
+ - 'ee/app/graphql/types/ci/minutes/project_monthly_usage_type.rb'
+ - 'ee/app/graphql/types/compliance_management/compliance_framework_input_type.rb'
+ - 'ee/app/graphql/types/compliance_management/compliance_framework_type.rb'
+ - 'ee/app/graphql/types/compliance_management/merge_requests/compliance_violation_input_type.rb'
+ - 'ee/app/graphql/types/dast/pre_scan_verification_status_enum.rb'
+ - 'ee/app/graphql/types/dast/pre_scan_verification_step_type.rb'
+ - 'ee/app/graphql/types/dast/pre_scan_verification_type.rb'
+ - 'ee/app/graphql/types/dast/profile_branch_type.rb'
- 'ee/app/graphql/types/dast/profile_cadence_input_type.rb'
+ - 'ee/app/graphql/types/dast/profile_cadence_type.rb'
- 'ee/app/graphql/types/dast/profile_schedule_input_type.rb'
- - 'ee/app/graphql/types/dast/profile_schedule_type.rb'
- 'ee/app/graphql/types/dast/profile_type.rb'
+ - 'ee/app/graphql/types/dast/site_profile_auth_input_type.rb'
+ - 'ee/app/graphql/types/dast/site_profile_auth_type.rb'
- 'ee/app/graphql/types/dast_scanner_profile_type.rb'
- 'ee/app/graphql/types/dast_site_profile_type.rb'
- 'ee/app/graphql/types/dast_site_validation_type.rb'
- - 'ee/app/graphql/types/dora_type.rb'
- - 'ee/app/graphql/types/epic_issue_type.rb'
+ - 'ee/app/graphql/types/deployments/approval_status_enum.rb'
+ - 'ee/app/graphql/types/deployments/approval_summary_status_enum.rb'
+ - 'ee/app/graphql/types/deployments/approval_summary_type.rb'
+ - 'ee/app/graphql/types/deployments/approval_type.rb'
+ - 'ee/app/graphql/types/epic_descendant_weight_sum_type.rb'
+ - 'ee/app/graphql/types/epic_tree/epic_tree_node_input_type.rb'
- 'ee/app/graphql/types/epic_type.rb'
+ - 'ee/app/graphql/types/epics/negated_epic_filter_input_type.rb'
+ - 'ee/app/graphql/types/epics/unioned_epic_filter_input_type.rb'
- 'ee/app/graphql/types/external_issue_type.rb'
- - 'ee/app/graphql/types/geo/dependency_proxy_manifest_registry_type.rb'
- - 'ee/app/graphql/types/incident_management/escalation_rule_input_type.rb'
+ - 'ee/app/graphql/types/geo/geo_node_type.rb'
+ - 'ee/app/graphql/types/gitlab_subscriptions/preview_billable_user_change_type.rb'
+ - 'ee/app/graphql/types/group_release_stats_type.rb'
+ - 'ee/app/graphql/types/group_stats_type.rb'
+ - 'ee/app/graphql/types/incident_management/escalation_policy_type.rb'
+ - 'ee/app/graphql/types/incident_management/escalation_rule_type.rb'
+ - 'ee/app/graphql/types/incident_management/issuable_resource_link_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_participant_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_active_period_input_type.rb'
+ - 'ee/app/graphql/types/incident_management/oncall_rotation_active_period_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_date_input_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_rotation_length_input_type.rb'
+ - 'ee/app/graphql/types/incident_management/oncall_rotation_type.rb'
+ - 'ee/app/graphql/types/incident_management/oncall_schedule_type.rb'
+ - 'ee/app/graphql/types/incident_management/oncall_shift_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_user_input_type.rb'
- - 'ee/app/graphql/types/iteration_type.rb'
- - 'ee/app/graphql/types/iterations/cadence_type.rb'
- - 'ee/app/graphql/types/merge_requests/approval_state_type.rb'
- - 'ee/app/graphql/types/namespaces/namespace_ban_type.rb'
- - 'ee/app/graphql/types/push_rules_type.rb'
+ - 'ee/app/graphql/types/instance_security_dashboard_type.rb'
+ - 'ee/app/graphql/types/metric_image_type.rb'
+ - 'ee/app/graphql/types/network_policy_type.rb'
+ - 'ee/app/graphql/types/path_lock_type.rb'
+ - 'ee/app/graphql/types/permission_types/epic.rb'
+ - 'ee/app/graphql/types/permission_types/requirement.rb'
+ - 'ee/app/graphql/types/permission_types/vulnerability.rb'
+ - 'ee/app/graphql/types/pipeline_security_report_finding_type.rb'
+ - 'ee/app/graphql/types/product_analytics/dashboard_type.rb'
+ - 'ee/app/graphql/types/product_analytics/visualization_type.rb'
+ - 'ee/app/graphql/types/product_analytics/widget_type.rb'
+ - 'ee/app/graphql/types/protected_environment_type.rb'
+ - 'ee/app/graphql/types/protected_environments/approval_rule_for_summary_type.rb'
+ - 'ee/app/graphql/types/protected_environments/approval_rule_type.rb'
+ - 'ee/app/graphql/types/protected_environments/authorizable_type.rb'
- 'ee/app/graphql/types/requirements_management/requirement_type.rb'
- - 'ee/app/graphql/types/requirements_management/test_report_type.rb'
- - 'ee/app/graphql/types/security/training_type.rb'
- - 'ee/app/graphql/types/security_orchestration/security_policy_relation_type_enum.rb'
- - 'ee/app/graphql/types/time_report_stats_type.rb'
- - 'ee/app/graphql/types/timebox_report_interface.rb'
- - 'ee/app/graphql/types/timebox_report_type.rb'
- - 'ee/app/graphql/types/vulnerabilities/asset_type.rb'
- - 'ee/app/graphql/types/vulnerabilities/container_image_type.rb'
- - 'ee/app/graphql/types/vulnerability/external_issue_link_type.rb'
- - 'ee/app/graphql/types/vulnerability/issue_link_type.rb'
- - 'ee/app/graphql/types/vulnerability_details/base_type.rb'
- - 'ee/app/graphql/types/vulnerability_details/diff_type.rb'
- - 'ee/app/graphql/types/vulnerability_details/file_location_type.rb'
- - 'ee/app/graphql/types/vulnerability_details/markdown_type.rb'
- - 'ee/app/graphql/types/vulnerability_details/module_location_type.rb'
+ - 'ee/app/graphql/types/security/training_url_type.rb'
+ - 'ee/app/graphql/types/security_orchestration/group_security_policy_source_type.rb'
+ - 'ee/app/graphql/types/security_orchestration/scan_execution_policy_type.rb'
+ - 'ee/app/graphql/types/security_orchestration/scan_result_policy_type.rb'
+ - 'ee/app/graphql/types/security_orchestration/security_policy_source_type.rb'
+ - 'ee/app/graphql/types/security_report_summary_type.rb'
+ - 'ee/app/graphql/types/security_scanners.rb'
+ - 'ee/app/graphql/types/timebox_error_type.rb'
+ - 'ee/app/graphql/types/vulnerabilities_count_by_day_type.rb'
+ - 'ee/app/graphql/types/vulnerability_detail_type.rb'
+ - 'ee/app/graphql/types/vulnerability_evidence_source_type.rb'
+ - 'ee/app/graphql/types/vulnerability_evidence_supporting_message_type.rb'
+ - 'ee/app/graphql/types/vulnerability_evidence_type.rb'
- 'ee/app/graphql/types/vulnerability_identifier_input_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/container_scanning_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/coverage_fuzzing_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/dast_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/dependency_scanning_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/generic_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/sast_type.rb'
- - 'ee/app/graphql/types/vulnerability_location/secret_detection_type.rb'
- - 'ee/app/graphql/types/vulnerability_request_response_header_type.rb'
- - 'ee/app/graphql/types/vulnerability_request_type.rb'
- - 'ee/app/graphql/types/vulnerability_response_type.rb'
+ - 'ee/app/graphql/types/vulnerability_identifier_type.rb'
+ - 'ee/app/graphql/types/vulnerability_location/cluster_image_scanning_type.rb'
+ - 'ee/app/graphql/types/vulnerability_location_type.rb'
- 'ee/app/graphql/types/vulnerability_scanner_input_type.rb'
- 'ee/app/graphql/types/vulnerability_scanner_type.rb'
- 'ee/app/graphql/types/vulnerability_scanner_vendor_input_type.rb'
- - 'ee/app/graphql/types/vulnerability_type.rb'
- - 'ee/app/graphql/types/vulnerable_dependency_type.rb'
- - 'ee/app/graphql/types/vulnerable_kubernetes_resource_type.rb'
- - 'ee/app/graphql/types/vulnerable_projects_by_grade_type.rb'
- - 'ee/app/graphql/types/work_items/widgets/status_type.rb'
- - 'ee/app/graphql/types/work_items/widgets/weight_type.rb'
- - 'ee/app/helpers/ee/button_helper.rb'
- - 'ee/app/models/concerns/approval_rule_like.rb'
- - 'ee/app/models/concerns/security/scan_execution_policy.rb'
- - 'ee/app/models/concerns/security/scan_result_policy.rb'
- - 'ee/app/models/dast/site_profile_secret_variable.rb'
- - 'ee/app/models/ee/dependency_proxy/blob.rb'
- - 'ee/app/models/ee/dependency_proxy/manifest.rb'
+ - 'ee/app/graphql/types/vulnerability_severities_count_type.rb'
+ - 'ee/app/graphql/types/vulnerable_package_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/health_status_input_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/health_status_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/iteration_input_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/iteration_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/progress_input_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/requirement_legacy_filter_input_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/requirement_legacy_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/status_filter_input_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/status_input_type.rb'
+ - 'ee/app/graphql/types/work_items/widgets/weight_input_type.rb'
+ - 'ee/app/helpers/billing_plans_helper.rb'
+ - 'ee/app/helpers/ee/feature_flags_helper.rb'
+ - 'ee/app/helpers/ee/search_helper.rb'
+ - 'ee/app/mailers/ee/emails/projects.rb'
+ - 'ee/app/mailers/emails/namespace_storage_usage_mailer.rb'
+ - 'ee/app/models/approval_wrapped_rule.rb'
+ - 'ee/app/models/audit_events/external_audit_event_destination.rb'
+ - 'ee/app/models/audit_events/streaming/event_type_filter.rb'
+ - 'ee/app/models/audit_events/streaming/header.rb'
+ - 'ee/app/models/ci/minutes/notification.rb'
+ - 'ee/app/models/concerns/ee/protected_ref_access.rb'
+ - 'ee/app/models/concerns/geo/verifiable_replicator.rb'
+ - 'ee/app/models/dast/pre_scan_verification.rb'
+ - 'ee/app/models/deployments/approval.rb'
+ - 'ee/app/models/ee/application_setting.rb'
+ - 'ee/app/models/ee/ci/secure_file.rb'
+ - 'ee/app/models/ee/deployment.rb'
- 'ee/app/models/ee/epic.rb'
- 'ee/app/models/ee/group.rb'
- 'ee/app/models/ee/identity.rb'
- - 'ee/app/models/ee/incident_management/project_incident_management_setting.rb'
- - 'ee/app/models/ee/issue.rb'
- - 'ee/app/models/ee/list.rb'
+ - 'ee/app/models/ee/member.rb'
+ - 'ee/app/models/ee/merge_request.rb'
- 'ee/app/models/ee/namespace.rb'
- - 'ee/app/models/ee/namespace_setting.rb'
+ - 'ee/app/models/ee/namespace/storage/notification.rb'
- 'ee/app/models/ee/project.rb'
- 'ee/app/models/ee/project_group_link.rb'
- - 'ee/app/models/geo/dependency_proxy_manifest_state.rb'
- - 'ee/app/models/geo/event_log.rb'
+ - 'ee/app/models/ee/projects/wiki_repository.rb'
+ - 'ee/app/models/ee/upload.rb'
+ - 'ee/app/models/ee/user.rb'
+ - 'ee/app/models/ee/vulnerability.rb'
+ - 'ee/app/models/geo/hashed_storage_migrated_event.rb'
+ - 'ee/app/models/geo/project_registry.rb'
- 'ee/app/models/geo/project_wiki_repository_state.rb'
- - 'ee/app/models/geo/repository_renamed_event.rb'
- - 'ee/app/models/integrations/github.rb'
+ - 'ee/app/models/geo/wiki_repository_state.rb'
+ - 'ee/app/models/geo_node.rb'
+ - 'ee/app/models/geo_node_status.rb'
+ - 'ee/app/models/gitlab_subscriptions/upcoming_reconciliation.rb'
+ - 'ee/app/models/group_merge_request_approval_setting.rb'
+ - 'ee/app/models/incident_management/escalation_rule.rb'
+ - 'ee/app/models/integrations/github/status_notifier.rb'
+ - 'ee/app/models/merge_requests/compliance_violation.rb'
+ - 'ee/app/models/merge_requests/external_status_check.rb'
- 'ee/app/models/package_metadata/package_version_license.rb'
- - 'ee/app/models/project_alias.rb'
+ - 'ee/app/models/product_analytics/dashboard.rb'
+ - 'ee/app/models/protected_environments/approval_rule.rb'
+ - 'ee/app/models/requirements_management/requirement.rb'
+ - 'ee/app/models/sbom/vulnerable_component_version.rb'
+ - 'ee/app/models/sca/license_policy.rb'
+ - 'ee/app/models/scim_identity.rb'
+ - 'ee/app/models/security/finding.rb'
+ - 'ee/app/models/security/orchestration_policy_rule_schedule.rb'
- 'ee/app/models/slack_integration.rb'
+ - 'ee/app/models/smartcard_identity.rb'
- 'ee/app/models/status_page/project_setting.rb'
- - 'ee/app/serializers/ee/evidences/release_entity.rb'
- - 'ee/app/serializers/vulnerability_entity.rb'
- - 'ee/app/services/ci/minutes/update_project_and_namespace_usage_service.rb'
+ - 'ee/app/models/vulnerabilities/external_issue_link.rb'
+ - 'ee/app/models/vulnerabilities/feedback.rb'
+ - 'ee/app/models/vulnerabilities/finding/evidence.rb'
+ - 'ee/app/models/vulnerabilities/issue_link.rb'
+ - 'ee/app/models/vulnerabilities/merge_request_link.rb'
+ - 'ee/app/models/vulnerabilities/read.rb'
+ - 'ee/app/models/vulnerabilities/stat_diff.rb'
+ - 'ee/app/models/vulnerabilities/statistic.rb'
+ - 'ee/app/serializers/blocking_merge_request_entity.rb'
+ - 'ee/app/serializers/dashboard_environment_entity.rb'
+ - 'ee/app/services/analytics/devops_adoption/enabled_namespaces/bulk_find_or_create_service.rb'
+ - 'ee/app/services/audit_events/streaming/event_type_filters/destroy_service.rb'
+ - 'ee/app/services/auto_merge/merge_train_service.rb'
+ - 'ee/app/services/ci/sync_reports_to_approval_rules_service.rb'
+ - 'ee/app/services/dashboard/projects/create_service.rb'
+ - 'ee/app/services/dora/aggregate_metrics_service.rb'
+ - 'ee/app/services/ee/applications/create_service.rb'
+ - 'ee/app/services/ee/boards/issues/list_service.rb'
+ - 'ee/app/services/ee/issues/base_service.rb'
+ - 'ee/app/services/ee/issues/clone_service.rb'
+ - 'ee/app/services/ee/issues/move_service.rb'
+ - 'ee/app/services/ee/keys/create_service.rb'
+ - 'ee/app/services/ee/members/create_service.rb'
- 'ee/app/services/ee/merge_requests/create_pipeline_service.rb'
- - 'ee/app/services/geo/event_store.rb'
+ - 'ee/app/services/ee/projects/create_from_template_service.rb'
+ - 'ee/app/services/ee/projects/gitlab_projects_import_service.rb'
+ - 'ee/app/services/ee/search/snippet_service.rb'
+ - 'ee/app/services/ee/users/update_service.rb'
+ - 'ee/app/services/elastic/process_bookkeeping_service.rb'
+ - 'ee/app/services/epics/issue_promote_service.rb'
+ - 'ee/app/services/external_status_checks/create_service.rb'
+ - 'ee/app/services/external_status_checks/destroy_service.rb'
+ - 'ee/app/services/external_status_checks/update_service.rb'
+ - 'ee/app/services/geo/framework_repository_sync_service.rb'
+ - 'ee/app/services/geo/prune_event_log_service.rb'
- 'ee/app/services/geo/repository_base_sync_service.rb'
- - 'ee/app/services/geo/repository_sync_service.rb'
- - 'ee/app/services/geo/wiki_sync_service.rb'
- - 'ee/app/services/incident_management/issuable_resource_links/create_service.rb'
- - 'ee/app/services/incident_management/issuable_resource_links/destroy_service.rb'
- - 'ee/app/services/incident_management/issuable_resource_links/zoom_link_service.rb'
- - 'ee/app/services/timebox_report_service.rb'
+ - 'ee/app/services/group_saml/saml_group_links/create_service.rb'
+ - 'ee/app/services/iterations/create_service.rb'
+ - 'ee/app/services/merge_trains/create_pipeline_service.rb'
+ - 'ee/app/services/projects/register_suggested_reviewers_project_service.rb'
+ - 'ee/app/services/registrations/standard_namespace_create_service.rb'
+ - 'ee/app/services/resource_events/change_weight_service.rb'
+ - 'ee/app/services/security/findings/dismiss_service.rb'
+ - 'ee/app/services/security/ingestion/tasks/ingest_vulnerability_flags.rb'
+ - 'ee/app/services/security/track_scan_service.rb'
+ - 'ee/app/services/vulnerabilities/confirm_service.rb'
- 'ee/app/services/vulnerabilities/findings/find_or_create_from_security_finding_service.rb'
+ - 'ee/app/services/vulnerabilities/security_finding/create_issue_service.rb'
+ - 'ee/app/services/vulnerabilities/security_finding/create_merge_request_service.rb'
+ - 'ee/app/services/vulnerabilities/starboard_vulnerability_resolve_service.rb'
+ - 'ee/app/services/vulnerability_feedback/create_service.rb'
+ - 'ee/app/services/vulnerability_merge_request_links/create_service.rb'
+ - 'ee/app/workers/audit_events/audit_event_streaming_worker.rb'
+ - 'ee/app/workers/audit_events/user_impersonation_event_create_worker.rb'
+ - 'ee/app/workers/concerns/geo/base_registry_sync_worker.rb'
- 'ee/app/workers/elastic/project_transfer_worker.rb'
+ - 'ee/app/workers/groups/export_memberships_worker.rb'
+ - 'ee/config/routes/admin.rb'
+ - 'ee/config/routes/group.rb'
+ - 'ee/config/routes/project.rb'
+ - 'ee/config/routes/uploads.rb'
+ - 'ee/config/routes/user.rb'
- 'ee/db/geo/migrate/20180405074130_add_partial_index_project_repository_verification.rb'
- - 'ee/db/geo/migrate/20221017195204_create_project_wiki_repository_registry.rb'
- - 'ee/db/geo/migrate/20221018201808_create_dependency_proxy_blob_registry.rb'
- - 'ee/db/geo/migrate/20221102195145_create_dependency_proxy_manifest_registry.rb'
+ - 'ee/db/geo/post_migrate/20210217020154_add_unique_index_on_container_repository_registry.rb'
+ - 'ee/db/geo/post_migrate/20210217020156_add_unique_index_on_terraform_state_version_registry.rb'
- 'ee/db/seeds/awesome_co/awesome_co.rb'
- - 'ee/lib/api/dora/metrics.rb'
- - 'ee/lib/api/epic_issues.rb'
- - 'ee/lib/api/geo_replication.rb'
- - 'ee/lib/api/iterations.rb'
- - 'ee/lib/api/managed_licenses.rb'
+ - 'ee/lib/api/analytics/code_review_analytics.rb'
+ - 'ee/lib/api/analytics/product_analytics.rb'
+ - 'ee/lib/api/audit_events.rb'
+ - 'ee/lib/api/dependencies.rb'
+ - 'ee/lib/api/epics.rb'
+ - 'ee/lib/api/group_push_rule.rb'
+ - 'ee/lib/api/helpers/project_approval_rules_helpers.rb'
+ - 'ee/lib/api/ldap_group_links.rb'
+ - 'ee/lib/api/merge_request_approval_settings.rb'
- 'ee/lib/api/merge_trains.rb'
- - 'ee/lib/api/protected_environments.rb'
+ - 'ee/lib/api/project_aliases.rb'
+ - 'ee/lib/api/project_push_rule.rb'
- 'ee/lib/api/related_epic_links.rb'
+ - 'ee/lib/api/saml_group_links.rb'
+ - 'ee/lib/api/status_checks.rb'
- 'ee/lib/api/vulnerability_exports.rb'
- 'ee/lib/api/vulnerability_findings.rb'
+ - 'ee/lib/api/vulnerability_issue_links.rb'
+ - 'ee/lib/audit/compliance_framework_changes_auditor.rb'
+ - 'ee/lib/audit/external_status_check_changes_auditor.rb'
+ - 'ee/lib/audit/group_changes_auditor.rb'
+ - 'ee/lib/audit/group_push_rules_changes_auditor.rb'
- 'ee/lib/audit/project_changes_auditor.rb'
- - 'ee/lib/audit/project_setting_changes_auditor.rb'
- - 'ee/lib/bulk_imports/groups/pipelines/iterations_pipeline.rb'
- - 'ee/lib/ee/api/entities/approval_settings.rb'
- - 'ee/lib/ee/api/entities/approval_state.rb'
- - 'ee/lib/ee/api/entities/epic.rb'
+ - 'ee/lib/ee/api/entities/approval_rule.rb'
+ - 'ee/lib/ee/api/entities/epic_issue.rb'
+ - 'ee/lib/ee/api/entities/epic_issue_link.rb'
- 'ee/lib/ee/api/entities/group.rb'
- 'ee/lib/ee/api/entities/group_detail.rb'
+ - 'ee/lib/ee/api/entities/group_push_rule.rb'
+ - 'ee/lib/ee/api/entities/member.rb'
+ - 'ee/lib/ee/api/entities/merge_request_approval_state.rb'
+ - 'ee/lib/ee/api/entities/merge_request_approval_state_rule.rb'
- 'ee/lib/ee/api/entities/merge_train.rb'
- - 'ee/lib/ee/api/helpers/groups_helpers.rb'
+ - 'ee/lib/ee/api/entities/project.rb'
+ - 'ee/lib/ee/api/groups.rb'
- 'ee/lib/ee/api/helpers/issues_helpers.rb'
- - 'ee/lib/ee/api/helpers/merge_requests_helpers.rb'
- - 'ee/lib/ee/api/helpers/protected_branches_helpers.rb'
- - 'ee/lib/ee/api/merge_requests.rb'
+ - 'ee/lib/ee/api/members.rb'
+ - 'ee/lib/ee/api/merge_request_approvals.rb'
+ - 'ee/lib/ee/api/projects.rb'
+ - 'ee/lib/ee/gitlab/background_migration/backfill_epic_cache_counts.rb'
- 'ee/lib/ee/gitlab/background_migration/backfill_project_statistics_container_repository_size.rb'
+ - 'ee/lib/ee/gitlab/background_migration/backfill_project_statistics_storage_size_without_uploads_size.rb'
+ - 'ee/lib/ee/gitlab/background_migration/migrate_shared_vulnerability_scanners.rb'
+ - 'ee/lib/ee/gitlab/background_migration/migrate_vulnerabilities_feedback_to_vulnerabilities_state_transition.rb'
- 'ee/lib/ee/gitlab/background_migration/populate_latest_pipeline_ids.rb'
- 'ee/lib/ee/gitlab/background_migration/populate_resolved_on_default_branch_column.rb'
- - 'ee/lib/ee/gitlab/ci/config/entry/job.rb'
- - 'ee/lib/ee/gitlab/ci/config/entry/need.rb'
- - 'ee/lib/ee/gitlab/event_store.rb'
- - 'ee/lib/ee/gitlab/quick_actions/issue_actions.rb'
- - 'ee/lib/ee/gitlab/web_ide/config/entry/global.rb'
- - 'ee/lib/elastic/latest/config.rb'
+ - 'ee/lib/ee/gitlab/import_sources.rb'
+ - 'ee/lib/ee/gitlab/middleware/read_only/controller.rb'
+ - 'ee/lib/ee/gitlab/scim/group/deprovisioning_service.rb'
+ - 'ee/lib/ee/gitlab/tracking.rb'
+ - 'ee/lib/ee/gitlab/usage_data.rb'
+ - 'ee/lib/elastic/latest/commit_config.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary.rb'
- - 'ee/lib/gitlab/contribution_analytics/data_collector.rb'
- - 'ee/lib/gitlab/ingestion/bulk_updatable_task.rb'
- - 'ee/lib/gitlab/insights/loader.rb'
- - 'ee/lib/gitlab/web_ide/config/entry/schema.rb'
+ - 'ee/lib/gitlab/auth/smartcard/base.rb'
+ - 'ee/lib/gitlab/elastic/indexer.rb'
+ - 'ee/lib/gitlab/geo/git_ssh_proxy.rb'
+ - 'ee/lib/gitlab/geo/replicator.rb'
+ - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb'
+ - 'ee/lib/gitlab/insights/executors/dora_executor.rb'
+ - 'ee/lib/gitlab/insights/executors/issuable_executor.rb'
+ - 'ee/lib/gitlab/status_page/pipeline/post_process_pipeline.rb'
+ - 'ee/lib/gitlab/subscription_portal/clients/graphql.rb'
+ - 'ee/lib/gitlab/zoekt/search_results.rb'
- 'ee/lib/slack/block_kit/app_home_opened.rb'
- - 'ee/spec/controllers/admin/clusters_controller_spec.rb'
+ - 'ee/spec/components/billing/plan_component_spec.rb'
+ - 'ee/spec/components/namespaces/free_user_cap/notification_alert_component_spec.rb'
+ - 'ee/spec/components/namespaces/storage/pre_enforcement_alert_component_spec.rb'
- 'ee/spec/controllers/ee/admin/sessions_controller_spec.rb'
- - 'ee/spec/controllers/ee/groups_controller_spec.rb'
- - 'ee/spec/controllers/ee/projects/variables_controller_spec.rb'
- - 'ee/spec/controllers/groups/clusters_controller_spec.rb'
- - 'ee/spec/controllers/groups/security/policies_controller_spec.rb'
- - 'ee/spec/controllers/groups/todos_controller_spec.rb'
+ - 'ee/spec/controllers/ee/search_controller_spec.rb'
+ - 'ee/spec/controllers/groups/analytics/cycle_analytics/stages_controller_spec.rb'
+ - 'ee/spec/controllers/groups/epic_boards_controller_spec.rb'
+ - 'ee/spec/controllers/groups/group_members_controller_spec.rb'
+ - 'ee/spec/controllers/groups/omniauth_callbacks_controller_spec.rb'
+ - 'ee/spec/controllers/groups/sso_controller_spec.rb'
+ - 'ee/spec/controllers/operations_controller_spec.rb'
+ - 'ee/spec/controllers/projects/approver_groups_controller_spec.rb'
+ - 'ee/spec/controllers/projects/approvers_controller_spec.rb'
+ - 'ee/spec/controllers/projects/branches_controller_spec.rb'
+ - 'ee/spec/controllers/projects/environments_controller_spec.rb'
+ - 'ee/spec/controllers/projects/imports_controller_spec.rb'
- 'ee/spec/controllers/projects/iterations_controller_spec.rb'
- 'ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb'
- - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb'
- 'ee/spec/controllers/projects/protected_environments_controller_spec.rb'
+ - 'ee/spec/controllers/projects/repositories_controller_spec.rb'
- 'ee/spec/controllers/projects/security/sast_configuration_controller_spec.rb'
- 'ee/spec/controllers/projects/security/scanned_resources_controller_spec.rb'
+ - 'ee/spec/controllers/projects/settings/ci_cd_controller_spec.rb'
- 'ee/spec/controllers/projects/settings/merge_requests_controller_spec.rb'
+ - 'ee/spec/controllers/projects/settings/operations_controller_spec.rb'
+ - 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb'
- 'ee/spec/controllers/projects_controller_spec.rb'
- - 'ee/spec/controllers/subscriptions_controller_spec.rb'
+ - 'ee/spec/controllers/trials_controller_spec.rb'
+ - 'ee/spec/elastic/migrate/20220119120500_populate_commit_permissions_in_main_index_spec.rb'
+ - 'ee/spec/elastic/migrate/20221124090600_add_namespace_ancestry_ids_to_original_index_mapping_spec.rb'
+ - 'ee/spec/elastic/migrate/20221221110300_backfill_traversal_ids_to_blobs_and_wiki_blobs_spec.rb'
- 'ee/spec/factories/epic_tree_nodes.rb'
- 'ee/spec/factories/groups.rb'
+ - 'ee/spec/factories/import_states.rb'
+ - 'ee/spec/factories/merge_requests.rb'
- 'ee/spec/factories/namespaces.rb'
- - 'ee/spec/factories/users.rb'
+ - 'ee/spec/factories/package_metadata/pm_package_versions.rb'
+ - 'ee/spec/factories/package_metadata/pm_packages.rb'
+ - 'ee/spec/factories/projects.rb'
+ - 'ee/spec/factories/security_scans.rb'
+ - 'ee/spec/factories/vulnerabilities/findings.rb'
- 'ee/spec/features/account_recovery_regular_check_spec.rb'
+ - 'ee/spec/features/admin/admin_emails_spec.rb'
+ - 'ee/spec/features/admin/admin_settings_spec.rb'
- 'ee/spec/features/billings/billing_plans_spec.rb'
- - 'ee/spec/features/groups/contribution_analytics_spec.rb'
- - 'ee/spec/features/issues/filtered_search/filter_issues_by_health_spec.rb'
- - 'ee/spec/features/merge_request/user_approves_spec.rb'
- - 'ee/spec/features/merge_request/user_merges_immediately_spec.rb'
+ - 'ee/spec/features/billings/extend_reactivate_trial_spec.rb'
+ - 'ee/spec/features/boards/boards_spec.rb'
+ - 'ee/spec/features/boards/swimlanes/epics_swimlanes_drag_drop_spec.rb'
+ - 'ee/spec/features/burndown_charts_spec.rb'
+ - 'ee/spec/features/dashboards/todos_spec.rb'
+ - 'ee/spec/features/epic_boards/epic_boards_spec.rb'
+ - 'ee/spec/features/groups/saml_enforcement_spec.rb'
+ - 'ee/spec/features/groups/settings/domain_verification_spec.rb'
+ - 'ee/spec/features/groups/settings/protected_environments_spec.rb'
+ - 'ee/spec/features/groups/usage_quotas/pipelines_tab_spec.rb'
+ - 'ee/spec/features/markdown/metrics_spec.rb'
+ - 'ee/spec/features/merge_request/user_merges_with_namespace_storage_limits_spec.rb'
- 'ee/spec/features/merge_request/user_sees_approval_widget_spec.rb'
- - 'ee/spec/features/merge_request/user_sees_merge_widget_spec.rb'
- - 'ee/spec/features/merge_request/user_sees_mr_approvals_promo_spec.rb'
- - 'ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb'
- - 'ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb'
- - 'ee/spec/features/merge_trains/user_adds_to_merge_train_when_pipeline_succeeds_spec.rb'
+ - 'ee/spec/features/namespace_user_cap_reached_alert_spec.rb'
+ - 'ee/spec/features/projects/environments/environment_spec.rb'
- 'ee/spec/features/projects/environments/environments_spec.rb'
+ - 'ee/spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb'
+ - 'ee/spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb'
+ - 'ee/spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb'
- 'ee/spec/features/projects/merge_requests/user_edits_merge_request_spec.rb'
- - 'ee/spec/features/projects/pipelines/pipeline_spec.rb'
+ - 'ee/spec/features/projects/milestones/milestone_spec.rb'
+ - 'ee/spec/features/projects/security/user_views_security_configuration_spec.rb'
+ - 'ee/spec/features/projects/settings/ee/repository_mirrors_settings_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_requests/user_manages_approval_settings_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_requests/user_manages_merge_pipelines_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_requests/user_manages_merge_requests_template_spec.rb'
+ - 'ee/spec/features/projects/settings/merge_requests/user_manages_merge_trains_spec.rb'
+ - 'ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb'
+ - 'ee/spec/features/projects/settings/user_manages_merge_requests_template_spec.rb'
+ - 'ee/spec/features/registrations/email_confirmation_spec.rb'
- 'ee/spec/features/registrations/saas/standard_flow_company_creating_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/standard_flow_company_joining_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/standard_flow_just_me_creating_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/standard_flow_just_me_importing_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/standard_flow_just_me_joining_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/subscription_flow_paid_plan_spec.rb'
+ - 'ee/spec/features/registrations/saas/trial_flow_company_creating_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/trial_flow_company_importing_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/trial_flow_just_me_creating_project_spec.rb'
+ - 'ee/spec/features/registrations/saas/trial_flow_just_me_importing_project_spec.rb'
+ - 'ee/spec/features/registrations/sign_up_with_trial_from_external_site_without_confirmation_spec.rb'
+ - 'ee/spec/features/search/elastic/global_search_spec.rb'
+ - 'ee/spec/features/search/elastic/group_search_spec.rb'
+ - 'ee/spec/features/security/project/discover_spec.rb'
+ - 'ee/spec/features/trials/select_namespace_spec.rb'
+ - 'ee/spec/features/uncompleted_learn_gitlab_link_spec.rb'
+ - 'ee/spec/features/users/identity_verification_spec.rb'
+ - 'ee/spec/finders/boards/milestones_finder_spec.rb'
+ - 'ee/spec/finders/epics/cross_hierarchy_ancestors_finder_spec.rb'
+ - 'ee/spec/finders/epics/cross_hierarchy_children_finder_spec.rb'
+ - 'ee/spec/finders/geo/project_registry_status_finder_spec.rb'
+ - 'ee/spec/finders/merge_requests_finder_spec.rb'
- 'ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb'
- - 'ee/spec/finders/security/training_urls_finder_spec.rb'
+ - 'ee/spec/finders/security/training_providers/kontra_url_finder_spec.rb'
+ - 'ee/spec/finders/security/training_providers/secure_code_warrior_url_finder_spec.rb'
+ - 'ee/spec/frontend/fixtures/dora/metrics.rb'
- 'ee/spec/frontend/fixtures/oncall_schedule.rb'
- - 'ee/spec/frontend/fixtures/search.rb'
- - 'ee/spec/graphql/ee/types/clusters/agent_type_spec.rb'
- - 'ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb'
- - 'ee/spec/helpers/ee/environments_helper_spec.rb'
+ - 'ee/spec/graphql/ee/mutations/boards/lists/create_spec.rb'
+ - 'ee/spec/graphql/ee/mutations/ci/runner/update_spec.rb'
+ - 'ee/spec/graphql/mutations/dast/profiles/create_spec.rb'
+ - 'ee/spec/graphql/mutations/dast/profiles/run_spec.rb'
+ - 'ee/spec/graphql/mutations/dast/profiles/update_spec.rb'
+ - 'ee/spec/graphql/mutations/dast_scanner_profiles/create_spec.rb'
+ - 'ee/spec/graphql/mutations/dast_scanner_profiles/update_spec.rb'
+ - 'ee/spec/graphql/mutations/merge_requests/accept_spec.rb'
+ - 'ee/spec/graphql/mutations/merge_requests/set_reviewers_spec.rb'
+ - 'ee/spec/graphql/resolvers/ci/runners_jobs_statistics_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/path_locks_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/security_orchestration/scan_execution_policy_resolver_spec.rb'
+ - 'ee/spec/graphql/resolvers/vulnerabilities/container_images_resolver_spec.rb'
+ - 'ee/spec/graphql/types/ci/pipeline_type_spec.rb'
+ - 'ee/spec/graphql/types/dast/pre_scan_verification_step_type_spec.rb'
+ - 'ee/spec/graphql/types/dast/pre_scan_verification_type_spec.rb'
+ - 'ee/spec/graphql/types/dast/profile_type_spec.rb'
+ - 'ee/spec/graphql/types/dast_scanner_profile_type_spec.rb'
+ - 'ee/spec/graphql/types/project_type_spec.rb'
+ - 'ee/spec/graphql/types/vulnerability_type_spec.rb'
+ - 'ee/spec/helpers/billing_plans_helper_spec.rb'
+ - 'ee/spec/helpers/ee/integrations_helper_spec.rb'
- 'ee/spec/helpers/ee/namespace_user_cap_reached_alert_helper_spec.rb'
- - 'ee/spec/helpers/ee/users/callouts_helper_spec.rb'
+ - 'ee/spec/helpers/ee/namespaces_helper_spec.rb'
+ - 'ee/spec/helpers/ee/trial_registration_helper_spec.rb'
+ - 'ee/spec/helpers/license_monitoring_helper_spec.rb'
- 'ee/spec/helpers/projects_helper_spec.rb'
- - 'ee/spec/helpers/trial_status_widget_helper_spec.rb'
+ - 'ee/spec/helpers/vulnerabilities_helper_spec.rb'
+ - 'ee/spec/lib/analytics/group_activity_calculator_spec.rb'
+ - 'ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb'
+ - 'ee/spec/lib/api/entities/protected_environments/approval_rule_for_summary_spec.rb'
+ - 'ee/spec/lib/api/entities/protected_environments/approval_rule_spec.rb'
+ - 'ee/spec/lib/api/entities/protected_environments/deploy_access_level_spec.rb'
+ - 'ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb'
+ - 'ee/spec/lib/audit/group_merge_request_approval_setting_changes_auditor_spec.rb'
- 'ee/spec/lib/audit/protected_branches_changes_auditor_spec.rb'
- 'ee/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb'
- - 'ee/spec/lib/ee/api/entities/analytics/group_activity_spec.rb'
+ - 'ee/spec/lib/ee/api/entities/analytics/code_review/merge_request_spec.rb'
+ - 'ee/spec/lib/ee/api/entities/geo_node_status_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/application_context_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/auth/ldap/sync/admin_users_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/backfill_epic_cache_counts_spec.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/backfill_project_statistics_container_repository_size_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/backfill_project_statistics_storage_size_without_uploads_size_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/delete_invalid_epic_issues_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/fix_approval_project_rules_without_protected_branches_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/fix_security_scan_statuses_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/migrate_shared_vulnerability_scanners_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/migrate_vulnerabilities_feedback_to_vulnerabilities_state_transition_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/populate_approval_merge_request_rules_with_security_orchestration_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/populate_approval_project_rules_with_security_orchestration_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/populate_latest_pipeline_ids_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/populate_resolved_on_default_branch_column_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/populate_uuids_for_security_findings_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/purge_stale_security_scans_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/background_migration/update_vulnerability_occurrences_location_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/checks/push_rule_check_spec.rb'
- 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb'
- - 'ee/spec/lib/ee/gitlab/ci/status/build/manual_spec.rb'
- - 'ee/spec/lib/ee/gitlab/database/gitlab_schema_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/config/entry/bridge_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/ci/reports/security/reports_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/git_access_project_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/import_export/project/tree_restorer_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/import_export/repo_restorer_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/scim/group/provisioning_service_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/scim/params_parser_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/scim/provisioning_service_spec.rb'
+ - 'ee/spec/lib/ee/gitlab/usage/service_ping_report_spec.rb'
- 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
- - 'ee/spec/lib/gitlab/ci/minutes/cost_factor_spec.rb'
- - 'ee/spec/lib/gitlab/ci/minutes/gitlab_contribution_cost_factor_spec.rb'
- - 'ee/spec/lib/gitlab/ci/parsers/security/validators/default_branch_image_validator_spec.rb'
- - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/size_spec.rb'
- - 'ee/spec/lib/gitlab/ci/templates/container_scanning_latest_gitlab_ci_yaml_spec.rb'
- - 'ee/spec/lib/gitlab/ci/templates/dependency_scanning_latest_gitlab_ci_yaml_spec.rb'
- - 'ee/spec/lib/gitlab/ci/templates/license_scanning_latest_gitlab_ci_yaml_spec.rb'
- - 'ee/spec/lib/gitlab/ci/templates/sast_latest_gitlab_ci_yaml_spec.rb'
- - 'ee/spec/lib/gitlab/ci/templates/secret_detection_latest_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/elastic/latest/git_class_proxy_spec.rb'
+ - 'ee/spec/lib/elastic/latest/project_wiki_class_proxy_spec.rb'
+ - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
+ - 'ee/spec/lib/gitlab/analytics/cycle_analytics/distinct_stage_loader_spec.rb'
+ - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/stage_time_summary_spec.rb'
+ - 'ee/spec/lib/gitlab/applied_ml/suggested_reviewers/client_spec.rb'
+ - 'ee/spec/lib/gitlab/audit/auditor_spec.rb'
+ - 'ee/spec/lib/gitlab/auth/group_saml/identity_linker_spec.rb'
+ - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb'
+ - 'ee/spec/lib/gitlab/auth/otp/session_enforcer_spec.rb'
+ - 'ee/spec/lib/gitlab/auth/smartcard/certificate_spec.rb'
+ - 'ee/spec/lib/gitlab/auth/smartcard/ldap_certificate_spec.rb'
+ - 'ee/spec/lib/gitlab/background_migration/remove_all_trace_expiration_dates_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/parsers/security/dast_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/project_config_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/reports/security/finding_spec.rb'
+ - 'ee/spec/lib/gitlab/ci/templates/Jobs/dast_default_branch_gitlab_ci_yaml_spec.rb'
+ - 'ee/spec/lib/gitlab/compliance_management/violations/approved_by_committer_spec.rb'
+ - 'ee/spec/lib/gitlab/compliance_management/violations/approved_by_insufficient_users_spec.rb'
+ - 'ee/spec/lib/gitlab/compliance_management/violations/approved_by_merge_request_author_spec.rb'
+ - 'ee/spec/lib/gitlab/data_builder/vulnerability_spec.rb'
+ - 'ee/spec/lib/gitlab/elastic/indexer_spec.rb'
+ - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb'
+ - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb'
+ - 'ee/spec/lib/gitlab/geo_spec.rb'
- 'ee/spec/lib/gitlab/git_access_spec.rb'
- - 'ee/spec/lib/gitlab/graphql/aggregations/security_orchestration_policies/lazy_dast_profile_aggregate_spec.rb'
- - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_user_merge_requests_for_projects_with_applied_scan_result_policies_metric_spec.rb'
+ - 'ee/spec/lib/gitlab/git_access_wiki_spec.rb'
+ - 'ee/spec/lib/gitlab/import_export/project/object_builder_spec.rb'
+ - 'ee/spec/lib/gitlab/insights/executors/dora_executor_spec.rb'
+ - 'ee/spec/lib/gitlab/insights/loader_spec.rb'
+ - 'ee/spec/lib/gitlab/license_scanning/branch_components_spec.rb'
+ - 'ee/spec/lib/gitlab/license_scanning/package_licenses_spec.rb'
+ - 'ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
+ - 'ee/spec/lib/gitlab/status_page_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_approval_project_rules_metric_spec.rb'
+ - 'ee/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_environments_approval_required_spec.rb'
+ - 'ee/spec/lib/gitlab/zoekt/search_results_spec.rb'
- 'ee/spec/lib/incident_management/oncall_shift_generator_spec.rb'
- - 'ee/spec/lib/slack/block_kit/app_home_opened_spec.rb'
+ - 'ee/spec/lib/omni_auth/strategies/group_saml_spec.rb'
+ - 'ee/spec/mailers/notify_spec.rb'
+ - 'ee/spec/migrations/add_non_null_constraint_for_escalation_rule_on_pending_alert_escalations_spec.rb'
+ - 'ee/spec/migrations/remove_schedule_and_status_null_constraints_from_pending_escalations_alert_spec.rb'
+ - 'ee/spec/migrations/update_vulnerability_occurrences_location_spec.rb'
- 'ee/spec/models/approval_wrapped_code_owner_rule_spec.rb'
- - 'ee/spec/models/ci/minutes/namespace_monthly_usage_spec.rb'
- - 'ee/spec/models/ci/minutes/project_monthly_usage_spec.rb'
- - 'ee/spec/models/ee/audit_event_spec.rb'
- - 'ee/spec/models/ee/ci/build_dependencies_spec.rb'
+ - 'ee/spec/models/ci/bridge_spec.rb'
+ - 'ee/spec/models/ci/build_spec.rb'
+ - 'ee/spec/models/concerns/elastic/issue_spec.rb'
+ - 'ee/spec/models/concerns/elastic/merge_request_spec.rb'
+ - 'ee/spec/models/concerns/elastic/note_spec.rb'
+ - 'ee/spec/models/concerns/elastic/project_spec.rb'
+ - 'ee/spec/models/concerns/elastic/repository_spec.rb'
+ - 'ee/spec/models/concerns/elastic/snippet_spec.rb'
+ - 'ee/spec/models/dast/pre_scan_verification_step_spec.rb'
+ - 'ee/spec/models/dast_site_profile_spec.rb'
+ - 'ee/spec/models/deployments/approval_summary_spec.rb'
+ - 'ee/spec/models/dora/daily_metrics_spec.rb'
+ - 'ee/spec/models/ee/ci/job_artifact_spec.rb'
+ - 'ee/spec/models/ee/ci/pipeline_artifact_spec.rb'
- 'ee/spec/models/ee/ci/runner_spec.rb'
+ - 'ee/spec/models/ee/ci/secure_file_spec.rb'
+ - 'ee/spec/models/ee/dependency_proxy/blob_spec.rb'
+ - 'ee/spec/models/ee/dependency_proxy/manifest_spec.rb'
- 'ee/spec/models/ee/event_spec.rb'
+ - 'ee/spec/models/ee/group_spec.rb'
- 'ee/spec/models/ee/namespace_spec.rb'
- - 'ee/spec/models/ee/service_desk_setting_spec.rb'
- - 'ee/spec/models/integrations/github/status_message_spec.rb'
- - 'ee/spec/models/integrations/github_spec.rb'
+ - 'ee/spec/models/ee/user_spec.rb'
+ - 'ee/spec/models/epic_spec.rb'
+ - 'ee/spec/models/geo/project_registry_spec.rb'
- 'ee/spec/models/ldap_group_link_spec.rb'
+ - 'ee/spec/models/member_spec.rb'
- 'ee/spec/models/merge_request_spec.rb'
- - 'ee/spec/models/merge_train_spec.rb'
+ - 'ee/spec/models/merge_requests/external_status_check_spec.rb'
+ - 'ee/spec/models/namespaces/free_user_cap/notification_spec.rb'
+ - 'ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb'
+ - 'ee/spec/models/product_analytics/funnel_step_spec.rb'
+ - 'ee/spec/models/product_analytics/jitsu_authentication_spec.rb'
+ - 'ee/spec/models/productivity_analytics_spec.rb'
+ - 'ee/spec/models/project_import_state_spec.rb'
- 'ee/spec/models/project_spec.rb'
- 'ee/spec/models/protected_environments/approval_rule_spec.rb'
- - 'ee/spec/models/protected_environments/deploy_access_level_spec.rb'
+ - 'ee/spec/models/remote_mirror_spec.rb'
+ - 'ee/spec/models/requirements_management/test_report_spec.rb'
+ - 'ee/spec/models/security/finding_spec.rb'
- 'ee/spec/models/security/orchestration_policy_configuration_spec.rb'
- - 'ee/spec/models/vulnerabilities/read_spec.rb'
+ - 'ee/spec/models/upload_spec.rb'
+ - 'ee/spec/models/vulnerabilities/finding_spec.rb'
+ - 'ee/spec/models/vulnerabilities/state_transition_spec.rb'
+ - 'ee/spec/policies/dast/pre_scan_verification_policy_spec.rb'
+ - 'ee/spec/policies/dast/pre_scan_verification_step_policy_spec.rb'
+ - 'ee/spec/policies/deployment_policy_spec.rb'
+ - 'ee/spec/policies/epic_policy_spec.rb'
- 'ee/spec/policies/merge_request_policy_spec.rb'
- - 'ee/spec/requests/api/ci/runner/jobs_put_spec.rb'
- - 'ee/spec/requests/api/ci/runner/jobs_trace_spec.rb'
- - 'ee/spec/requests/api/graphql/boards/epic_board_list_epics_query_spec.rb'
- - 'ee/spec/requests/api/graphql/boards/epic_boards_query_spec.rb'
- - 'ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb'
- - 'ee/spec/requests/api/graphql/ci/minutes/usage_spec.rb'
+ - 'ee/spec/policies/vulnerabilities/feedback_policy_spec.rb'
+ - 'ee/spec/policies/vulnerabilities/merge_request_link_policy_spec.rb'
+ - 'ee/spec/presenters/ci/pipeline_presenter_spec.rb'
+ - 'ee/spec/requests/admin/impersonation_tokens_controller_spec.rb'
+ - 'ee/spec/requests/api/analytics/product_analytics_spec.rb'
+ - 'ee/spec/requests/api/analytics/project_deployment_frequency_spec.rb'
+ - 'ee/spec/requests/api/api_spec.rb'
+ - 'ee/spec/requests/api/branches_spec.rb'
+ - 'ee/spec/requests/api/ci/jobs_spec.rb'
+ - 'ee/spec/requests/api/ci/pipelines_spec.rb'
+ - 'ee/spec/requests/api/composer_packages_spec.rb'
+ - 'ee/spec/requests/api/deployments_spec.rb'
+ - 'ee/spec/requests/api/dora/metrics_spec.rb'
+ - 'ee/spec/requests/api/epics_spec.rb'
+ - 'ee/spec/requests/api/graphql/ci/runner_spec.rb'
- 'ee/spec/requests/api/graphql/group/dast_profile_schedule_spec.rb'
+ - 'ee/spec/requests/api/graphql/group/epic/epic_children_spec.rb'
- 'ee/spec/requests/api/graphql/group/epic/epic_issues_spec.rb'
- 'ee/spec/requests/api/graphql/group/epics_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/boards/epic_boards/epic_move_list_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/epics/create_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/epics/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/merge_request_reviewer_spec.rb'
+ - 'ee/spec/requests/api/graphql/merge_requests/approval_state_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/lists/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/lists/update_limit_metrics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/boards/update_epic_user_preferences_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/destroy_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/update_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/epic_tree/reorder_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/issues/set_weight_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/create_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/iterations/cadences/update_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/iterations/update_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/requirements_management/create_requirement_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/initialize_product_analytics_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/lock_path_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/projects/set_compliance_framework_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/quality_management/test_cases/create_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/requirements_management/update_requirement_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security/finding/create_issue_spec.rb'
+ - 'ee/spec/requests/api/graphql/mutations/security/finding/revert_to_detected_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/security_policy/assign_security_policy_project_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/security_policy/create_security_policy_project_spec.rb'
- 'ee/spec/requests/api/graphql/mutations/security_policy/unassign_security_policy_project_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/create_external_issue_link_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/destroy_external_issue_link_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/vulnerabilities/finding_dismiss_spec.rb'
- - 'ee/spec/requests/api/graphql/namespace/projects_spec.rb'
- 'ee/spec/requests/api/graphql/project/branch_rules/approval_project_rules_spec.rb'
- - 'ee/spec/requests/api/graphql/project/deployment_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/dast_profile_schedule_spec.rb'
- 'ee/spec/requests/api/graphql/project/environments_spec.rb'
- - 'ee/spec/requests/api/graphql/project/issues_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/code_quality_report_summary_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/dast_profile_spec.rb'
- 'ee/spec/requests/api/graphql/project/pipeline/security_report_finding_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipeline/security_report_findings_spec.rb'
- 'ee/spec/requests/api/graphql/project/pipeline/security_report_summary_spec.rb'
- - 'ee/spec/requests/api/graphql/project/requirements_management/test_reports_spec.rb'
- - 'ee/spec/requests/api/graphql/project/security_orchestration/scan_result_policy_spec.rb'
- - 'ee/spec/requests/api/group_hooks_spec.rb'
+ - 'ee/spec/requests/api/graphql/project/pipelines/dast_profile_spec.rb'
+ - 'ee/spec/requests/api/group_boards_spec.rb'
+ - 'ee/spec/requests/api/group_clusters_spec.rb'
+ - 'ee/spec/requests/api/group_push_rule_spec.rb'
- 'ee/spec/requests/api/groups_spec.rb'
- 'ee/spec/requests/api/internal/base_spec.rb'
- 'ee/spec/requests/api/invitations_spec.rb'
+ - 'ee/spec/requests/api/issue_links_spec.rb'
- 'ee/spec/requests/api/issues_spec.rb'
- - 'ee/spec/requests/api/managed_licenses_spec.rb'
+ - 'ee/spec/requests/api/members_spec.rb'
+ - 'ee/spec/requests/api/merge_trains_spec.rb'
+ - 'ee/spec/requests/api/namespaces_spec.rb'
+ - 'ee/spec/requests/api/project_clusters_spec.rb'
- 'ee/spec/requests/api/project_push_rule_spec.rb'
+ - 'ee/spec/requests/api/projects_spec.rb'
- 'ee/spec/requests/api/protected_environments_spec.rb'
- 'ee/spec/requests/api/provider_identity_spec.rb'
+ - 'ee/spec/requests/api/releases_spec.rb'
+ - 'ee/spec/requests/api/search_spec.rb'
- 'ee/spec/requests/api/settings_spec.rb'
+ - 'ee/spec/requests/api/status_checks_spec.rb'
+ - 'ee/spec/requests/api/visual_review_discussions_spec.rb'
+ - 'ee/spec/requests/api/vulnerability_findings_spec.rb'
+ - 'ee/spec/requests/ee/confirmations_controller_spec.rb'
+ - 'ee/spec/requests/ee/projects/environments_controller_spec.rb'
+ - 'ee/spec/requests/ee/projects/service_desk_controller_spec.rb'
+ - 'ee/spec/requests/groups/epics/epic_links_controller_spec.rb'
+ - 'ee/spec/requests/groups/epics/related_epic_links_controller_spec.rb'
- 'ee/spec/requests/groups/protected_environments_controller_spec.rb'
- - 'ee/spec/requests/groups_controller_spec.rb'
- - 'ee/spec/requests/projects/requirements_management/requirements_controller_spec.rb'
- - 'ee/spec/serializers/protected_environments/deploy_access_level_entity_spec.rb'
+ - 'ee/spec/requests/groups/settings/domain_verification_controller_spec.rb'
+ - 'ee/spec/requests/groups/two_factor_auths_controller_spec.rb'
+ - 'ee/spec/requests/projects/analytics/cycle_analytics/stages_controller_spec.rb'
+ - 'ee/spec/requests/projects/mirrors_controller_spec.rb'
+ - 'ee/spec/requests/projects/on_demand_scans_controller_spec.rb'
+ - 'ee/spec/requests/projects/security/dast_configuration_controller_spec.rb'
+ - 'ee/spec/requests/projects/security/dast_profiles_controller_spec.rb'
+ - 'ee/spec/requests/registrations/project_creation_spec.rb'
+ - 'ee/spec/requests/smartcard_controller_spec.rb'
+ - 'ee/spec/requests/users/identity_verification_controller_spec.rb'
+ - 'ee/spec/routing/webhook_routes_spec.rb'
+ - 'ee/spec/serializers/pipeline_serializer_spec.rb'
- 'ee/spec/serializers/vulnerabilities/finding_entity_spec.rb'
- - 'ee/spec/services/approval_rules/update_service_spec.rb'
- - 'ee/spec/services/audit_events/export_csv_service_spec.rb'
- - 'ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb'
+ - 'ee/spec/services/analytics/cycle_analytics/aggregator_service_spec.rb'
+ - 'ee/spec/services/analytics/devops_adoption/enabled_namespaces/find_or_create_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/profiles/create_associations_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/profiles/create_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/profiles/update_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/scan_configs/build_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/scanner_profiles/create_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/scanner_profiles/destroy_service_spec.rb'
+ - 'ee/spec/services/app_sec/dast/scanner_profiles/update_service_spec.rb'
+ - 'ee/spec/services/arkose/blocked_users_report_service_spec.rb'
+ - 'ee/spec/services/audit_events/protected_branch_audit_event_service_spec.rb'
+ - 'ee/spec/services/audit_events/streaming/event_type_filters/create_service_spec.rb'
+ - 'ee/spec/services/audit_events/streaming/event_type_filters/destroy_service_spec.rb'
- 'ee/spec/services/auto_merge/merge_train_service_spec.rb'
- - 'ee/spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb'
- - 'ee/spec/services/ci/create_pipeline_service/cross_needs_artifacts_spec.rb'
- - 'ee/spec/services/ci/external_pull_requests/process_github_event_service_spec.rb'
- - 'ee/spec/services/ci/minutes/batch_reset_service_spec.rb'
- - 'ee/spec/services/ci/minutes/update_build_minutes_service_spec.rb'
- - 'ee/spec/services/ci/pipeline_creation/drop_not_runnable_builds_service_spec.rb'
- - 'ee/spec/services/ci/subscribe_bridge_service_spec.rb'
- - 'ee/spec/services/ee/merge_requests/create_pipeline_service_spec.rb'
+ - 'ee/spec/services/boards/lists/update_service_spec.rb'
+ - 'ee/spec/services/ci/process_pipeline_service_spec.rb'
+ - 'ee/spec/services/ci/retry_pipeline_service_spec.rb'
+ - 'ee/spec/services/ci/sync_reports_to_approval_rules_service_spec.rb'
+ - 'ee/spec/services/ci_cd/github_integration_setup_service_spec.rb'
+ - 'ee/spec/services/ci_cd/github_setup_service_spec.rb'
+ - 'ee/spec/services/ee/boards/issues/create_service_spec.rb'
+ - 'ee/spec/services/ee/boards/issues/list_service_spec.rb'
+ - 'ee/spec/services/ee/boards/issues/move_service_spec.rb'
+ - 'ee/spec/services/ee/boards/lists/create_service_spec.rb'
+ - 'ee/spec/services/ee/boards/lists/max_limits_spec.rb'
+ - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/after_update_service_spec.rb'
- 'ee/spec/services/ee/merge_requests/refresh_service_spec.rb'
- - 'ee/spec/services/ee/protected_branches/create_service_spec.rb'
- - 'ee/spec/services/epics/update_service_spec.rb'
- - 'ee/spec/services/geo/file_registry_removal_service_spec.rb'
- - 'ee/spec/services/geo/repository_verification_primary_service_spec.rb'
- - 'ee/spec/services/incident_management/issuable_resource_links/create_service_spec.rb'
- - 'ee/spec/services/incident_management/issuable_resource_links/destroy_service_spec.rb'
- - 'ee/spec/services/issuable/discussions_list_service_spec.rb'
+ - 'ee/spec/services/ee/merge_requests/update_assignees_service_spec.rb'
+ - 'ee/spec/services/ee/merge_requests/update_reviewers_service_spec.rb'
+ - 'ee/spec/services/ee/notification_service_spec.rb'
+ - 'ee/spec/services/ee/users/migrate_records_to_ghost_user_service_spec.rb'
+ - 'ee/spec/services/ee/vulnerability_feedback_module/update_service_spec.rb'
+ - 'ee/spec/services/elastic/process_bookkeeping_service_spec.rb'
+ - 'ee/spec/services/epics/issue_promote_service_spec.rb'
+ - 'ee/spec/services/epics/tree_reorder_service_spec.rb'
+ - 'ee/spec/services/geo/blob_upload_service_spec.rb'
+ - 'ee/spec/services/geo/framework_repository_sync_service_spec.rb'
+ - 'ee/spec/services/geo/hashed_storage_attachments_migration_service_spec.rb'
+ - 'ee/spec/services/geo/registry_consistency_service_spec.rb'
+ - 'ee/spec/services/geo/replication_toggle_request_service_spec.rb'
+ - 'ee/spec/services/geo/repository_sync_service_spec.rb'
+ - 'ee/spec/services/geo/wiki_sync_service_spec.rb'
+ - 'ee/spec/services/gitlab_subscriptions/reconciliations/check_seat_usage_alerts_eligibility_service_spec.rb'
+ - 'ee/spec/services/groups/compliance_report_csv_service_spec.rb'
+ - 'ee/spec/services/groups/mark_for_deletion_service_spec.rb'
+ - 'ee/spec/services/groups/restore_service_spec.rb'
+ - 'ee/spec/services/issue_feature_flags/list_service_spec.rb'
- 'ee/spec/services/merge_request_approval_settings/update_service_spec.rb'
- - 'ee/spec/services/merge_requests/reset_approvals_service_spec.rb'
- - 'ee/spec/services/merge_trains/check_status_service_spec.rb'
- - 'ee/spec/services/merge_trains/create_pipeline_service_spec.rb'
- - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb'
- - 'ee/spec/services/merge_trains/refresh_service_spec.rb'
- - 'ee/spec/services/projects/mark_for_deletion_service_spec.rb'
+ - 'ee/spec/services/merge_requests/build_service_spec.rb'
+ - 'ee/spec/services/projects/create_service_spec.rb'
+ - 'ee/spec/services/projects/gitlab_projects_import_service_spec.rb'
+ - 'ee/spec/services/projects/prometheus/alerts/notify_service_spec.rb'
- 'ee/spec/services/projects/restore_service_spec.rb'
+ - 'ee/spec/services/protected_environments/create_service_spec.rb'
+ - 'ee/spec/services/protected_environments/update_service_spec.rb'
+ - 'ee/spec/services/quick_actions/interpret_service_spec.rb'
+ - 'ee/spec/services/registrations/import_namespace_create_service_spec.rb'
+ - 'ee/spec/services/registrations/standard_namespace_create_service_spec.rb'
+ - 'ee/spec/services/security/auto_fix_service_spec.rb'
- 'ee/spec/services/security/findings/dismiss_service_spec.rb'
- - 'ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities/mark_resolved_as_detected_spec.rb'
+ - 'ee/spec/services/security/ingestion/finding_map_spec.rb'
+ - 'ee/spec/services/security/ingestion/tasks/ingest_issue_links_spec.rb'
+ - 'ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities/create_spec.rb'
- 'ee/spec/services/security/ingestion/tasks/ingest_vulnerabilities_spec.rb'
+ - 'ee/spec/services/security/ingestion/tasks/update_vulnerability_uuids_spec.rb'
- 'ee/spec/services/security/merge_reports_service_spec.rb'
- - 'ee/spec/services/security/orchestration/unassign_service_spec.rb'
+ - 'ee/spec/services/security/override_uuids_service_spec.rb'
- 'ee/spec/services/security/report_summary_service_spec.rb'
+ - 'ee/spec/services/security/scanned_resources_counting_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/create_pipeline_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/project_create_service_spec.rb'
- 'ee/spec/services/security/security_orchestration_policies/rule_schedule_service_spec.rb'
+ - 'ee/spec/services/security/security_orchestration_policies/scan_pipeline_service_spec.rb'
- 'ee/spec/services/security/security_orchestration_policies/sync_scan_result_policies_service_spec.rb'
- - 'ee/spec/services/todo_service_spec.rb'
- - 'ee/spec/services/users/abuse/git_abuse/namespace_throttle_service_spec.rb'
+ - 'ee/spec/services/security/store_scan_service_spec.rb'
+ - 'ee/spec/services/security/vulnerability_counting_service_spec.rb'
- 'ee/spec/services/users/email_verification/send_custom_confirmation_instructions_service_spec.rb'
+ - 'ee/spec/services/vulnerabilities/dismiss_service_spec.rb'
- 'ee/spec/services/vulnerabilities/find_or_create_from_security_finding_service_spec.rb'
- 'ee/spec/services/vulnerabilities/findings/find_or_create_from_security_finding_service_spec.rb'
- 'ee/spec/services/vulnerabilities/security_finding/create_issue_service_spec.rb'
- - 'ee/spec/services/vulnerabilities/starboard_vulnerability_resolve_service_spec.rb'
- - 'ee/spec/support/helpers/ee/geo_helpers.rb'
+ - 'ee/spec/services/vulnerabilities/security_finding/create_merge_request_service_spec.rb'
+ - 'ee/spec/services/vulnerabilities/user_notes_count_service_spec.rb'
+ - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb'
+ - 'ee/spec/services/vulnerability_merge_request_links/create_service_spec.rb'
+ - 'ee/spec/support/helpers/vulnerability_helpers.rb'
+ - 'ee/spec/support/shared_examples/audit/audit_event_type_stream_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/shared_stage_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/credentials_inventory_shared_examples.rb'
- 'ee/spec/support/shared_examples/features/password_complexity_shared_examples.rb'
- - 'ee/spec/views/groups/feature_discovery_moments/advanced_features_dashboard.html.haml_spec.rb'
- - 'ee/spec/views/groups/settings/reporting/show.html.haml_spec.rb'
- - 'ee/spec/views/layouts/_search.html.haml_spec.rb'
- - 'ee/spec/views/shared/credentials_inventory/resource_access_tokens/_resource_access_token.html.haml_spec.rb'
+ - 'ee/spec/support/shared_examples/finders/security/findings_finder_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/graphql/dast/dast_profile_schedule_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/graphql/mutations/set_multiple_assignees_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/services/geo/geo_request_service_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/services/search_service_shared_examples.rb'
+ - 'ee/spec/support/shared_examples/services/vulnerabilities/removes_dismissal_feedback_from_associated_findings_shared_example.rb'
+ - 'ee/spec/tasks/gitlab/elastic_rake_spec.rb'
+ - 'ee/spec/views/admin/application_settings/_deletion_protection_settings.html.haml_spec.rb'
+ - 'ee/spec/views/admin/application_settings/_git_abuse_rate_limit.html.haml_spec.rb'
+ - 'ee/spec/views/admin/dashboard/index.html.haml_spec.rb'
+ - 'ee/spec/views/admin/identities/index.html.haml_spec.rb'
+ - 'ee/spec/views/groups/edit.html.haml_spec.rb'
+ - 'ee/spec/views/projects/edit.html.haml_spec.rb'
- 'ee/spec/workers/adjourned_group_deletion_worker_spec.rb'
- 'ee/spec/workers/analytics/cycle_analytics/consistency_worker_spec.rb'
- - 'ee/spec/workers/ci/batch_reset_minutes_worker_spec.rb'
+ - 'ee/spec/workers/analytics/devops_adoption/create_snapshot_worker_spec.rb'
+ - 'ee/spec/workers/audit_events/audit_event_streaming_worker_spec.rb'
- 'ee/spec/workers/concerns/update_orchestration_policy_configuration_spec.rb'
- - 'ee/spec/workers/geo/repository_verification/primary/shard_worker_spec.rb'
+ - 'ee/spec/workers/create_github_webhook_worker_spec.rb'
+ - 'ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb'
+ - 'ee/spec/workers/ee/repository_check/batch_worker_spec.rb'
+ - 'ee/spec/workers/elastic_index_bulk_cron_worker_spec.rb'
+ - 'ee/spec/workers/elastic_index_initial_bulk_cron_worker_spec.rb'
+ - 'ee/spec/workers/epics/update_cached_metadata_worker_spec.rb'
- 'ee/spec/workers/namespaces/sync_namespace_name_worker_spec.rb'
- - 'lib/api/admin/batched_background_migrations.rb'
- - 'lib/api/admin/ci/variables.rb'
+ - 'ee/spec/workers/pull_mirrors/reenable_configuration_worker_spec.rb'
+ - 'ee/spec/workers/repository_update_mirror_worker_spec.rb'
+ - 'ee/spec/workers/security/orchestration_policy_rule_schedule_namespace_worker_spec.rb'
+ - 'ee/spec/workers/security/orchestration_policy_rule_schedule_worker_spec.rb'
+ - 'ee/spec/workers/security/process_scan_result_policy_worker_spec.rb'
+ - 'lib/api/access_requests.rb'
+ - 'lib/api/admin/plan_limits.rb'
- 'lib/api/alert_management_alerts.rb'
+ - 'lib/api/api.rb'
+ - 'lib/api/applications.rb'
+ - 'lib/api/branches.rb'
+ - 'lib/api/broadcast_messages.rb'
+ - 'lib/api/bulk_imports.rb'
+ - 'lib/api/ci/job_artifacts.rb'
+ - 'lib/api/ci/jobs.rb'
+ - 'lib/api/ci/pipeline_schedules.rb'
+ - 'lib/api/ci/pipelines.rb'
+ - 'lib/api/ci/resource_groups.rb'
+ - 'lib/api/ci/runner.rb'
- 'lib/api/ci/runners.rb'
+ - 'lib/api/ci/triggers.rb'
+ - 'lib/api/commit_statuses.rb'
- 'lib/api/commits.rb'
+ - 'lib/api/concerns/packages/debian_distribution_endpoints.rb'
- 'lib/api/concerns/packages/npm_endpoints.rb'
+ - 'lib/api/concerns/packages/nuget_endpoints.rb'
+ - 'lib/api/container_repositories.rb'
+ - 'lib/api/dependency_proxy.rb'
- 'lib/api/deploy_keys.rb'
+ - 'lib/api/deploy_tokens.rb'
- 'lib/api/deployments.rb'
+ - 'lib/api/entities/application.rb'
+ - 'lib/api/entities/application_statistics.rb'
+ - 'lib/api/entities/branch.rb'
- 'lib/api/entities/ci/job.rb'
- - 'lib/api/entities/ci/job_artifact.rb'
- - 'lib/api/entities/ci/pipeline.rb'
- - 'lib/api/entities/ci/pipeline_schedule_details.rb'
- - 'lib/api/entities/ci/runner.rb'
+ - 'lib/api/entities/ci/job_basic.rb'
+ - 'lib/api/entities/ci/job_request/response.rb'
+ - 'lib/api/entities/ci/lint/result.rb'
+ - 'lib/api/entities/ci/pipeline_basic.rb'
- 'lib/api/entities/ci/secure_file.rb'
- - 'lib/api/entities/compare.rb'
- - 'lib/api/entities/deploy_key.rb'
- - 'lib/api/entities/diff_position.rb'
- - 'lib/api/entities/event.rb'
- - 'lib/api/entities/group_detail.rb'
- - 'lib/api/entities/internal/pages/lookup_path.rb'
- - 'lib/api/entities/merge_request_diff.rb'
- - 'lib/api/entities/merge_request_simple.rb'
- - 'lib/api/entities/pages_domain.rb'
- - 'lib/api/entities/pages_domain_basic.rb'
- - 'lib/api/entities/protected_ref_access.rb'
+ - 'lib/api/entities/ci/variable.rb'
+ - 'lib/api/entities/commit.rb'
+ - 'lib/api/entities/conan_package/conan_package_snapshot.rb'
+ - 'lib/api/entities/conan_package/conan_recipe_snapshot.rb'
+ - 'lib/api/entities/container_registry.rb'
+ - 'lib/api/entities/issue.rb'
+ - 'lib/api/entities/issue_basic.rb'
+ - 'lib/api/entities/npm_package.rb'
+ - 'lib/api/entities/nuget/dependency_group.rb'
+ - 'lib/api/entities/nuget/package_metadata.rb'
+ - 'lib/api/entities/nuget/package_metadata_catalog_entry.rb'
+ - 'lib/api/entities/nuget/packages_metadata.rb'
+ - 'lib/api/entities/nuget/packages_metadata_item.rb'
+ - 'lib/api/entities/nuget/search_result.rb'
+ - 'lib/api/entities/nuget/search_results.rb'
+ - 'lib/api/entities/packages/debian/distribution.rb'
+ - 'lib/api/entities/project.rb'
- 'lib/api/entities/pull_mirror.rb'
- 'lib/api/entities/release.rb'
+ - 'lib/api/entities/resource_access_token.rb'
+ - 'lib/api/entities/user_basic.rb'
- 'lib/api/environments.rb'
+ - 'lib/api/error_tracking/client_keys.rb'
- 'lib/api/error_tracking/project_settings.rb'
+ - 'lib/api/events.rb'
- 'lib/api/feature_flags.rb'
- - 'lib/api/feature_flags_user_lists.rb'
- - 'lib/api/features.rb'
- - 'lib/api/freeze_periods.rb'
+ - 'lib/api/files.rb'
+ - 'lib/api/go_proxy.rb'
+ - 'lib/api/group_container_repositories.rb'
+ - 'lib/api/group_labels.rb'
+ - 'lib/api/group_packages.rb'
+ - 'lib/api/groups.rb'
- 'lib/api/helm_packages.rb'
- - 'lib/api/helpers/internal_helpers.rb'
- - 'lib/api/internal/pages.rb'
+ - 'lib/api/helpers.rb'
+ - 'lib/api/helpers/custom_attributes.rb'
+ - 'lib/api/helpers/events_helpers.rb'
+ - 'lib/api/helpers/groups_helpers.rb'
+ - 'lib/api/helpers/label_helpers.rb'
+ - 'lib/api/helpers/merge_requests_helpers.rb'
+ - 'lib/api/helpers/snippets_helpers.rb'
+ - 'lib/api/internal/mail_room.rb'
+ - 'lib/api/issue_links.rb'
- 'lib/api/issues.rb'
+ - 'lib/api/keys.rb'
+ - 'lib/api/labels.rb'
+ - 'lib/api/members.rb'
- 'lib/api/merge_requests.rb'
+ - 'lib/api/metrics/dashboard/annotations.rb'
+ - 'lib/api/metrics/user_starred_dashboards.rb'
+ - 'lib/api/milestone_responses.rb'
+ - 'lib/api/ml/mlflow.rb'
+ - 'lib/api/notes.rb'
+ - 'lib/api/nuget_project_packages.rb'
+ - 'lib/api/pages.rb'
+ - 'lib/api/pages_domains.rb'
+ - 'lib/api/pagination_params.rb'
+ - 'lib/api/personal_access_tokens.rb'
- 'lib/api/project_container_repositories.rb'
+ - 'lib/api/project_export.rb'
- 'lib/api/project_import.rb'
+ - 'lib/api/project_packages.rb'
+ - 'lib/api/project_snippets.rb'
+ - 'lib/api/project_templates.rb'
+ - 'lib/api/projects.rb'
- 'lib/api/protected_branches.rb'
- - 'lib/api/release/links.rb'
+ - 'lib/api/protected_tags.rb'
- 'lib/api/releases.rb'
- 'lib/api/remote_mirrors.rb'
- 'lib/api/repositories.rb'
- - 'lib/api/search.rb'
- - 'lib/api/submodules.rb'
+ - 'lib/api/resource_access_tokens.rb'
+ - 'lib/api/settings.rb'
+ - 'lib/api/snippets.rb'
+ - 'lib/api/system_hooks.rb'
- 'lib/api/tags.rb'
- - 'lib/api/unleash.rb'
+ - 'lib/api/terraform/state.rb'
+ - 'lib/api/topics.rb'
+ - 'lib/api/usage_data.rb'
- 'lib/api/users.rb'
- - 'lib/api/wikis.rb'
- - 'lib/banzai/filter/commit_trailers_filter.rb'
+ - 'lib/api/v3/github.rb'
+ - 'lib/backup/manager.rb'
+ - 'lib/banzai/filter/references/abstract_reference_filter.rb'
- 'lib/banzai/filter/references/commit_range_reference_filter.rb'
+ - 'lib/banzai/filter/references/commit_reference_filter.rb'
- 'lib/banzai/filter/references/merge_request_reference_filter.rb'
- 'lib/banzai/filter/references/snippet_reference_filter.rb'
- - 'lib/banzai/pipeline.rb'
- - 'lib/banzai/reference_parser/base_parser.rb'
- - 'lib/bulk_imports/common/pipelines/badges_pipeline.rb'
- - 'lib/feature.rb'
+ - 'lib/bitbucket_server/connection.rb'
- 'lib/gem_extensions/active_record/disable_joins/associations/association_scope.rb'
- - 'lib/generators/gitlab/usage_metric_definition_generator.rb'
+ - 'lib/generators/gitlab/partitioning/foreign_keys_generator.rb'
+ - 'lib/gitlab/alert_management/payload/managed_prometheus.rb'
+ - 'lib/gitlab/alert_management/payload/prometheus.rb'
+ - 'lib/gitlab/auth/ldap/adapter.rb'
- 'lib/gitlab/background_migration/backfill_ci_queuing_tables.rb'
- 'lib/gitlab/background_migration/backfill_integrations_enable_ssl_verification.rb'
- - 'lib/gitlab/background_migration/backfill_project_repositories.rb'
- - 'lib/gitlab/background_migration/batching_strategies/base_strategy.rb'
- - 'lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb'
- - 'lib/gitlab/background_migration/legacy_upload_mover.rb'
+ - 'lib/gitlab/background_migration/disable_legacy_open_source_license_for_no_issues_no_repo_projects.rb'
+ - 'lib/gitlab/background_migration/disable_legacy_open_source_license_for_one_member_no_repo_projects.rb'
+ - 'lib/gitlab/background_migration/encrypt_integration_properties.rb'
+ - 'lib/gitlab/background_migration/fix_incoherent_packages_size_on_project_statistics.rb'
- 'lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings.rb'
- - 'lib/gitlab/ci/config/entry/artifacts.rb'
- - 'lib/gitlab/ci/config/entry/bridge.rb'
- - 'lib/gitlab/ci/config/entry/cache.rb'
- - 'lib/gitlab/ci/config/entry/default.rb'
+ - 'lib/gitlab/background_migration/reset_status_on_container_repositories.rb'
+ - 'lib/gitlab/bare_repository_import/importer.rb'
+ - 'lib/gitlab/bitbucket_server_import/importer.rb'
+ - 'lib/gitlab/chat/command.rb'
+ - 'lib/gitlab/ci/ansi2json/line.rb'
- 'lib/gitlab/ci/config/entry/environment.rb'
- - 'lib/gitlab/ci/config/entry/hooks.rb'
- 'lib/gitlab/ci/config/entry/imageable.rb'
- 'lib/gitlab/ci/config/entry/include.rb'
- - 'lib/gitlab/ci/config/entry/inherit.rb'
- 'lib/gitlab/ci/config/entry/job.rb'
- - 'lib/gitlab/ci/config/entry/key.rb'
- - 'lib/gitlab/ci/config/entry/need.rb'
- - 'lib/gitlab/ci/config/entry/processable.rb'
- 'lib/gitlab/ci/config/entry/product/parallel.rb'
+ - 'lib/gitlab/ci/config/entry/pull_policy.rb'
+ - 'lib/gitlab/ci/config/entry/retry.rb'
- 'lib/gitlab/ci/config/entry/root.rb'
- - 'lib/gitlab/ci/config/entry/rules/rule.rb'
- - 'lib/gitlab/ci/config/entry/service.rb'
- - 'lib/gitlab/ci/config/entry/trigger.rb'
- - 'lib/gitlab/ci/config/entry/workflow.rb'
- - 'lib/gitlab/ci/pipeline/chain/config/process.rb'
- - 'lib/gitlab/ci/trace.rb'
- - 'lib/gitlab/config/loader/yaml.rb'
+ - 'lib/gitlab/ci/config/entry/rules/rule/changes.rb'
+ - 'lib/gitlab/ci/config/extendable/entry.rb'
+ - 'lib/gitlab/ci/config/external/mapper/matcher.rb'
+ - 'lib/gitlab/ci/lint.rb'
+ - 'lib/gitlab/ci/status/stage/common.rb'
+ - 'lib/gitlab/ci/trace/chunked_io.rb'
+ - 'lib/gitlab/ci/variables/collection.rb'
+ - 'lib/gitlab/ci/yaml_processor/result.rb'
+ - 'lib/gitlab/config/entry/node.rb'
+ - 'lib/gitlab/config_checker/external_database_checker.rb'
- 'lib/gitlab/conflict/file.rb'
- - 'lib/gitlab/data_builder/pipeline.rb'
- - 'lib/gitlab/database/background_migration/batched_job.rb'
- - 'lib/gitlab/database/background_migration/batched_migration.rb'
- - 'lib/gitlab/database/load_balancing/resolver.rb'
+ - 'lib/gitlab/cross_project_access.rb'
+ - 'lib/gitlab/data_builder/push.rb'
+ - 'lib/gitlab/database/background_migration/health_status.rb'
+ - 'lib/gitlab/database/consistency_checker.rb'
+ - 'lib/gitlab/database/count/reltuples_count_strategy.rb'
+ - 'lib/gitlab/database/load_balancing/configuration.rb'
+ - 'lib/gitlab/database/load_balancing/service_discovery.rb'
+ - 'lib/gitlab/database/migration_helpers.rb'
+ - 'lib/gitlab/database/migrations/base_background_runner.rb'
+ - 'lib/gitlab/database/partitioning/detached_partition_dropper.rb'
+ - 'lib/gitlab/database/partitioning/partition_manager.rb'
- 'lib/gitlab/database/partitioning/replace_table.rb'
- 'lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb'
- - 'lib/gitlab/database/query_analyzers/restrict_allowed_schemas.rb'
- - 'lib/gitlab/database_importers/instance_administrators/create_group.rb'
- - 'lib/gitlab/database_importers/self_monitoring/project/create_service.rb'
- - 'lib/gitlab/database_importers/self_monitoring/project/delete_service.rb'
- - 'lib/gitlab/diff/file.rb'
+ - 'lib/gitlab/database/rename_reserved_paths_migration/v1/migration_classes.rb'
+ - 'lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base.rb'
+ - 'lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects.rb'
+ - 'lib/gitlab/diff/diff_refs.rb'
- 'lib/gitlab/diff/file_collection/base.rb'
- - 'lib/gitlab/diff/suggestion.rb'
- - 'lib/gitlab/error_tracking/error.rb'
- - 'lib/gitlab/event_store.rb'
+ - 'lib/gitlab/diff/file_collection/paginated_merge_request_diff.rb'
+ - 'lib/gitlab/diff/line.rb'
+ - 'lib/gitlab/diff/lines_unfolder.rb'
+ - 'lib/gitlab/diff/parser.rb'
+ - 'lib/gitlab/diff/position.rb'
+ - 'lib/gitlab/diff/rendered/notebook/diff_file.rb'
+ - 'lib/gitlab/diff/suggestions_parser.rb'
+ - 'lib/gitlab/email/hook/delivery_metrics_observer.rb'
+ - 'lib/gitlab/error_tracking/detailed_error.rb'
+ - 'lib/gitlab/external_authorization/access.rb'
+ - 'lib/gitlab/gfm/reference_rewriter.rb'
+ - 'lib/gitlab/git/blob.rb'
+ - 'lib/gitlab/git/conflict/file.rb'
- 'lib/gitlab/git/repository.rb'
+ - 'lib/gitlab/git_access.rb'
+ - 'lib/gitlab/gitaly_client/object_pool_service.rb'
- 'lib/gitlab/gitaly_client/operation_service.rb'
- 'lib/gitlab/gitaly_client/remote_service.rb'
+ - 'lib/gitlab/gitaly_client/repository_service.rb'
+ - 'lib/gitlab/gitaly_client/util.rb'
+ - 'lib/gitlab/github_gists_import/importer/gist_importer.rb'
+ - 'lib/gitlab/github_import/importer/issue_importer.rb'
- 'lib/gitlab/github_import/importer/pull_request_importer.rb'
- - 'lib/gitlab/github_import/representation/diff_note.rb'
+ - 'lib/gitlab/github_import/parallel_scheduling.rb'
+ - 'lib/gitlab/github_import/representation/issue.rb'
+ - 'lib/gitlab/github_import/representation/issue_event.rb'
+ - 'lib/gitlab/github_import/representation/note.rb'
+ - 'lib/gitlab/github_import/representation/protected_branch.rb'
+ - 'lib/gitlab/github_import/representation/pull_request.rb'
+ - 'lib/gitlab/gl_repository/repo_type.rb'
+ - 'lib/gitlab/gon_helper.rb'
- 'lib/gitlab/gpg.rb'
- - 'lib/gitlab/graphs/commits.rb'
- - 'lib/gitlab/kubernetes/kube_client.rb'
- - 'lib/gitlab/legacy_github_import/client.rb'
- - 'lib/gitlab/metrics/methods.rb'
- - 'lib/gitlab/middleware/read_only/controller.rb'
- - 'lib/gitlab/net_http_adapter.rb'
- - 'lib/gitlab/octokit/middleware.rb'
+ - 'lib/gitlab/graphql/deprecation.rb'
+ - 'lib/gitlab/graphql/expose_permissions.rb'
+ - 'lib/gitlab/graphql/mount_mutation.rb'
+ - 'lib/gitlab/graphql/negatable_arguments.rb'
+ - 'lib/gitlab/http_connection_adapter.rb'
+ - 'lib/gitlab/import_export/base/relation_object_saver.rb'
+ - 'lib/gitlab/import_export/importer.rb'
+ - 'lib/gitlab/import_export/members_mapper.rb'
+ - 'lib/gitlab/import_export/project/tree_restorer.rb'
+ - 'lib/gitlab/import_export/snippet_repo_saver.rb'
+ - 'lib/gitlab/import_export/snippets_repo_restorer.rb'
+ - 'lib/gitlab/import_export/snippets_repo_saver.rb'
+ - 'lib/gitlab/issuable/clone/copy_resource_events_service.rb'
+ - 'lib/gitlab/legacy_github_import/importer.rb'
+ - 'lib/gitlab/markdown_cache/redis/store.rb'
+ - 'lib/gitlab/memory/reports_uploader.rb'
+ - 'lib/gitlab/memory/watchdog/configurator.rb'
+ - 'lib/gitlab/metrics/dashboard/importers/prometheus_metrics.rb'
+ - 'lib/gitlab/metrics/requests_rack_middleware.rb'
+ - 'lib/gitlab/other_markup.rb'
- 'lib/gitlab/phabricator_import/cache/map.rb'
- - 'lib/gitlab/quick_actions/command_definition.rb'
+ - 'lib/gitlab/phabricator_import/conduit/maniphest.rb'
+ - 'lib/gitlab/phabricator_import/conduit/response.rb'
+ - 'lib/gitlab/phabricator_import/conduit/user.rb'
+ - 'lib/gitlab/phabricator_import/issues/importer.rb'
+ - 'lib/gitlab/phabricator_import/user_finder.rb'
+ - 'lib/gitlab/project_authorizations.rb'
- 'lib/gitlab/redis/multi_store.rb'
- - 'lib/gitlab/search/abuse_detection.rb'
+ - 'lib/gitlab/request_context.rb'
+ - 'lib/gitlab/routing.rb'
+ - 'lib/gitlab/sanitizers/exif.rb'
+ - 'lib/gitlab/search_context.rb'
+ - 'lib/gitlab/seeders/ci/runner/runner_fleet_pipeline_seeder.rb'
+ - 'lib/gitlab/setup_helper.rb'
+ - 'lib/gitlab/sidekiq_config/worker.rb'
- 'lib/gitlab/sidekiq_daemon/memory_killer.rb'
- 'lib/gitlab/spamcheck/client.rb'
- - 'lib/gitlab/url_builder.rb'
- - 'lib/gitlab/utils/delegator_override/validator.rb'
- - 'lib/gitlab/web_ide/config.rb'
- - 'lib/gitlab/web_ide/config/entry/global.rb'
- - 'lib/gitlab/web_ide/config/entry/terminal.rb'
- - 'lib/mattermost/command.rb'
- - 'lib/safe_zip/extract.rb'
+ - 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb'
+ - 'lib/gitlab/usage_data.rb'
+ - 'lib/gitlab/usage_data_counters/ci_template_unique_counter.rb'
+ - 'lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb'
+ - 'lib/peek/views/detailed_view.rb'
+ - 'lib/peek/views/redis_detailed.rb'
+ - 'lib/tasks/gems.rake'
+ - 'lib/tasks/gitlab/feature_categories.rake'
+ - 'lib/tasks/gitlab/seed.rake'
+ - 'lib/tasks/gitlab/seed/runner_fleet.rake'
- 'lib/tasks/gitlab/shell.rake'
- - 'lib/tasks/gitlab/update_templates.rake'
- - 'qa/qa/ee/resource/license.rb'
+ - 'lib/tasks/gitlab/uploads/sanitize.rake'
+ - 'qa/qa/ce/strategy.rb'
+ - 'qa/qa/ee/page/component/secure_report.rb'
+ - 'qa/qa/ee/resource/epic.rb'
+ - 'qa/qa/ee/resource/group_iteration.rb'
+ - 'qa/qa/ee/resource/scan_result_policy_commit.rb'
- 'qa/qa/ee/resource/vulnerability_item.rb'
- - 'qa/qa/page/component/groups_filter.rb'
+ - 'qa/qa/page/base.rb'
+ - 'qa/qa/page/project/issue/show.rb'
+ - 'qa/qa/page/project/web_ide/edit.rb'
+ - 'qa/qa/resource/badge_base.rb'
+ - 'qa/qa/resource/bulk_import_group.rb'
+ - 'qa/qa/resource/file.rb'
+ - 'qa/qa/resource/group_base.rb'
+ - 'qa/qa/resource/group_milestone.rb'
+ - 'qa/qa/resource/issue.rb'
+ - 'qa/qa/resource/job.rb'
- 'qa/qa/resource/members.rb'
- - 'qa/qa/resource/personal_access_token.rb'
+ - 'qa/qa/resource/protected_branch.rb'
+ - 'qa/qa/resource/registry_repository.rb'
+ - 'qa/qa/resource/repository/commit.rb'
+ - 'qa/qa/resource/repository/push.rb'
- 'qa/qa/resource/user.rb'
- - 'qa/qa/scenario/shared_attributes.rb'
- - 'qa/qa/specs/features/api/1_manage/user_inherited_access_spec.rb'
- - 'qa/qa/specs/features/api/3_create/repository/storage_size_spec.rb'
- - 'qa/qa/specs/features/api/8_monitor/metrics_spec.rb'
+ - 'qa/qa/scenario/test/instance/review_blocking.rb'
+ - 'qa/qa/scenario/test/instance/review_non_blocking.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/changing_repository_storage_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/praefect_connectivity_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/praefect_dataloss_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/praefect_replication_queue_spec.rb'
+ - 'qa/qa/specs/features/api/12_systems/gitaly/praefect_repo_sync_spec.rb'
+ - 'qa/qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb'
+ - 'qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb'
+ - 'qa/qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb'
+ - 'qa/qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/group/group_member_access_request_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/group/transfer_group_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/project/dashboard_images_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/1_manage/user/parent_group_access_termination_spec.rb'
- 'qa/qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/pages/new_static_page_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_creation_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_manipulation_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_directory_management_spec.rb'
- - 'qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_file_upload_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_list_spec.rb'
- - 'qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_page_deletion_spec.rb'
- - 'qa/qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb'
- 'qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb'
- - 'qa/qa/specs/features/browser_ui/3_create/web_ide/open_fork_in_web_ide_spec.rb'
- - 'qa/qa/specs/features/browser_ui/4_verify/ci_variable/prefill_variables_spec.rb'
- - 'qa/qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/3_create/web_ide_new/add_new_directory_in_web_ide_spec.rb'
- 'qa/qa/specs/features/browser_ui/4_verify/pipeline/pipeline_with_image_pull_policy_spec.rb'
- 'qa/qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb'
- 'qa/qa/specs/features/browser_ui/5_package/package_registry/nuget/nuget_project_level_spec.rb'
- 'qa/qa/specs/features/browser_ui/5_package/package_registry/rubygems_registry_spec.rb'
+ - 'qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb'
+ - 'qa/qa/specs/features/ee/api/12_systems/geo/geo_nodes_spec.rb'
+ - 'qa/qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_2_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/10_govern/policies_list_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/overage_modal_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/purchase_ci_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/purchase_storage_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/upgrade_group_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/user_registration_billing_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/rename_replication_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/database_delete_replication_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/geo_replication_ci_job_log_artifacts_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/geo_replication_maven_package_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/geo_replication_npm_registry_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/geo_replication_project_snippets_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/http_push_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/http_push_to_secondary_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/ssh_push_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/ssh_push_to_secondary_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/wiki_http_push_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/wiki_http_push_to_secondary_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/wiki_ssh_push_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/12_systems/geo/wiki_ssh_push_to_secondary_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/13_secure/merge_request_license_widget_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/14_model_ops/suggested_reviewer_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/1_manage/group/group_saml_enforced_sso_git_access_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/1_manage/group/group_saml_non_enforced_sso_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/1_manage/group/prevent_forking_outside_group_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/1_manage/group/restrict_by_ip_address_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/3_create/group_wiki/delete_group_wiki_page_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/3_create/group_wiki/file_upload_group_wiki_page_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb'
- 'qa/qa/specs/features/ee/browser_ui/4_verify/job_trace_archival_spec.rb'
- - 'qa/qa/tools/delete_test_snippets.rb'
- - 'qa/qa/tools/delete_user_projects.rb'
- - 'qa/qa/tools/generate_perf_testdata.rb'
- - 'qa/qa/tools/revoke_user_personal_access_tokens.rb'
- - 'qa/spec/git/repository_spec.rb'
- - 'qa/spec/runtime/env_spec.rb'
- - 'scripts/changed-feature-flags'
- - 'sidekiq_cluster/cli.rb'
- - 'spec/bin/feature_flag_spec.rb'
- - 'spec/controllers/admin/ci/variables_controller_spec.rb'
- - 'spec/controllers/admin/clusters_controller_spec.rb'
- - 'spec/controllers/concerns/redis_tracking_spec.rb'
+ - 'qa/qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb'
+ - 'qa/qa/vendor/jira/jira_api.rb'
+ - 'qa/spec/support/loglinking_spec.rb'
+ - 'rubocop/cop/gitlab/finder_with_find_by.rb'
+ - 'rubocop/cop/qa/ambiguous_page_object_name.rb'
+ - 'rubocop/cop/rspec/modify_sidekiq_middleware.rb'
+ - 'scripts/packages/automated_cleanup.rb'
+ - 'scripts/rubocop-parse'
+ - 'sidekiq_cluster/sidekiq_cluster.rb'
+ - 'spec/benchmarks/banzai_benchmark.rb'
+ - 'spec/components/previews/pajamas/alert_component_preview.rb'
+ - 'spec/components/previews/pajamas/banner_component_preview.rb'
+ - 'spec/components/previews/pajamas/button_component_preview.rb'
+ - 'spec/controllers/admin/spam_logs_controller_spec.rb'
+ - 'spec/controllers/admin/users_controller_spec.rb'
+ - 'spec/controllers/concerns/analytics/cycle_analytics/value_stream_actions_spec.rb'
+ - 'spec/controllers/concerns/continue_params_spec.rb'
+ - 'spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb'
+ - 'spec/controllers/concerns/product_analytics_tracking_spec.rb'
- 'spec/controllers/concerns/renders_commits_spec.rb'
+ - 'spec/controllers/confirmations_controller_spec.rb'
+ - 'spec/controllers/every_controller_spec.rb'
- 'spec/controllers/graphql_controller_spec.rb'
- - 'spec/controllers/groups/clusters_controller_spec.rb'
+ - 'spec/controllers/groups/group_members_controller_spec.rb'
- 'spec/controllers/groups/milestones_controller_spec.rb'
- 'spec/controllers/groups/variables_controller_spec.rb'
- - 'spec/controllers/groups_controller_spec.rb'
+ - 'spec/controllers/help_controller_spec.rb'
+ - 'spec/controllers/import/bitbucket_controller_spec.rb'
+ - 'spec/controllers/import/bulk_imports_controller_spec.rb'
+ - 'spec/controllers/import/fogbugz_controller_spec.rb'
+ - 'spec/controllers/oauth/authorizations_controller_spec.rb'
+ - 'spec/controllers/oauth/jira_dvcs/authorizations_controller_spec.rb'
+ - 'spec/controllers/omniauth_callbacks_controller_spec.rb'
+ - 'spec/controllers/passwords_controller_spec.rb'
- 'spec/controllers/profiles_controller_spec.rb'
- 'spec/controllers/projects/artifacts_controller_spec.rb'
+ - 'spec/controllers/projects/blame_controller_spec.rb'
+ - 'spec/controllers/projects/blob_controller_spec.rb'
- 'spec/controllers/projects/branches_controller_spec.rb'
- 'spec/controllers/projects/clusters_controller_spec.rb'
- 'spec/controllers/projects/commit_controller_spec.rb'
- - 'spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb'
+ - 'spec/controllers/projects/commits_controller_spec.rb'
+ - 'spec/controllers/projects/cycle_analytics_controller_spec.rb'
+ - 'spec/controllers/projects/deploy_keys_controller_spec.rb'
+ - 'spec/controllers/projects/deployments_controller_spec.rb'
+ - 'spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb'
- 'spec/controllers/projects/environments_controller_spec.rb'
- - 'spec/controllers/projects/feature_flags_clients_controller_spec.rb'
+ - 'spec/controllers/projects/feature_flags_controller_spec.rb'
+ - 'spec/controllers/projects/find_file_controller_spec.rb'
- 'spec/controllers/projects/forks_controller_spec.rb'
- 'spec/controllers/projects/grafana_api_controller_spec.rb'
- 'spec/controllers/projects/issues_controller_spec.rb'
- 'spec/controllers/projects/jobs_controller_spec.rb'
+ - 'spec/controllers/projects/mattermosts_controller_spec.rb'
+ - 'spec/controllers/projects/merge_requests/conflicts_controller_spec.rb'
- 'spec/controllers/projects/merge_requests/creations_controller_spec.rb'
+ - 'spec/controllers/projects/merge_requests/diffs_controller_spec.rb'
+ - 'spec/controllers/projects/merge_requests/drafts_controller_spec.rb'
- 'spec/controllers/projects/merge_requests_controller_spec.rb'
- - 'spec/controllers/projects/pipeline_schedules_controller_spec.rb'
- - 'spec/controllers/projects/pipelines/tests_controller_spec.rb'
+ - 'spec/controllers/projects/notes_controller_spec.rb'
- 'spec/controllers/projects/pipelines_controller_spec.rb'
- - 'spec/controllers/projects/service_desk_controller_spec.rb'
+ - 'spec/controllers/projects/prometheus/alerts_controller_spec.rb'
+ - 'spec/controllers/projects/raw_controller_spec.rb'
+ - 'spec/controllers/projects/refs_controller_spec.rb'
+ - 'spec/controllers/projects/registry/repositories_controller_spec.rb'
+ - 'spec/controllers/projects/registry/tags_controller_spec.rb'
- 'spec/controllers/projects/settings/ci_cd_controller_spec.rb'
- - 'spec/controllers/projects/settings/operations_controller_spec.rb'
- - 'spec/controllers/projects/tags_controller_spec.rb'
- - 'spec/controllers/projects/todos_controller_spec.rb'
- - 'spec/controllers/projects/variables_controller_spec.rb'
+ - 'spec/controllers/projects/settings/merge_requests_controller_spec.rb'
+ - 'spec/controllers/projects/snippets/blobs_controller_spec.rb'
+ - 'spec/controllers/projects/snippets_controller_spec.rb'
+ - 'spec/controllers/projects/tree_controller_spec.rb'
- 'spec/controllers/projects_controller_spec.rb'
- - 'spec/factories/ci/pipelines.rb'
- - 'spec/factories/clusters/clusters.rb'
+ - 'spec/controllers/registrations_controller_spec.rb'
+ - 'spec/controllers/search_controller_spec.rb'
+ - 'spec/controllers/sessions_controller_spec.rb'
+ - 'spec/controllers/snippets/blobs_controller_spec.rb'
+ - 'spec/factories/ci/processable.rb'
- 'spec/factories/draft_note.rb'
- - 'spec/factories/integrations.rb'
- - 'spec/factories/merge_requests.rb'
+ - 'spec/factories/environments.rb'
+ - 'spec/factories/group_members.rb'
+ - 'spec/factories/ml/candidates.rb'
- 'spec/factories/notes.rb'
+ - 'spec/features/admin/admin_mode/login_spec.rb'
- 'spec/features/admin/integrations/user_activates_mattermost_slash_command_spec.rb'
- - 'spec/features/broadcast_messages_spec.rb'
+ - 'spec/features/atom/issues_spec.rb'
+ - 'spec/features/atom/merge_requests_spec.rb'
+ - 'spec/features/atom/users_spec.rb'
+ - 'spec/features/boards/issue_ordering_spec.rb'
+ - 'spec/features/boards/multi_select_spec.rb'
+ - 'spec/features/boards/sidebar_assignee_spec.rb'
+ - 'spec/features/calendar_spec.rb'
- 'spec/features/clusters/cluster_health_dashboard_spec.rb'
+ - 'spec/features/commits_spec.rb'
+ - 'spec/features/dashboard/activity_spec.rb'
+ - 'spec/features/dashboard/datetime_on_tooltips_spec.rb'
- 'spec/features/dashboard/merge_requests_spec.rb'
- - 'spec/features/help_dropdown_spec.rb'
+ - 'spec/features/dashboard/todos/todos_sorting_spec.rb'
+ - 'spec/features/dashboard/todos/todos_spec.rb'
+ - 'spec/features/error_tracking/user_filters_errors_by_status_spec.rb'
+ - 'spec/features/error_tracking/user_searches_sentry_errors_spec.rb'
+ - 'spec/features/error_tracking/user_sees_error_details_spec.rb'
+ - 'spec/features/error_tracking/user_sees_error_index_spec.rb'
+ - 'spec/features/groups_spec.rb'
+ - 'spec/features/help_pages_spec.rb'
+ - 'spec/features/ics/dashboard_issues_spec.rb'
+ - 'spec/features/ics/group_issues_spec.rb'
+ - 'spec/features/ics/project_issues_spec.rb'
+ - 'spec/features/incidents/incident_timeline_events_spec.rb'
+ - 'spec/features/incidents/user_views_incident_spec.rb'
- 'spec/features/issuables/issuable_list_spec.rb'
- - 'spec/features/issues/filtered_search/filter_issues_spec.rb'
- - 'spec/features/merge_request/user_creates_mr_spec.rb'
+ - 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
+ - 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
+ - 'spec/features/issues/user_filters_issues_spec.rb'
+ - 'spec/features/jira_oauth_provider_authorize_spec.rb'
+ - 'spec/features/markdown/gitlab_flavored_markdown_spec.rb'
+ - 'spec/features/merge_request/maintainer_edits_fork_spec.rb'
+ - 'spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb'
+ - 'spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb'
+ - 'spec/features/merge_request/user_creates_merge_request_spec.rb'
+ - 'spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb'
+ - 'spec/features/merge_request/user_merges_immediately_spec.rb'
- 'spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb'
- 'spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb'
+ - 'spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb'
+ - 'spec/features/merge_request/user_posts_notes_spec.rb'
+ - 'spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb'
- 'spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb'
- - 'spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb'
- - 'spec/features/merge_request/user_sees_discussions_spec.rb'
+ - 'spec/features/merge_request/user_resolves_wip_mr_spec.rb'
+ - 'spec/features/merge_request/user_sees_deployment_widget_spec.rb'
+ - 'spec/features/merge_request/user_sees_discussions_navigation_spec.rb'
+ - 'spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb'
- 'spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb'
- 'spec/features/merge_request/user_sees_merge_widget_spec.rb'
+ - 'spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb'
+ - 'spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb'
+ - 'spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb'
+ - 'spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb'
- 'spec/features/merge_request/user_sees_pipelines_spec.rb'
- 'spec/features/merge_request/user_sees_versions_spec.rb'
+ - 'spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb'
+ - 'spec/features/merge_request/user_squashes_merge_request_spec.rb'
+ - 'spec/features/merge_request/user_suggests_changes_on_diff_spec.rb'
+ - 'spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb'
+ - 'spec/features/merge_request/user_uses_quick_actions_spec.rb'
- 'spec/features/merge_requests/user_lists_merge_requests_spec.rb'
- 'spec/features/merge_requests/user_views_open_merge_requests_spec.rb'
- 'spec/features/nav/top_nav_tooltip_spec.rb'
+ - 'spec/features/oauth_provider_authorize_spec.rb'
+ - 'spec/features/participants_autocomplete_spec.rb'
+ - 'spec/features/profile_spec.rb'
+ - 'spec/features/profiles/active_sessions_spec.rb'
+ - 'spec/features/profiles/keys_spec.rb'
- 'spec/features/profiles/user_changes_notified_of_own_activity_spec.rb'
+ - 'spec/features/projects/activity/user_sees_activity_spec.rb'
+ - 'spec/features/projects/badges/coverage_spec.rb'
+ - 'spec/features/projects/branches/download_buttons_spec.rb'
- 'spec/features/projects/branches_spec.rb'
+ - 'spec/features/projects/commit/builds_spec.rb'
- 'spec/features/projects/commit/mini_pipeline_graph_spec.rb'
+ - 'spec/features/projects/commits/user_browses_commits_spec.rb'
- 'spec/features/projects/environments/environment_spec.rb'
- 'spec/features/projects/environments/environments_spec.rb'
- - 'spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb'
+ - 'spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb'
+ - 'spec/features/projects/files/download_buttons_spec.rb'
- 'spec/features/projects/files/editing_a_file_spec.rb'
- - 'spec/features/projects/files/project_owner_creates_license_file_spec.rb'
- 'spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb'
- 'spec/features/projects/files/user_browses_a_tree_with_a_folder_containing_only_a_folder_spec.rb'
- - 'spec/features/projects/files/user_reads_pipeline_status_spec.rb'
- 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- - 'spec/features/projects/jobs_spec.rb'
+ - 'spec/features/projects/jobs/user_browses_jobs_spec.rb'
+ - 'spec/features/projects/members/group_member_cannot_request_access_to_his_group_project_spec.rb'
+ - 'spec/features/projects/members/group_requester_cannot_request_access_to_project_spec.rb'
+ - 'spec/features/projects/members/user_requests_access_spec.rb'
- 'spec/features/projects/pipelines/pipeline_spec.rb'
- 'spec/features/projects/pipelines/pipelines_spec.rb'
- - 'spec/features/tags/developer_deletes_tag_spec.rb'
- - 'spec/finders/ci/commit_statuses_finder_spec.rb'
+ - 'spec/features/projects/releases/user_views_release_spec.rb'
+ - 'spec/features/projects/settings/external_authorization_service_settings_spec.rb'
+ - 'spec/features/projects/settings/monitor_settings_spec.rb'
+ - 'spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb'
+ - 'spec/features/projects/settings/registry_settings_spec.rb'
+ - 'spec/features/projects/show/download_buttons_spec.rb'
+ - 'spec/features/projects/show/user_interacts_with_auto_devops_banner_spec.rb'
+ - 'spec/features/projects/tags/download_buttons_spec.rb'
+ - 'spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb'
+ - 'spec/features/search/user_searches_for_milestones_spec.rb'
+ - 'spec/features/search/user_searches_for_wiki_pages_spec.rb'
+ - 'spec/features/snippets/spam_snippets_spec.rb'
+ - 'spec/features/snippets/user_creates_snippet_spec.rb'
+ - 'spec/features/task_lists_spec.rb'
+ - 'spec/features/u2f_spec.rb'
+ - 'spec/features/user_sees_revert_modal_spec.rb'
+ - 'spec/features/users/email_verification_on_login_spec.rb'
+ - 'spec/features/users/login_spec.rb'
+ - 'spec/features/users/overview_spec.rb'
+ - 'spec/finders/alert_management/alerts_finder_spec.rb'
- 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb'
- - 'spec/finders/clusters/knative_services_finder_spec.rb'
- - 'spec/finders/clusters/kubernetes_namespace_finder_spec.rb'
+ - 'spec/finders/deployments_finder_spec.rb'
- 'spec/finders/group_descendants_finder_spec.rb'
- - 'spec/finders/incident_management/timeline_event_tags_finder_spec.rb'
- - 'spec/finders/keys_finder_spec.rb'
+ - 'spec/finders/groups/accepting_group_transfers_finder_spec.rb'
+ - 'spec/finders/groups/accepting_project_transfers_finder_spec.rb'
- 'spec/finders/merge_requests_finder_spec.rb'
- - 'spec/finders/personal_access_tokens_finder_spec.rb'
+ - 'spec/finders/notes_finder_spec.rb'
+ - 'spec/finders/snippets_finder_spec.rb'
+ - 'spec/finders/users_finder_spec.rb'
+ - 'spec/frontend/fixtures/autocomplete.rb'
+ - 'spec/frontend/fixtures/autocomplete_sources.rb'
+ - 'spec/frontend/fixtures/environments.rb'
- 'spec/frontend/fixtures/issues.rb'
- - 'spec/frontend/fixtures/merge_requests.rb'
- - 'spec/frontend/fixtures/merge_requests_diffs.rb'
- - 'spec/frontend/fixtures/projects_json.rb'
+ - 'spec/frontend/fixtures/releases.rb'
- 'spec/frontend/fixtures/search.rb'
- - 'spec/graphql/mutations/ci/job_token_scope/remove_project_spec.rb'
- - 'spec/graphql/mutations/customer_relations/contacts/create_spec.rb'
- - 'spec/graphql/mutations/customer_relations/organizations/create_spec.rb'
- - 'spec/graphql/mutations/dependency_proxy/group_settings/update_spec.rb'
- - 'spec/graphql/mutations/dependency_proxy/image_ttl_group_policy/update_spec.rb'
- - 'spec/graphql/mutations/incident_management/timeline_event/create_spec.rb'
- - 'spec/graphql/mutations/namespace/package_settings/update_spec.rb'
- - 'spec/graphql/resolvers/environments/last_deployment_resolver_spec.rb'
- - 'spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb'
+ - 'spec/graphql/features/authorization_spec.rb'
+ - 'spec/graphql/mutations/issues/set_assignees_spec.rb'
+ - 'spec/graphql/mutations/merge_requests/create_spec.rb'
+ - 'spec/graphql/mutations/merge_requests/set_assignees_spec.rb'
+ - 'spec/graphql/mutations/merge_requests/set_reviewers_spec.rb'
+ - 'spec/graphql/mutations/release_asset_links/update_spec.rb'
+ - 'spec/graphql/mutations/releases/update_spec.rb'
+ - 'spec/graphql/resolvers/board_lists_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/config_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/group_runners_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/jobs_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/project_runners_resolver_spec.rb'
+ - 'spec/graphql/resolvers/ci/runners_resolver_spec.rb'
+ - 'spec/graphql/resolvers/concerns/looks_ahead_spec.rb'
+ - 'spec/graphql/resolvers/concerns/resolves_groups_spec.rb'
+ - 'spec/graphql/resolvers/container_repositories_resolver_spec.rb'
+ - 'spec/graphql/resolvers/container_repository_tags_resolver_spec.rb'
+ - 'spec/graphql/resolvers/environments_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_merge_requests_resolver_spec.rb'
+ - 'spec/graphql/resolvers/project_milestones_resolver_spec.rb'
+ - 'spec/graphql/resolvers/work_items_resolver_spec.rb'
+ - 'spec/graphql/types/base_edge_spec.rb'
+ - 'spec/graphql/types/base_field_spec.rb'
+ - 'spec/graphql/types/ci/detailed_status_type_spec.rb'
+ - 'spec/graphql/types/current_user_todos_type_spec.rb'
- 'spec/graphql/types/project_statistics_type_spec.rb'
- 'spec/graphql/types/project_type_spec.rb'
- 'spec/graphql/types/root_storage_statistics_type_spec.rb'
- - 'spec/helpers/notes_helper_spec.rb'
+ - 'spec/graphql/types/todo_type_spec.rb'
+ - 'spec/helpers/avatars_helper_spec.rb'
+ - 'spec/helpers/emoji_helper_spec.rb'
+ - 'spec/helpers/feature_flags_helper_spec.rb'
+ - 'spec/helpers/namespaces_helper_spec.rb'
+ - 'spec/helpers/notify_helper_spec.rb'
+ - 'spec/helpers/page_layout_helper_spec.rb'
+ - 'spec/helpers/routing/pseudonymization_helper_spec.rb'
+ - 'spec/helpers/storage_helper_spec.rb'
- 'spec/helpers/todos_helper_spec.rb'
+ - 'spec/helpers/users/callouts_helper_spec.rb'
+ - 'spec/helpers/users/group_callouts_helper_spec.rb'
+ - 'spec/helpers/visibility_level_helper_spec.rb'
- 'spec/initializers/00_rails_disable_joins_spec.rb'
- - 'spec/initializers/net_http_response_patch_spec.rb'
- 'spec/initializers/secret_token_spec.rb'
+ - 'spec/lib/api/every_api_endpoint_spec.rb'
+ - 'spec/lib/atlassian/jira_connect/client_spec.rb'
- 'spec/lib/atlassian/jira_connect/serializers/feature_flag_entity_spec.rb'
+ - 'spec/lib/backup/dump/postgres_spec.rb'
- 'spec/lib/backup/manager_spec.rb'
+ - 'spec/lib/banzai/filter/kroki_filter_spec.rb'
+ - 'spec/lib/banzai/filter/references/design_reference_filter_spec.rb'
- 'spec/lib/banzai/filter/syntax_highlight_filter_spec.rb'
- - 'spec/lib/banzai/pipeline/wiki_pipeline_spec.rb'
- - 'spec/lib/banzai/pipeline_spec.rb'
- 'spec/lib/banzai/reference_redactor_spec.rb'
- - 'spec/lib/constraints/group_url_constrainer_spec.rb'
- - 'spec/lib/constraints/project_url_constrainer_spec.rb'
- - 'spec/lib/constraints/user_url_constrainer_spec.rb'
+ - 'spec/lib/bulk_imports/common/pipelines/lfs_objects_pipeline_spec.rb'
+ - 'spec/lib/container_registry/blob_spec.rb'
+ - 'spec/lib/container_registry/migration_spec.rb'
+ - 'spec/lib/container_registry/tag_spec.rb'
+ - 'spec/lib/error_tracking/sentry_client/issue_spec.rb'
- 'spec/lib/feature/definition_spec.rb'
+ - 'spec/lib/feature/gitaly_spec.rb'
- 'spec/lib/feature_spec.rb'
+ - 'spec/lib/generators/gitlab/partitioning/foreign_keys_generator_spec.rb'
- 'spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb'
- - 'spec/lib/gitlab/api_authentication/builder_spec.rb'
- - 'spec/lib/gitlab/application_rate_limiter/increment_per_actioned_resource_spec.rb'
- - 'spec/lib/gitlab/asciidoc_spec.rb'
- - 'spec/lib/gitlab/background_migration/backfill_draft_status_on_merge_requests_with_corrected_regex_spec.rb'
+ - 'spec/lib/gitlab/alert_management/payload/prometheus_spec.rb'
+ - 'spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb'
+ - 'spec/lib/gitlab/analytics/date_filler_spec.rb'
+ - 'spec/lib/gitlab/application_context_spec.rb'
+ - 'spec/lib/gitlab/application_rate_limiter_spec.rb'
+ - 'spec/lib/gitlab/auth/otp/strategies/forti_authenticator/manual_otp_spec.rb'
+ - 'spec/lib/gitlab/auth/otp/strategies/forti_authenticator/push_otp_spec.rb'
+ - 'spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb'
+ - 'spec/lib/gitlab/auth/saml/auth_hash_spec.rb'
+ - 'spec/lib/gitlab/auth/saml/user_spec.rb'
+ - 'spec/lib/gitlab/auth/u2f_webauthn_converter_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_ci_queuing_tables_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_cluster_agents_has_vulnerabilities_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_environment_tiers_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_group_features_spec.rb'
- 'spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_namespace_details_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_namespace_id_for_namespace_route_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_namespace_id_of_vulnerability_reads_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_project_member_namespace_id_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_project_namespace_details_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_releases_author_id_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb'
+ - 'spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb'
- 'spec/lib/gitlab/background_migration/batched_migration_job_spec.rb'
+ - 'spec/lib/gitlab/background_migration/copy_column_using_background_migration_job_spec.rb'
+ - 'spec/lib/gitlab/background_migration/delete_orphaned_operational_vulnerabilities_spec.rb'
+ - 'spec/lib/gitlab/background_migration/delete_orphans_approval_merge_request_rules_spec.rb'
+ - 'spec/lib/gitlab/background_migration/delete_orphans_approval_project_rules_spec.rb'
+ - 'spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb'
+ - 'spec/lib/gitlab/background_migration/destroy_invalid_members_spec.rb'
+ - 'spec/lib/gitlab/background_migration/destroy_invalid_project_members_spec.rb'
+ - 'spec/lib/gitlab/background_migration/disable_legacy_open_source_licence_for_recent_public_projects_spec.rb'
- 'spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_inactive_public_projects_spec.rb'
+ - 'spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb'
+ - 'spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb'
+ - 'spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_projects_less_than_five_mb_spec.rb'
+ - 'spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb'
+ - 'spec/lib/gitlab/background_migration/drop_invalid_security_findings_spec.rb'
+ - 'spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb'
+ - 'spec/lib/gitlab/background_migration/expire_o_auth_tokens_spec.rb'
+ - 'spec/lib/gitlab/background_migration/extract_project_topics_into_separate_table_spec.rb'
+ - 'spec/lib/gitlab/background_migration/fix_incoherent_packages_size_on_project_statistics_spec.rb'
- 'spec/lib/gitlab/background_migration/legacy_upload_mover_spec.rb'
+ - 'spec/lib/gitlab/background_migration/migrate_project_taggings_context_from_tags_to_topics_spec.rb'
+ - 'spec/lib/gitlab/background_migration/migrate_shimo_confluence_integration_category_spec.rb'
+ - 'spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb'
+ - 'spec/lib/gitlab/background_migration/prune_stale_project_export_jobs_spec.rb'
+ - 'spec/lib/gitlab/background_migration/remove_all_trace_expiration_dates_spec.rb'
+ - 'spec/lib/gitlab/background_migration/remove_backfilled_job_artifacts_expire_at_spec.rb'
+ - 'spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb'
+ - 'spec/lib/gitlab/background_migration/remove_self_managed_wiki_notes_spec.rb'
- 'spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb'
+ - 'spec/lib/gitlab/background_migration/sanitize_confidential_todos_spec.rb'
+ - 'spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb'
+ - 'spec/lib/gitlab/background_migration/set_legacy_open_source_license_available_for_non_public_projects_spec.rb'
+ - 'spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb'
+ - 'spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb'
+ - 'spec/lib/gitlab/bare_repository_import/importer_spec.rb'
+ - 'spec/lib/gitlab/bitbucket_import/importer_spec.rb'
+ - 'spec/lib/gitlab/bitbucket_import/project_creator_spec.rb'
+ - 'spec/lib/gitlab/bitbucket_import/wiki_formatter_spec.rb'
+ - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb'
- 'spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb'
- - 'spec/lib/gitlab/checks/matching_merge_request_spec.rb'
+ - 'spec/lib/gitlab/changelog/config_spec.rb'
+ - 'spec/lib/gitlab/checks/changes_access_spec.rb'
+ - 'spec/lib/gitlab/checks/single_change_access_spec.rb'
+ - 'spec/lib/gitlab/ci/badge/pipeline/status_spec.rb'
+ - 'spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb'
- 'spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb'
+ - 'spec/lib/gitlab/ci/build/hook_spec.rb'
+ - 'spec/lib/gitlab/ci/build/policy/changes_spec.rb'
- 'spec/lib/gitlab/ci/build/policy/variables_spec.rb'
- - 'spec/lib/gitlab/ci/build/rules/rule_spec.rb'
- - 'spec/lib/gitlab/ci/build/rules_spec.rb'
+ - 'spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/bridge_spec.rb'
- 'spec/lib/gitlab/ci/config/entry/job_spec.rb'
- - 'spec/lib/gitlab/ci/config/entry/processable_spec.rb'
- - 'spec/lib/gitlab/ci/config/external/file/artifact_spec.rb'
+ - 'spec/lib/gitlab/ci/config/entry/policy_spec.rb'
+ - 'spec/lib/gitlab/ci/config/extendable/entry_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/mapper_spec.rb'
+ - 'spec/lib/gitlab/ci/config/external/rules_spec.rb'
- 'spec/lib/gitlab/ci/parsers/security/common_spec.rb'
- - 'spec/lib/gitlab/ci/parsers/test/junit_spec.rb'
- - 'spec/lib/gitlab/ci/pipeline/chain/assign_partition_spec.rb'
- 'spec/lib/gitlab/ci/pipeline/chain/command_spec.rb'
- - 'spec/lib/gitlab/ci/pipeline/chain/remove_unwanted_chat_jobs_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/populate_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb'
- 'spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb'
- - 'spec/lib/gitlab/ci/pipeline/quota/deployments_spec.rb'
- - 'spec/lib/gitlab/ci/status/bridge/common_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline/seed/build_spec.rb'
+ - 'spec/lib/gitlab/ci/pipeline_object_hierarchy_spec.rb'
+ - 'spec/lib/gitlab/ci/project_config_spec.rb'
+ - 'spec/lib/gitlab/ci/reports/security/finding_key_spec.rb'
- 'spec/lib/gitlab/ci/status/build/factory_spec.rb'
- - 'spec/lib/gitlab/ci/variables/builder/group_spec.rb'
- - 'spec/lib/gitlab/ci/variables/builder/project_spec.rb'
- - 'spec/lib/gitlab/ci/variables/builder_spec.rb'
- - 'spec/lib/gitlab/cleanup/personal_access_tokens_spec.rb'
- - 'spec/lib/gitlab/config/entry/composable_hash_spec.rb'
- - 'spec/lib/gitlab/config/entry/configurable_spec.rb'
- - 'spec/lib/gitlab/current_settings_spec.rb'
- - 'spec/lib/gitlab/data_builder/note_spec.rb'
- - 'spec/lib/gitlab/data_builder/pipeline_spec.rb'
- - 'spec/lib/gitlab/database/background_migration/batched_migration_runner_spec.rb'
+ - 'spec/lib/gitlab/ci/status/build/play_spec.rb'
+ - 'spec/lib/gitlab/ci/status/external/factory_spec.rb'
+ - 'spec/lib/gitlab/ci/status/stage/factory_spec.rb'
+ - 'spec/lib/gitlab/ci/trace/checksum_spec.rb'
+ - 'spec/lib/gitlab/ci/variables/collection_spec.rb'
+ - 'spec/lib/gitlab/ci/yaml_processor_spec.rb'
+ - 'spec/lib/gitlab/conan_token_spec.rb'
+ - 'spec/lib/gitlab/config_checker/external_database_checker_spec.rb'
+ - 'spec/lib/gitlab/cross_project_access/class_methods_spec.rb'
+ - 'spec/lib/gitlab/cross_project_access_spec.rb'
+ - 'spec/lib/gitlab/data_builder/push_spec.rb'
- 'spec/lib/gitlab/database/background_migration/batched_migration_spec.rb'
- 'spec/lib/gitlab/database/background_migration/batched_migration_wrapper_spec.rb'
- - 'spec/lib/gitlab/database/batch_count_spec.rb'
- - 'spec/lib/gitlab/database/each_database_spec.rb'
- - 'spec/lib/gitlab/database/gitlab_schema_spec.rb'
+ - 'spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb'
+ - 'spec/lib/gitlab/database/bulk_update_spec.rb'
- 'spec/lib/gitlab/database/loose_foreign_keys_spec.rb'
- - 'spec/lib/gitlab/database/migration_helpers/restrict_gitlab_schema_spec.rb'
- 'spec/lib/gitlab/database/migration_helpers_spec.rb'
- - 'spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb'
- - 'spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/migrations/constraints_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/migrations/instrumentation_spec.rb'
+ - 'spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb'
+ - 'spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb'
- 'spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb'
- - 'spec/lib/gitlab/database/partitioning_migration_helpers/backfill_partitioned_table_spec.rb'
- - 'spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb'
+ - 'spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb'
+ - 'spec/lib/gitlab/database/postgres_constraint_spec.rb'
- 'spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_base_spec.rb'
- 'spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb'
- - 'spec/lib/gitlab/email/message/repository_push_spec.rb'
+ - 'spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects_spec.rb'
+ - 'spec/lib/gitlab/database/tables_truncate_spec.rb'
+ - 'spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb'
+ - 'spec/lib/gitlab/diff/file_collection/compare_spec.rb'
+ - 'spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb'
+ - 'spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb'
+ - 'spec/lib/gitlab/diff/file_spec.rb'
+ - 'spec/lib/gitlab/diff/highlight_cache_spec.rb'
+ - 'spec/lib/gitlab/diff/line_spec.rb'
+ - 'spec/lib/gitlab/diff/suggestion_diff_spec.rb'
+ - 'spec/lib/gitlab/diff/suggestion_spec.rb'
+ - 'spec/lib/gitlab/diff/suggestions_parser_spec.rb'
+ - 'spec/lib/gitlab/email/hook/delivery_metrics_observer_spec.rb'
+ - 'spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb'
+ - 'spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb'
+ - 'spec/lib/gitlab/etag_caching/router/graphql_spec.rb'
- 'spec/lib/gitlab/external_authorization/client_spec.rb'
- - 'spec/lib/gitlab/fogbugz_import/project_creator_spec.rb'
+ - 'spec/lib/gitlab/external_authorization/logger_spec.rb'
+ - 'spec/lib/gitlab/external_authorization_spec.rb'
+ - 'spec/lib/gitlab/gfm/uploads_rewriter_spec.rb'
- 'spec/lib/gitlab/git/repository_spec.rb'
+ - 'spec/lib/gitlab/git/tree_spec.rb'
+ - 'spec/lib/gitlab/git_access_project_spec.rb'
- 'spec/lib/gitlab/git_access_spec.rb'
- - 'spec/lib/gitlab/github_import/importer/protected_branches_importer_spec.rb'
- - 'spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb'
- - 'spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb'
- - 'spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb'
- - 'spec/lib/gitlab/grape_logging/loggers/token_logger_spec.rb'
- - 'spec/lib/gitlab/graphql/deprecation_spec.rb'
- - 'spec/lib/gitlab/import_export/importer_spec.rb'
- - 'spec/lib/gitlab/import_export/json/streaming_serializer_spec.rb'
- - 'spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb'
+ - 'spec/lib/gitlab/git_access_wiki_spec.rb'
+ - 'spec/lib/gitlab/gitaly_client/commit_service_spec.rb'
+ - 'spec/lib/gitlab/gitaly_client/operation_service_spec.rb'
+ - 'spec/lib/gitlab/gitaly_client/ref_service_spec.rb'
+ - 'spec/lib/gitlab/gitaly_client_spec.rb'
+ - 'spec/lib/gitlab/github_gists_import/importer/gist_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/issue_event_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/labels_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb'
+ - 'spec/lib/gitlab/github_import/importer/pull_request_review_importer_spec.rb'
+ - 'spec/lib/gitlab/graphql/query_analyzers/ast/logger_analyzer_spec.rb'
+ - 'spec/lib/gitlab/health_checks/redis_spec.rb'
+ - 'spec/lib/gitlab/i18n/po_linter_spec.rb'
+ - 'spec/lib/gitlab/import_export/attributes_finder_spec.rb'
+ - 'spec/lib/gitlab/import_export/base/object_builder_spec.rb'
+ - 'spec/lib/gitlab/import_export/base/relation_factory_spec.rb'
+ - 'spec/lib/gitlab/import_export/design_repo_restorer_spec.rb'
+ - 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb'
+ - 'spec/lib/gitlab/import_export/merge_request_parser_spec.rb'
- 'spec/lib/gitlab/import_export/project/object_builder_spec.rb'
- - 'spec/lib/gitlab/import_export/project/relation_saver_spec.rb'
- 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
- - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb'
- - 'spec/lib/gitlab/metrics/dashboard/importer_spec.rb'
- - 'spec/lib/gitlab/metrics/dashboard/importers/prometheus_metrics_spec.rb'
- - 'spec/lib/gitlab/metrics/dashboard/validator/post_schema_validator_spec.rb'
- - 'spec/lib/gitlab/metrics/dashboard/validator_spec.rb'
- - 'spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb'
- - 'spec/lib/gitlab/pagination/keyset/column_order_definition_spec.rb'
+ - 'spec/lib/gitlab/import_export/shared_spec.rb'
+ - 'spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb'
+ - 'spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb'
+ - 'spec/lib/gitlab/instrumentation_helper_spec.rb'
+ - 'spec/lib/gitlab/legacy_github_import/wiki_formatter_spec.rb'
+ - 'spec/lib/gitlab/markdown_cache/redis/extension_spec.rb'
+ - 'spec/lib/gitlab/markdown_cache/redis/store_spec.rb'
+ - 'spec/lib/gitlab/memory/reports_uploader_spec.rb'
+ - 'spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb'
+ - 'spec/lib/gitlab/memory/watchdog/configurator_spec.rb'
+ - 'spec/lib/gitlab/metrics/subscribers/action_view_spec.rb'
+ - 'spec/lib/gitlab/metrics/web_transaction_spec.rb'
+ - 'spec/lib/gitlab/middleware/multipart_spec.rb'
+ - 'spec/lib/gitlab/pagination_delegate_spec.rb'
+ - 'spec/lib/gitlab/path_regex_spec.rb'
+ - 'spec/lib/gitlab/phabricator_import/cache/map_spec.rb'
+ - 'spec/lib/gitlab/phabricator_import/conduit/maniphest_spec.rb'
- 'spec/lib/gitlab/phabricator_import/conduit/response_spec.rb'
- - 'spec/lib/gitlab/redis/duplicate_jobs_spec.rb'
- - 'spec/lib/gitlab/redis/multi_store_spec.rb'
+ - 'spec/lib/gitlab/phabricator_import/conduit/user_spec.rb'
+ - 'spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb'
+ - 'spec/lib/gitlab/profiler_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb'
+ - 'spec/lib/gitlab/prometheus/queries/knative_invocation_query_spec.rb'
+ - 'spec/lib/gitlab/redis/repository_cache_spec.rb'
- 'spec/lib/gitlab/redis/sidekiq_status_spec.rb'
+ - 'spec/lib/gitlab/repository_cache/preloader_spec.rb'
+ - 'spec/lib/gitlab/repository_cache_spec.rb'
+ - 'spec/lib/gitlab/search_context/builder_spec.rb'
+ - 'spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_config_spec.rb'
- 'spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb'
+ - 'spec/lib/gitlab/sidekiq_queue_spec.rb'
+ - 'spec/lib/gitlab/slash_commands/command_spec.rb'
+ - 'spec/lib/gitlab/slash_commands/deploy_spec.rb'
+ - 'spec/lib/gitlab/slash_commands/issue_move_spec.rb'
- 'spec/lib/gitlab/spamcheck/client_spec.rb'
- - 'spec/lib/gitlab/tracking_spec.rb'
- - 'spec/lib/gitlab/url_blocker_spec.rb'
- - 'spec/lib/gitlab/usage/metric_spec.rb'
- - 'spec/lib/gitlab/usage/metrics/instrumentations/count_bulk_imports_entities_metric_spec.rb'
- - 'spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_metric_spec.rb'
- - 'spec/lib/gitlab/usage/metrics/instrumentations/merge_request_widget_extension_metric_spec.rb'
+ - 'spec/lib/gitlab/suggestions/commit_message_spec.rb'
+ - 'spec/lib/gitlab/suggestions/file_suggestion_spec.rb'
+ - 'spec/lib/gitlab/suggestions/suggestion_set_spec.rb'
+ - 'spec/lib/gitlab/template/finders/global_template_finder_spec.rb'
+ - 'spec/lib/gitlab/tracking/destinations/snowplow_spec.rb'
+ - 'spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb'
- 'spec/lib/gitlab/usage/metrics/query_spec.rb'
- - 'spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb'
- - 'spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb'
- - 'spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb'
- 'spec/lib/gitlab/usage_data_queries_spec.rb'
- - 'spec/lib/gitlab/web_hooks/rate_limiter_spec.rb'
- - 'spec/lib/mattermost/session_spec.rb'
+ - 'spec/lib/gitlab/usage_data_spec.rb'
+ - 'spec/lib/gitlab/utils/lazy_attributes_spec.rb'
+ - 'spec/lib/gitlab/utils_spec.rb'
+ - 'spec/lib/gitlab/workhorse_spec.rb'
+ - 'spec/lib/google_api/cloud_platform/client_spec.rb'
- 'spec/lib/peek/views/detailed_view_spec.rb'
- - 'spec/lib/system_check/base_check_spec.rb'
- - 'spec/lib/system_check/incoming_email_check_spec.rb'
+ - 'spec/lib/peek/views/rugged_spec.rb'
+ - 'spec/lib/security/weak_passwords_spec.rb'
+ - 'spec/lib/sidebars/projects/menus/repository_menu_spec.rb'
+ - 'spec/lib/uploaded_file_spec.rb'
+ - 'spec/mailers/emails/merge_requests_spec.rb'
- 'spec/mailers/emails/pipelines_spec.rb'
- 'spec/mailers/notify_spec.rb'
- - 'spec/models/active_session_spec.rb'
- - 'spec/models/bulk_imports/export_status_spec.rb'
+ - 'spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb'
+ - 'spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb'
+ - 'spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb'
+ - 'spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb'
+ - 'spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb'
+ - 'spec/migrations/20220124130028_dedup_runner_projects_spec.rb'
+ - 'spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb'
+ - 'spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb'
+ - 'spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb'
+ - 'spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb'
+ - 'spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb'
+ - 'spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb'
+ - 'spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb'
+ - 'spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb'
+ - 'spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb'
+ - 'spec/migrations/20220816163444_update_start_date_for_iterations_cadences_spec.rb'
+ - 'spec/migrations/20220819153725_add_vulnerability_advisory_foreign_key_to_sbom_vulnerable_component_versions_spec.rb'
+ - 'spec/migrations/20220819162852_add_sbom_component_version_foreign_key_to_sbom_vulnerable_component_versions_spec.rb'
+ - 'spec/migrations/20220921144258_remove_orphan_group_token_users_spec.rb'
+ - 'spec/migrations/20220928225711_schedule_update_ci_pipeline_artifacts_locked_status_spec.rb'
+ - 'spec/migrations/20221018050323_add_objective_and_keyresult_to_work_item_types_spec.rb'
+ - 'spec/migrations/20221215151822_schedule_backfill_releases_author_id_spec.rb'
+ - 'spec/migrations/20221221110733_remove_temp_index_for_project_statistics_upload_size_migration_spec.rb'
+ - 'spec/migrations/20230105172120_sync_new_amount_used_with_amount_used_on_ci_namespace_monthly_usages_table_spec.rb'
+ - 'spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb'
+ - 'spec/migrations/cleanup_vulnerability_state_transitions_with_same_from_state_to_state_spec.rb'
+ - 'spec/migrations/delete_migrate_shared_vulnerability_scanners_spec.rb'
+ - 'spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb'
+ - 'spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb'
+ - 'spec/migrations/reschedule_delete_orphaned_deployments_spec.rb'
+ - 'spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb'
+ - 'spec/migrations/schedule_fixing_security_scan_statuses_spec.rb'
+ - 'spec/migrations/schedule_purging_stale_security_scans_spec.rb'
+ - 'spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb'
+ - 'spec/migrations/set_email_confirmation_setting_before_removing_send_user_confirmation_email_column_spec.rb'
+ - 'spec/migrations/start_backfill_ci_queuing_tables_spec.rb'
+ - 'spec/migrations/sync_new_amount_used_for_ci_namespace_monthly_usages_spec.rb'
+ - 'spec/migrations/sync_new_amount_used_for_ci_project_monthly_usages_spec.rb'
+ - 'spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb'
+ - 'spec/migrations/update_application_settings_protected_paths_spec.rb'
+ - 'spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb'
+ - 'spec/models/analytics/cycle_analytics/stage_spec.rb'
+ - 'spec/models/application_setting_spec.rb'
+ - 'spec/models/ci/bridge_spec.rb'
- 'spec/models/ci/build_dependencies_spec.rb'
+ - 'spec/models/ci/build_metadata_spec.rb'
- 'spec/models/ci/build_spec.rb'
- - 'spec/models/ci/build_trace_metadata_spec.rb'
- - 'spec/models/ci/commit_with_pipeline_spec.rb'
- - 'spec/models/ci/job_artifact_spec.rb'
- - 'spec/models/ci/job_token/project_scope_link_spec.rb'
+ - 'spec/models/ci/build_trace_chunk_spec.rb'
+ - 'spec/models/ci/group_spec.rb'
- 'spec/models/ci/pipeline_spec.rb'
- 'spec/models/ci/processable_spec.rb'
- - 'spec/models/clusters/applications/knative_spec.rb'
+ - 'spec/models/ci/ref_spec.rb'
+ - 'spec/models/ci/secure_file_spec.rb'
+ - 'spec/models/ci/stage_spec.rb'
+ - 'spec/models/clusters/cluster_spec.rb'
+ - 'spec/models/clusters/kubernetes_namespace_spec.rb'
+ - 'spec/models/clusters/platforms/kubernetes_spec.rb'
- 'spec/models/commit_spec.rb'
- - 'spec/models/commit_status_spec.rb'
- - 'spec/models/concerns/bulk_insert_safe_spec.rb'
- 'spec/models/concerns/ci/partitionable/switch_spec.rb'
+ - 'spec/models/concerns/ci/partitionable_spec.rb'
+ - 'spec/models/concerns/ci/track_environment_usage_spec.rb'
+ - 'spec/models/concerns/database_event_tracking_spec.rb'
- 'spec/models/concerns/deployment_platform_spec.rb'
- - 'spec/models/customer_relations/contact_spec.rb'
+ - 'spec/models/concerns/issuable_spec.rb'
+ - 'spec/models/concerns/token_authenticatable_spec.rb'
+ - 'spec/models/container_repository_spec.rb'
- 'spec/models/deployment_spec.rb'
- - 'spec/models/design_management/design_spec.rb'
+ - 'spec/models/design_management/version_spec.rb'
- 'spec/models/diff_note_spec.rb'
- 'spec/models/environment_spec.rb'
- - 'spec/models/external_pull_request_spec.rb'
- - 'spec/models/instance_configuration_spec.rb'
- - 'spec/models/integrations/every_integration_spec.rb'
- - 'spec/models/integrations/pipelines_email_spec.rb'
+ - 'spec/models/environment_status_spec.rb'
+ - 'spec/models/event_collection_spec.rb'
+ - 'spec/models/event_spec.rb'
+ - 'spec/models/generic_commit_status_spec.rb'
+ - 'spec/models/group_group_link_spec.rb'
+ - 'spec/models/group_spec.rb'
+ - 'spec/models/integrations/apple_app_store_spec.rb'
+ - 'spec/models/integrations/buildkite_spec.rb'
+ - 'spec/models/integrations/hangouts_chat_spec.rb'
+ - 'spec/models/integrations/mattermost_slash_commands_spec.rb'
+ - 'spec/models/integrations/microsoft_teams_spec.rb'
+ - 'spec/models/issue_spec.rb'
+ - 'spec/models/lfs_object_spec.rb'
+ - 'spec/models/loose_foreign_keys/deleted_record_spec.rb'
+ - 'spec/models/member_spec.rb'
+ - 'spec/models/members/group_member_spec.rb'
+ - 'spec/models/members/project_member_spec.rb'
+ - 'spec/models/merge_request_diff_spec.rb'
- 'spec/models/merge_request_spec.rb'
- - 'spec/models/milestone_spec.rb'
+ - 'spec/models/ml/candidate_spec.rb'
+ - 'spec/models/namespace/package_setting_spec.rb'
+ - 'spec/models/namespace_spec.rb'
- 'spec/models/note_spec.rb'
- - 'spec/models/personal_access_token_spec.rb'
+ - 'spec/models/onboarding/progress_spec.rb'
+ - 'spec/models/operations/feature_flags/strategy_spec.rb'
+ - 'spec/models/pages_domain_spec.rb'
- 'spec/models/project_spec.rb'
+ - 'spec/models/project_team_spec.rb'
+ - 'spec/models/release_spec.rb'
+ - 'spec/models/remote_mirror_spec.rb'
- 'spec/models/repository_spec.rb'
+ - 'spec/models/resource_state_event_spec.rb'
+ - 'spec/models/snippet_spec.rb'
+ - 'spec/models/spam_log_spec.rb'
- 'spec/models/u2f_registration_spec.rb'
+ - 'spec/models/upload_spec.rb'
+ - 'spec/models/user_detail_spec.rb'
- 'spec/models/user_spec.rb'
+ - 'spec/models/wiki_page/meta_spec.rb'
+ - 'spec/policies/ci/build_policy_spec.rb'
+ - 'spec/policies/ci/pipeline_policy_spec.rb'
+ - 'spec/policies/ci/pipeline_schedule_policy_spec.rb'
+ - 'spec/policies/environment_policy_spec.rb'
+ - 'spec/policies/group_policy_spec.rb'
- 'spec/presenters/blob_presenter_spec.rb'
- - 'spec/requests/admin/batched_jobs_controller_spec.rb'
- - 'spec/requests/api/admin/ci/variables_spec.rb'
- - 'spec/requests/api/alert_management_alerts_spec.rb'
+ - 'spec/presenters/ci/build_runner_presenter_spec.rb'
+ - 'spec/presenters/merge_request_presenter_spec.rb'
+ - 'spec/presenters/packages/detail/package_presenter_spec.rb'
+ - 'spec/requests/admin/applications_controller_spec.rb'
+ - 'spec/requests/admin/impersonation_tokens_controller_spec.rb'
+ - 'spec/requests/api/access_requests_spec.rb'
+ - 'spec/requests/api/admin/instance_clusters_spec.rb'
+ - 'spec/requests/api/admin/sidekiq_spec.rb'
+ - 'spec/requests/api/api_spec.rb'
- 'spec/requests/api/badges_spec.rb'
- - 'spec/requests/api/broadcast_messages_spec.rb'
+ - 'spec/requests/api/branches_spec.rb'
- 'spec/requests/api/ci/job_artifacts_spec.rb'
- - 'spec/requests/api/ci/pipeline_schedules_spec.rb'
+ - 'spec/requests/api/ci/jobs_spec.rb'
- 'spec/requests/api/ci/pipelines_spec.rb'
+ - 'spec/requests/api/ci/resource_groups_spec.rb'
+ - 'spec/requests/api/ci/runner/jobs_artifacts_spec.rb'
- 'spec/requests/api/ci/runner/jobs_request_post_spec.rb'
- - 'spec/requests/api/ci/triggers_spec.rb'
- - 'spec/requests/api/ci/variables_spec.rb'
+ - 'spec/requests/api/ci/runner/jobs_trace_spec.rb'
+ - 'spec/requests/api/ci/runner/runners_post_spec.rb'
+ - 'spec/requests/api/ci/runners_spec.rb'
+ - 'spec/requests/api/clusters/agent_tokens_spec.rb'
+ - 'spec/requests/api/clusters/agents_spec.rb'
- 'spec/requests/api/commit_statuses_spec.rb'
- - 'spec/requests/api/commits_spec.rb'
- - 'spec/requests/api/discussions_spec.rb'
+ - 'spec/requests/api/conan_instance_packages_spec.rb'
+ - 'spec/requests/api/container_registry_event_spec.rb'
+ - 'spec/requests/api/environments_spec.rb'
- 'spec/requests/api/feature_flags_spec.rb'
- - 'spec/requests/api/graphql/ci/group_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/instance_variables_spec.rb'
+ - 'spec/requests/api/graphql/ci/jobs_spec.rb'
+ - 'spec/requests/api/graphql/ci/pipelines_spec.rb'
+ - 'spec/requests/api/graphql/ci/project_variables_spec.rb'
- 'spec/requests/api/graphql/ci/runner_spec.rb'
- 'spec/requests/api/graphql/ci/runners_spec.rb'
- - 'spec/requests/api/graphql/group/dependency_proxy_manifests_spec.rb'
+ - 'spec/requests/api/graphql/current_user_todos_spec.rb'
+ - 'spec/requests/api/graphql/environments/deployments_spec.rb'
+ - 'spec/requests/api/graphql/gitlab_schema_spec.rb'
- 'spec/requests/api/graphql/group/group_members_spec.rb'
- - 'spec/requests/api/graphql/group/milestones_spec.rb'
- - 'spec/requests/api/graphql/mutations/award_emojis/add_spec.rb'
- - 'spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb'
+ - 'spec/requests/api/graphql/milestone_spec.rb'
+ - 'spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb'
+ - 'spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb'
+ - 'spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/job_cancel_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/job_play_spec.rb'
- 'spec/requests/api/graphql/mutations/ci/job_retry_spec.rb'
- - 'spec/requests/api/graphql/mutations/ci/job_token_scope/remove_project_spec.rb'
- - 'spec/requests/api/graphql/mutations/ci/project_ci_cd_settings_update_spec.rb'
- - 'spec/requests/api/graphql/mutations/commits/create_spec.rb'
- - 'spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb'
- - 'spec/requests/api/graphql/mutations/incident_management/timeline_event/create_spec.rb'
- - 'spec/requests/api/graphql/mutations/incident_management/timeline_event/update_spec.rb'
- - 'spec/requests/api/graphql/mutations/labels/create_spec.rb'
- - 'spec/requests/api/graphql/mutations/merge_requests/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/job_unschedule_spec.rb'
+ - 'spec/requests/api/graphql/mutations/ci/pipeline_retry_spec.rb'
+ - 'spec/requests/api/graphql/mutations/clusters/agent_tokens/agent_tokens/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/clusters/agents/delete_spec.rb'
+ - 'spec/requests/api/graphql/mutations/container_expiration_policy/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/design_management/upload_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/link_alerts_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/move_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_confidential_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_crm_contacts_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_due_date_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_locked_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/set_severity_spec.rb'
+ - 'spec/requests/api/graphql/mutations/issues/unlink_alerts_spec.rb'
+ - 'spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb'
+ - 'spec/requests/api/graphql/mutations/jira_import/start_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/reviewer_rereview_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb'
+ - 'spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb'
- 'spec/requests/api/graphql/mutations/metrics/dashboard/annotations/create_spec.rb'
- - 'spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb'
- - 'spec/requests/api/graphql/mutations/notes/create/note_spec.rb'
- - 'spec/requests/api/graphql/mutations/notes/update/note_spec.rb'
- - 'spec/requests/api/graphql/mutations/releases/update_spec.rb'
- - 'spec/requests/api/graphql/mutations/work_items/create_spec.rb'
- - 'spec/requests/api/graphql/mutations/work_items/update_spec.rb'
- - 'spec/requests/api/graphql/project/container_repositories_spec.rb'
- - 'spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb'
+ - 'spec/requests/api/graphql/mutations/notes/update/image_diff_note_spec.rb'
+ - 'spec/requests/api/graphql/mutations/packages/cleanup/policy/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/release_asset_links/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/create_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/destroy_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb'
+ - 'spec/requests/api/graphql/mutations/snippets/update_spec.rb'
+ - 'spec/requests/api/graphql/mutations/todos/mark_all_done_spec.rb'
+ - 'spec/requests/api/graphql/mutations/todos/mark_done_spec.rb'
+ - 'spec/requests/api/graphql/mutations/todos/restore_many_spec.rb'
+ - 'spec/requests/api/graphql/mutations/todos/restore_spec.rb'
+ - 'spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb'
+ - 'spec/requests/api/graphql/packages/conan_spec.rb'
+ - 'spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb'
- 'spec/requests/api/graphql/project/issue/design_collection/version_spec.rb'
- - 'spec/requests/api/graphql/project/issue/design_collection/versions_spec.rb'
- - 'spec/requests/api/graphql/project/issues_spec.rb'
+ - 'spec/requests/api/graphql/project/merge_request/pipelines_spec.rb'
+ - 'spec/requests/api/graphql/project/merge_request_spec.rb'
+ - 'spec/requests/api/graphql/project/merge_requests_spec.rb'
- 'spec/requests/api/graphql/project/milestones_spec.rb'
+ - 'spec/requests/api/graphql/project/pipeline_spec.rb'
- 'spec/requests/api/graphql/project/project_members_spec.rb'
- - 'spec/requests/api/graphql/project/release_spec.rb'
+ - 'spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb'
+ - 'spec/requests/api/graphql/project/project_statistics_spec.rb'
- 'spec/requests/api/graphql/project/releases_spec.rb'
- 'spec/requests/api/graphql/project/terraform/states_spec.rb'
- 'spec/requests/api/graphql/tasks/task_completion_status_spec.rb'
- - 'spec/requests/api/group_variables_spec.rb'
- - 'spec/requests/api/import_bitbucket_server_spec.rb'
- - 'spec/requests/api/internal/lfs_spec.rb'
+ - 'spec/requests/api/graphql/user_query_spec.rb'
+ - 'spec/requests/api/group_clusters_spec.rb'
+ - 'spec/requests/api/group_labels_spec.rb'
+ - 'spec/requests/api/groups_spec.rb'
+ - 'spec/requests/api/integrations_spec.rb'
+ - 'spec/requests/api/internal/base_spec.rb'
+ - 'spec/requests/api/internal/container_registry/migration_spec.rb'
- 'spec/requests/api/invitations_spec.rb'
+ - 'spec/requests/api/issue_links_spec.rb'
- 'spec/requests/api/issues/get_group_issues_spec.rb'
- 'spec/requests/api/issues/get_project_issues_spec.rb'
+ - 'spec/requests/api/issues/issues_spec.rb'
- 'spec/requests/api/issues/post_projects_issues_spec.rb'
- - 'spec/requests/api/issues/put_projects_issues_spec.rb'
- 'spec/requests/api/labels_spec.rb'
- 'spec/requests/api/members_spec.rb'
- 'spec/requests/api/merge_requests_spec.rb'
- - 'spec/requests/api/namespaces_spec.rb'
+ - 'spec/requests/api/ml/mlflow_spec.rb'
- 'spec/requests/api/notes_spec.rb'
+ - 'spec/requests/api/nuget_group_packages_spec.rb'
- 'spec/requests/api/oauth_tokens_spec.rb'
+ - 'spec/requests/api/performance_bar_spec.rb'
- 'spec/requests/api/personal_access_tokens_spec.rb'
- - 'spec/requests/api/project_export_spec.rb'
+ - 'spec/requests/api/project_clusters_spec.rb'
+ - 'spec/requests/api/project_container_repositories_spec.rb'
+ - 'spec/requests/api/project_events_spec.rb'
+ - 'spec/requests/api/project_hooks_spec.rb'
+ - 'spec/requests/api/project_import_spec.rb'
+ - 'spec/requests/api/project_templates_spec.rb'
- 'spec/requests/api/projects_spec.rb'
- 'spec/requests/api/protected_tags_spec.rb'
+ - 'spec/requests/api/release/links_spec.rb'
- 'spec/requests/api/releases_spec.rb'
+ - 'spec/requests/api/resource_access_tokens_spec.rb'
- 'spec/requests/api/settings_spec.rb'
- 'spec/requests/api/suggestions_spec.rb'
- - 'spec/requests/api/unleash_spec.rb'
+ - 'spec/requests/api/tags_spec.rb'
+ - 'spec/requests/api/terraform/state_spec.rb'
+ - 'spec/requests/api/todos_spec.rb'
- 'spec/requests/api/users_spec.rb'
- 'spec/requests/git_http_spec.rb'
+ - 'spec/requests/jwt_controller_spec.rb'
+ - 'spec/requests/lfs_http_spec.rb'
- 'spec/requests/oauth_tokens_spec.rb'
- - 'spec/requests/openid_connect_spec.rb'
- 'spec/requests/projects/environments_controller_spec.rb'
- - 'spec/requests/self_monitoring_project_spec.rb'
+ - 'spec/requests/projects/incident_management/timeline_events_spec.rb'
+ - 'spec/requests/projects/issue_links_controller_spec.rb'
+ - 'spec/requests/projects/issues_controller_spec.rb'
+ - 'spec/requests/projects/merge_requests_controller_spec.rb'
+ - 'spec/requests/projects/merge_requests_spec.rb'
+ - 'spec/requests/rack_attack_global_spec.rb'
+ - 'spec/requests/recursive_webhook_detection_spec.rb'
+ - 'spec/requests/users/group_callouts_spec.rb'
+ - 'spec/requests/users/project_callouts_spec.rb'
+ - 'spec/requests/verifies_with_email_spec.rb'
+ - 'spec/routing/environments_spec.rb'
+ - 'spec/routing/group_routing_spec.rb'
- 'spec/routing/project_routing_spec.rb'
- - 'spec/rubocop/cop/rspec/be_success_matcher_spec.rb'
- - 'spec/serializers/feature_flag_entity_spec.rb'
- - 'spec/serializers/feature_flag_serializer_spec.rb'
+ - 'spec/routing/routing_spec.rb'
+ - 'spec/rubocop/cop/rspec/env_mocking_spec.rb'
+ - 'spec/rubocop/cop/style/regexp_literal_mixed_preserve_spec.rb'
+ - 'spec/rubocop/formatter/graceful_formatter_spec.rb'
+ - 'spec/serializers/build_details_entity_spec.rb'
+ - 'spec/serializers/ci/downloadable_artifact_entity_spec.rb'
+ - 'spec/serializers/ci/job_entity_spec.rb'
+ - 'spec/serializers/ci/pipeline_entity_spec.rb'
+ - 'spec/serializers/discussion_diff_file_entity_spec.rb'
+ - 'spec/serializers/environment_entity_spec.rb'
+ - 'spec/serializers/environment_serializer_spec.rb'
+ - 'spec/serializers/group_child_entity_spec.rb'
+ - 'spec/serializers/issue_board_entity_spec.rb'
+ - 'spec/serializers/issue_entity_spec.rb'
+ - 'spec/serializers/merge_request_metrics_helper_spec.rb'
+ - 'spec/serializers/merge_request_poll_cached_widget_entity_spec.rb'
+ - 'spec/serializers/merge_request_poll_widget_entity_spec.rb'
+ - 'spec/serializers/pipeline_details_entity_spec.rb'
+ - 'spec/serializers/pipeline_serializer_spec.rb'
+ - 'spec/services/application_settings/update_service_spec.rb'
+ - 'spec/services/authorized_project_update/find_records_due_for_refresh_service_spec.rb'
+ - 'spec/services/auto_merge/base_service_spec.rb'
- 'spec/services/auto_merge/merge_when_pipeline_succeeds_service_spec.rb'
+ - 'spec/services/auto_merge_service_spec.rb'
- 'spec/services/award_emojis/destroy_service_spec.rb'
- - 'spec/services/bulk_update_integration_service_spec.rb'
+ - 'spec/services/bulk_imports/create_service_spec.rb'
+ - 'spec/services/bulk_imports/get_importable_data_service_spec.rb'
- 'spec/services/ci/archive_trace_service_spec.rb'
- 'spec/services/ci/create_downstream_pipeline_service_spec.rb'
- - 'spec/services/ci/create_pipeline_service/custom_config_content_spec.rb'
- - 'spec/services/ci/create_pipeline_service/environment_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/include_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/logger_spec.rb'
+ - 'spec/services/ci/create_pipeline_service/merge_requests_spec.rb'
- 'spec/services/ci/create_pipeline_service/partitioning_spec.rb'
- 'spec/services/ci/create_pipeline_service/rate_limit_spec.rb'
- 'spec/services/ci/create_pipeline_service_spec.rb'
- - 'spec/services/ci/job_artifacts/create_service_spec.rb'
- - 'spec/services/ci/job_artifacts/update_unknown_locked_status_service_spec.rb'
- - 'spec/services/ci/job_token_scope/remove_project_service_spec.rb'
+ - 'spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb'
+ - 'spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb'
+ - 'spec/services/ci/list_config_variables_service_spec.rb'
- 'spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb'
- - 'spec/services/ci/register_job_service_spec.rb'
+ - 'spec/services/ci/play_build_service_spec.rb'
+ - 'spec/services/ci/play_manual_stage_service_spec.rb'
+ - 'spec/services/ci/process_sync_events_service_spec.rb'
- 'spec/services/ci/retry_job_service_spec.rb'
- 'spec/services/ci/retry_pipeline_service_spec.rb'
- - 'spec/services/dependency_proxy/group_settings/update_service_spec.rb'
- - 'spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb'
+ - 'spec/services/ci/run_scheduled_build_service_spec.rb'
+ - 'spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb'
+ - 'spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb'
+ - 'spec/services/cohorts_service_spec.rb'
+ - 'spec/services/commits/commit_patch_service_spec.rb'
+ - 'spec/services/deployments/create_for_build_service_spec.rb'
+ - 'spec/services/deployments/link_merge_requests_service_spec.rb'
- 'spec/services/deployments/update_environment_service_spec.rb'
- - 'spec/services/discussions/capture_diff_note_positions_service_spec.rb'
- - 'spec/services/environments/create_for_build_service_spec.rb'
+ - 'spec/services/design_management/save_designs_service_spec.rb'
+ - 'spec/services/discussions/resolve_service_spec.rb'
+ - 'spec/services/draft_notes/publish_service_spec.rb'
- 'spec/services/environments/stop_service_spec.rb'
+ - 'spec/services/environments/stop_stale_service_spec.rb'
- 'spec/services/files/delete_service_spec.rb'
- 'spec/services/files/update_service_spec.rb'
+ - 'spec/services/git/branch_push_service_spec.rb'
+ - 'spec/services/google_cloud/create_cloudsql_instance_service_spec.rb'
- 'spec/services/google_cloud/fetch_google_ip_list_service_spec.rb'
- - 'spec/services/incident_management/timeline_event_tags/create_service_spec.rb'
- - 'spec/services/incident_management/timeline_events/update_service_spec.rb'
- - 'spec/services/issues/relative_position_rebalancing_service_spec.rb'
+ - 'spec/services/google_cloud/generate_pipeline_service_spec.rb'
+ - 'spec/services/google_cloud/get_cloudsql_instances_service_spec.rb'
+ - 'spec/services/groups/destroy_service_spec.rb'
+ - 'spec/services/groups/group_links/create_service_spec.rb'
+ - 'spec/services/import_export_clean_up_service_spec.rb'
+ - 'spec/services/issuable/process_assignees_spec.rb'
+ - 'spec/services/issue_links/list_service_spec.rb'
+ - 'spec/services/issues/create_service_spec.rb'
+ - 'spec/services/issues/export_csv_service_spec.rb'
+ - 'spec/services/issues/move_service_spec.rb'
- 'spec/services/issues/resolve_discussions_spec.rb'
- - 'spec/services/jira_connect_subscriptions/create_service_spec.rb'
- - 'spec/services/merge_requests/build_service_spec.rb'
- - 'spec/services/merge_requests/create_pipeline_service_spec.rb'
+ - 'spec/services/issues/update_service_spec.rb'
+ - 'spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb'
+ - 'spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb'
+ - 'spec/services/merge_requests/assign_issues_service_spec.rb'
+ - 'spec/services/merge_requests/conflicts/resolve_service_spec.rb'
+ - 'spec/services/merge_requests/create_service_spec.rb'
+ - 'spec/services/merge_requests/ff_merge_service_spec.rb'
+ - 'spec/services/merge_requests/merge_orchestration_service_spec.rb'
- 'spec/services/merge_requests/merge_service_spec.rb'
- - 'spec/services/merge_requests/post_merge_service_spec.rb'
+ - 'spec/services/merge_requests/merge_to_ref_service_spec.rb'
+ - 'spec/services/merge_requests/mergeability/detailed_merge_status_service_spec.rb'
+ - 'spec/services/merge_requests/mergeability_check_service_spec.rb'
- 'spec/services/merge_requests/rebase_service_spec.rb'
- 'spec/services/merge_requests/refresh_service_spec.rb'
- - 'spec/services/merge_requests/retarget_chain_service_spec.rb'
+ - 'spec/services/merge_requests/reload_diffs_service_spec.rb'
- 'spec/services/merge_requests/squash_service_spec.rb'
+ - 'spec/services/merge_requests/update_assignees_service_spec.rb'
+ - 'spec/services/merge_requests/update_reviewers_service_spec.rb'
- 'spec/services/merge_requests/update_service_spec.rb'
- 'spec/services/metrics/dashboard/clone_dashboard_service_spec.rb'
- - 'spec/services/namespaces/package_settings/update_service_spec.rb'
+ - 'spec/services/note_summary_spec.rb'
+ - 'spec/services/notes/build_service_spec.rb'
+ - 'spec/services/notes/copy_service_spec.rb'
+ - 'spec/services/notes/create_service_spec.rb'
- 'spec/services/notes/destroy_service_spec.rb'
+ - 'spec/services/notes/render_service_spec.rb'
- 'spec/services/notification_service_spec.rb'
- - 'spec/services/packages/debian/extract_metadata_service_spec.rb'
+ - 'spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb'
+ - 'spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb'
+ - 'spec/services/preview_markdown_service_spec.rb'
+ - 'spec/services/projects/all_merge_requests_count_service_spec.rb'
+ - 'spec/services/projects/container_repository/gitlab/cleanup_tags_service_spec.rb'
+ - 'spec/services/projects/container_repository/third_party/cleanup_tags_service_spec.rb'
+ - 'spec/services/projects/create_service_spec.rb'
- 'spec/services/projects/destroy_service_spec.rb'
+ - 'spec/services/projects/fork_service_spec.rb'
+ - 'spec/services/projects/group_links/create_service_spec.rb'
+ - 'spec/services/projects/group_links/destroy_service_spec.rb'
+ - 'spec/services/projects/group_links/update_service_spec.rb'
+ - 'spec/services/projects/hashed_storage/migration_service_spec.rb'
+ - 'spec/services/projects/lfs_pointers/lfs_link_service_spec.rb'
+ - 'spec/services/projects/open_merge_requests_count_service_spec.rb'
+ - 'spec/services/projects/prometheus/alerts/notify_service_spec.rb'
+ - 'spec/services/projects/transfer_service_spec.rb'
+ - 'spec/services/projects/unlink_fork_service_spec.rb'
+ - 'spec/services/projects/update_pages_service_spec.rb'
- 'spec/services/projects/update_service_spec.rb'
+ - 'spec/services/protected_branches/api_service_spec.rb'
+ - 'spec/services/push_event_payload_service_spec.rb'
+ - 'spec/services/quick_actions/interpret_service_spec.rb'
+ - 'spec/services/releases/destroy_service_spec.rb'
+ - 'spec/services/resource_access_tokens/revoke_service_spec.rb'
+ - 'spec/services/resource_events/merge_into_notes_service_spec.rb'
+ - 'spec/services/security/ci_configuration/dependency_scanning_create_service_spec.rb'
- 'spec/services/security/merge_reports_service_spec.rb'
+ - 'spec/services/service_response_spec.rb'
- 'spec/services/suggestions/apply_service_spec.rb'
- - 'spec/services/system_notes/design_management_service_spec.rb'
+ - 'spec/services/suggestions/create_service_spec.rb'
+ - 'spec/services/suggestions/outdate_service_spec.rb'
+ - 'spec/services/task_list_toggle_service_spec.rb'
- 'spec/services/todo_service_spec.rb'
- - 'spec/services/upload_service_spec.rb'
+ - 'spec/services/users/activity_service_spec.rb'
+ - 'spec/services/users/assigned_issues_count_service_spec.rb'
+ - 'spec/services/users/destroy_service_spec.rb'
+ - 'spec/services/users/migrate_records_to_ghost_user_in_batches_service_spec.rb'
+ - 'spec/services/users/migrate_records_to_ghost_user_service_spec.rb'
+ - 'spec/services/users/refresh_authorized_projects_service_spec.rb'
+ - 'spec/services/users/reject_service_spec.rb'
+ - 'spec/services/webauthn/authenticate_service_spec.rb'
- 'spec/services/work_items/task_list_reference_removal_service_spec.rb'
- - 'spec/sidekiq_cluster/sidekiq_cluster_spec.rb'
- - 'spec/support/database/prevent_cross_database_modification.rb'
- - 'spec/support/database/prevent_cross_joins.rb'
- - 'spec/support/helpers/cycle_analytics_helpers.rb'
+ - 'spec/services/work_items/widgets/description_service/update_service_spec.rb'
+ - 'spec/sidekiq/cron/job_gem_dependency_spec.rb'
+ - 'spec/support/helpers/api_internal_base_helpers.rb'
+ - 'spec/support/helpers/board_helpers.rb'
+ - 'spec/support/helpers/ci/source_pipeline_helpers.rb'
+ - 'spec/support/helpers/ci/template_helpers.rb'
- 'spec/support/helpers/feature_flag_helpers.rb'
- - 'spec/support/helpers/project_forks_helper.rb'
- - 'spec/support/helpers/test_env.rb'
- - 'spec/support/shared_contexts/requests/api/graphql/jira_import/jira_projects_context.rb'
- - 'spec/support/shared_examples/ci/pipeline_email_shared_examples.rb'
- - 'spec/support/shared_examples/controllers/concerns/integrations/integrations_actions_shared_examples.rb'
+ - 'spec/support/helpers/graphql_helpers.rb'
+ - 'spec/support/helpers/stub_object_storage.rb'
+ - 'spec/support/helpers/workhorse_helpers.rb'
+ - 'spec/support/import_export/export_file_helper.rb'
+ - 'spec/support/redis/redis_shared_examples.rb'
+ - 'spec/support/shared_contexts/bulk_imports_requests_shared_context.rb'
+ - 'spec/support/shared_contexts/design_management_shared_contexts.rb'
+ - 'spec/support/shared_contexts/finders/issues_finder_shared_contexts.rb'
+ - 'spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb'
+ - 'spec/support/shared_contexts/finders/work_items_finder_shared_contexts.rb'
+ - 'spec/support/shared_contexts/merge_request_create_shared_context.rb'
+ - 'spec/support/shared_contexts/merge_request_edit_shared_context.rb'
+ - 'spec/support/shared_contexts/merge_requests_allowing_collaboration_shared_context.rb'
+ - 'spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb'
- 'spec/support/shared_examples/controllers/snippets_sort_order_shared_examples.rb'
- 'spec/support/shared_examples/controllers/wiki_actions_shared_examples.rb'
- 'spec/support/shared_examples/features/search/redacted_search_results_shared_examples.rb'
- - 'spec/support/shared_examples/graphql/mutations/boards_create_shared_examples.rb'
- - 'spec/support/shared_examples/graphql/sorted_paginated_query_shared_examples.rb'
- - 'spec/support/shared_examples/harbor/artifacts_controller_shared_examples.rb'
- - 'spec/support/shared_examples/harbor/tags_controller_shared_examples.rb'
- - 'spec/support/shared_examples/lib/gitlab/template/template_shared_examples.rb'
- - 'spec/support/shared_examples/models/active_record_enum_shared_examples.rb'
- - 'spec/support/shared_examples/models/concerns/from_set_operator_shared_examples.rb'
+ - 'spec/support/shared_examples/features/wiki/user_views_wiki_page_shared_examples.rb'
+ - 'spec/support/shared_examples/finders/issues_finder_shared_examples.rb'
+ - 'spec/support/shared_examples/graphql/members_shared_examples.rb'
+ - 'spec/support/shared_examples/graphql/mutation_shared_examples.rb'
+ - 'spec/support/shared_examples/graphql/mutations/set_assignees_shared_examples.rb'
+ - 'spec/support/shared_examples/graphql/notes_on_noteables_shared_examples.rb'
+ - 'spec/support/shared_examples/initializers/uses_gitlab_url_blocker_shared_examples.rb'
+ - 'spec/support/shared_examples/integrations/integration_settings_form.rb'
+ - 'spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/gitlab/database/background_migration_job_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/gitlab/gitaly_client_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/gitlab/project_search_results_shared_examples.rb'
+ - 'spec/support/shared_examples/lib/sentry/client_shared_examples.rb'
+ - 'spec/support/shared_examples/models/chat_integration_shared_examples.rb'
+ - 'spec/support/shared_examples/models/clusters/prometheus_client_shared.rb'
+ - 'spec/support/shared_examples/models/concerns/auto_disabling_hooks_shared_examples.rb'
+ - 'spec/support/shared_examples/models/concerns/cascading_namespace_setting_shared_examples.rb'
- 'spec/support/shared_examples/models/concerns/integrations/slack_mattermost_notifier_shared_examples.rb'
+ - 'spec/support/shared_examples/models/concerns/timebox_shared_examples.rb'
+ - 'spec/support/shared_examples/models/concerns/unstoppable_hooks_shared_examples.rb'
- 'spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb'
- 'spec/support/shared_examples/models/member_shared_examples.rb'
+ - 'spec/support/shared_examples/observability/csp_shared_examples.rb'
- 'spec/support/shared_examples/projects/container_repository/cleanup_tags_service_shared_examples.rb'
- - 'spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb'
- - 'spec/support/shared_examples/requests/api/diff_discussions_shared_examples.rb'
+ - 'spec/support/shared_examples/quick_actions/issuable/max_issuable_examples.rb'
- 'spec/support/shared_examples/requests/api/discussions_shared_examples.rb'
- - 'spec/support/shared_examples/requests/api/graphql/group_and_project_boards_query_shared_examples.rb'
- - 'spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/graphql/mutations/snippets_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/graphql/mutations/subscription_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/graphql/projects/branch_protections/access_level_request_examples.rb'
- 'spec/support/shared_examples/requests/api/hooks_shared_examples.rb'
- - 'spec/support/shared_examples/requests/api/merge_requests_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/notes_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/packages_shared_examples.rb'
- 'spec/support/shared_examples/requests/api/resolvable_discussions_shared_examples.rb'
+ - 'spec/support/shared_examples/requests/api/time_tracking_shared_examples.rb'
- 'spec/support/shared_examples/requests/graphql_shared_examples.rb'
- 'spec/support/shared_examples/requests/rack_attack_shared_examples.rb'
- - 'spec/support/shared_examples/services/boards/boards_recent_visit_shared_examples.rb'
- - 'spec/support/shared_examples/services/issuable/discussions_list_shared_examples.rb'
- - 'spec/support/shared_examples/workers/background_migration_worker_shared_examples.rb'
- - 'spec/support/trace/trace_helpers.rb'
+ - 'spec/support/shared_examples/serializers/diff_file_entity_shared_examples.rb'
+ - 'spec/support/shared_examples/views/pipeline_status_changes_email.rb'
+ - 'spec/tasks/cache/clear/redis_spec.rb'
+ - 'spec/tasks/gitlab/cleanup_rake_spec.rb'
+ - 'spec/tasks/gitlab/db/decomposition/rollback/bump_ci_sequences_rake_spec.rb'
+ - 'spec/tasks/gitlab/db/lock_writes_rake_spec.rb'
+ - 'spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb'
- 'spec/tasks/gitlab/sidekiq_rake_spec.rb'
- - 'spec/tooling/quality/test_level_spec.rb'
+ - 'spec/tooling/danger/sidekiq_queues_spec.rb'
+ - 'spec/tooling/graphql/docs/renderer_spec.rb'
+ - 'spec/uploaders/attachment_uploader_spec.rb'
+ - 'spec/uploaders/avatar_uploader_spec.rb'
+ - 'spec/uploaders/ci/pipeline_artifact_uploader_spec.rb'
+ - 'spec/uploaders/dependency_proxy/file_uploader_spec.rb'
+ - 'spec/uploaders/design_management/design_v432x230_uploader_spec.rb'
+ - 'spec/uploaders/external_diff_uploader_spec.rb'
- 'spec/uploaders/file_uploader_spec.rb'
- - 'spec/uploaders/object_storage/cdn/google_cdn_spec.rb'
- - 'spec/uploaders/object_storage/cdn/google_ip_cache_spec.rb'
+ - 'spec/uploaders/job_artifact_uploader_spec.rb'
+ - 'spec/uploaders/lfs_object_uploader_spec.rb'
- 'spec/uploaders/packages/composer/cache_uploader_spec.rb'
- - 'spec/views/layouts/_search.html.haml_spec.rb'
- - 'spec/views/projects/merge_requests/_commits.html.haml_spec.rb'
- - 'spec/views/projects/merge_requests/edit.html.haml_spec.rb'
+ - 'spec/uploaders/packages/debian/component_file_uploader_spec.rb'
+ - 'spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb'
+ - 'spec/uploaders/packages/package_file_uploader_spec.rb'
+ - 'spec/uploaders/packages/rpm/repository_file_uploader_spec.rb'
+ - 'spec/uploaders/pages/deployment_uploader_spec.rb'
+ - 'spec/uploaders/personal_file_uploader_spec.rb'
+ - 'spec/views/admin/application_settings/_ci_cd.html.haml_spec.rb'
+ - 'spec/views/admin/application_settings/_repository_check.html.haml_spec.rb'
+ - 'spec/views/ci/status/_badge.html.haml_spec.rb'
+ - 'spec/views/ci/status/_icon.html.haml_spec.rb'
+ - 'spec/views/devise/shared/_signup_box.html.haml_spec.rb'
+ - 'spec/views/notify/autodevops_disabled_email.text.erb_spec.rb'
+ - 'spec/views/notify/pipeline_failed_email.text.erb_spec.rb'
+ - 'spec/views/profiles/keys/_key.html.haml_spec.rb'
+ - 'spec/views/projects/commit/_commit_box.html.haml_spec.rb'
+ - 'spec/views/projects/edit.html.haml_spec.rb'
+ - 'spec/views/projects/settings/merge_requests/show.html.haml_spec.rb'
- 'spec/views/projects/tags/index.html.haml_spec.rb'
+ - 'spec/views/shared/milestones/_issuables.html.haml_spec.rb'
+ - 'spec/views/shared/runners/_runner_details.html.haml_spec.rb'
+ - 'spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb'
+ - 'spec/workers/build_hooks_worker_spec.rb'
+ - 'spec/workers/build_queue_worker_spec.rb'
- 'spec/workers/ci/job_artifacts/track_artifact_report_worker_spec.rb'
- - 'spec/workers/database/batched_background_migration/ci_execution_worker_spec.rb'
- - 'spec/workers/database/batched_background_migration/main_execution_worker_spec.rb'
- - 'spec/workers/merge_requests/create_pipeline_worker_spec.rb'
- - 'spec/workers/pages/invalidate_domain_cache_worker_spec.rb'
- - 'spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb'
- - 'spec/workers/pipeline_notification_worker_spec.rb'
+ - 'spec/workers/concerns/worker_context_spec.rb'
+ - 'spec/workers/deployments/hooks_worker_spec.rb'
+ - 'spec/workers/design_management/new_version_worker_spec.rb'
+ - 'spec/workers/every_sidekiq_worker_spec.rb'
+ - 'spec/workers/integrations/irker_worker_spec.rb'
+ - 'spec/workers/jira_connect/sync_branch_worker_spec.rb'
+ - 'spec/workers/jira_connect/sync_builds_worker_spec.rb'
+ - 'spec/workers/jira_connect/sync_deployments_worker_spec.rb'
+ - 'spec/workers/jira_connect/sync_feature_flags_worker_spec.rb'
+ - 'spec/workers/jira_connect/sync_merge_request_worker_spec.rb'
+ - 'spec/workers/jira_connect/sync_project_worker_spec.rb'
+ - 'spec/workers/merge_requests/delete_source_branch_worker_spec.rb'
+ - 'spec/workers/merge_requests/update_head_pipeline_worker_spec.rb'
+ - 'spec/workers/namespaces/root_statistics_worker_spec.rb'
+ - 'spec/workers/object_pool/destroy_worker_spec.rb'
+ - 'spec/workers/pipeline_hooks_worker_spec.rb'
+ - 'spec/workers/pipeline_metrics_worker_spec.rb'
+ - 'spec/workers/process_commit_worker_spec.rb'
+ - 'spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb'
+ - 'spec/workers/projects/inactive_projects_deletion_notification_worker_spec.rb'
+ - 'spec/workers/rebase_worker_spec.rb'
+ - 'spec/workers/remote_mirror_notification_worker_spec.rb'
+ - 'spec/workers/remove_expired_members_worker_spec.rb'
+ - 'spec/workers/remove_unaccepted_member_invites_worker_spec.rb'
- 'spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb'
- - 'spec/workers/update_external_pull_requests_worker_spec.rb'
- - 'spec/workers/update_merge_requests_worker_spec.rb'
+ - 'spec/workers/repository_update_remote_mirror_worker_spec.rb'
+ - 'spec/workers/run_pipeline_schedule_worker_spec.rb'
+ - 'spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb'
- 'spec/workers/web_hook_worker_spec.rb'
+ - 'tooling/danger/suggestor.rb'
diff --git a/.rubocop_todo/layout/hash_alignment.yml b/.rubocop_todo/layout/hash_alignment.yml
index f58e3fe0d60..e5796607dfd 100644
--- a/.rubocop_todo/layout/hash_alignment.yml
+++ b/.rubocop_todo/layout/hash_alignment.yml
@@ -3,4 +3,10 @@
Layout/HashAlignment:
Details: grace period
Exclude:
+ - 'config/initializers/rspec_profiling.rb'
- 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
+ - 'ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/value_stream_shared_examples.rb'
+ - 'lib/gitlab/redis/multi_store.rb'
+ - 'spec/helpers/projects/ml/experiments_helper_spec.rb'
+ - 'spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb'
+ - 'spec/requests/projects/merge_requests/creations_spec.rb'
diff --git a/.rubocop_todo/rails/helper_instance_variable.yml b/.rubocop_todo/rails/helper_instance_variable.yml
index 164edaece4e..4ac41a14039 100644
--- a/.rubocop_todo/rails/helper_instance_variable.yml
+++ b/.rubocop_todo/rails/helper_instance_variable.yml
@@ -24,7 +24,6 @@ Rails/HelperInstanceVariable:
- 'app/helpers/graph_helper.rb'
- 'app/helpers/groups_helper.rb'
- 'app/helpers/icons_helper.rb'
- - 'app/helpers/ide_helper.rb'
- 'app/helpers/import_helper.rb'
- 'app/helpers/issuables_description_templates_helper.rb'
- 'app/helpers/issuables_helper.rb'
diff --git a/app/assets/javascripts/ide/init_gitlab_web_ide.js b/app/assets/javascripts/ide/init_gitlab_web_ide.js
index d3c64754e8a..e3fbce25cd2 100644
--- a/app/assets/javascripts/ide/init_gitlab_web_ide.js
+++ b/app/assets/javascripts/ide/init_gitlab_web_ide.js
@@ -38,6 +38,9 @@ export const initGitlabWebIDE = async (el) => {
filePath,
mergeRequest: mrId,
forkInfo: forkInfoJSON,
+ editorFontSrcUrl,
+ editorFontFormat,
+ editorFontFamily,
} = el.dataset;
const rootEl = setupRootElement(el);
@@ -64,6 +67,11 @@ export const initGitlabWebIDE = async (el) => {
feedbackIssue: GITLAB_WEB_IDE_FEEDBACK_ISSUE,
userPreferences: el.dataset.userPreferencesPath,
},
+ editorFont: {
+ srcUrl: editorFontSrcUrl,
+ fontFamily: editorFontFamily,
+ format: editorFontFormat,
+ },
async handleStartRemote({ remoteHost, remotePath, connectionToken }) {
const confirmed = await confirmAction(
__('Are you sure you want to leave the Web IDE? All unsaved changes will be lost.'),
diff --git a/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js b/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js
index c054171935d..8b8147425bc 100644
--- a/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js
+++ b/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js
@@ -45,6 +45,8 @@ function initDeactivateDormantUsersPeriodInputSection() {
'application_setting_deactivate_dormant_users_period_error',
);
+ if (!checkbox || !input || !errorLabel) return;
+
const hideInputErrorLabel = () => {
if (input.checkValidity()) {
errorLabel.classList.add(DISPLAY_NONE_CLASS);
diff --git a/app/assets/javascripts/token_access/components/opt_in_jwt.vue b/app/assets/javascripts/token_access/components/opt_in_jwt.vue
index 2daab124b4d..c774f37b1e4 100644
--- a/app/assets/javascripts/token_access/components/opt_in_jwt.vue
+++ b/app/assets/javascripts/token_access/components/opt_in_jwt.vue
@@ -1,25 +1,17 @@
<script>
-import { GlLoadingIcon, GlSprintf, GlToggle } from '@gitlab/ui';
+import { GlLink, GlLoadingIcon, GlSprintf, GlToggle } from '@gitlab/ui';
import CodeInstruction from '~/vue_shared/components/registry/code_instruction.vue';
import { createAlert } from '~/flash';
import { __, s__ } from '~/locale';
import updateOptInJwtMutation from '../graphql/mutations/update_opt_in_jwt.mutation.graphql';
import getOptInJwtSettingQuery from '../graphql/queries/get_opt_in_jwt_setting.query.graphql';
-
-const LIMIT_JWT_ACCESS_SNIPPET = `job_name:
- id_tokens:
- ID_TOKEN_1: # or any other name
- aud: "..." # sub-keyword to configure the token's audience
- secrets:
- TEST_SECRET:
- vault: db/prod
-`;
+import { LIMIT_JWT_ACCESS_SNIPPET, OPT_IN_JWT_HELP_LINK } from '../constants';
export default {
i18n: {
labelText: s__('CICD|Limit JSON Web Token (JWT) access'),
helpText: s__(
- `CICD|The JWT must be manually declared in each job that needs it. When disabled, the token is always available in all jobs in the pipeline.`,
+ `CICD|The JWT must be manually declared in each job that needs it. When disabled, the token is always available in all jobs in the pipeline. %{linkStart}Learn more.%{linkEnd}`,
),
expandedText: s__(
'CICD|Use the %{codeStart}secrets%{codeEnd} keyword to configure a job with a JWT.',
@@ -30,6 +22,7 @@ export default {
},
components: {
CodeInstruction,
+ GlLink,
GlLoadingIcon,
GlSprintf,
GlToggle,
@@ -90,6 +83,7 @@ export default {
}
},
},
+ OPT_IN_JWT_HELP_LINK,
LIMIT_JWT_ACCESS_SNIPPET,
};
</script>
@@ -104,7 +98,13 @@ export default {
@change="updateOptInJwt"
>
<template #help>
- {{ $options.i18n.helpText }}
+ <gl-sprintf :message="$options.i18n.helpText">
+ <template #link="{ content }">
+ <gl-link :href="$options.OPT_IN_JWT_HELP_LINK" class="inline-link" target="_blank">
+ {{ content }}
+ </gl-link>
+ </template>
+ </gl-sprintf>
</template>
</gl-toggle>
<div v-if="optInJwt" class="gl-mt-5" data-testid="opt-in-jwt-expanded-section">
diff --git a/app/assets/javascripts/token_access/constants.js b/app/assets/javascripts/token_access/constants.js
new file mode 100644
index 00000000000..fb2128462f0
--- /dev/null
+++ b/app/assets/javascripts/token_access/constants.js
@@ -0,0 +1,14 @@
+import { helpPagePath } from '~/helpers/help_page_helper';
+
+export const LIMIT_JWT_ACCESS_SNIPPET = `job_name:
+ id_tokens:
+ ID_TOKEN_1: # or any other name
+ aud: "..." # sub-keyword to configure the token's audience
+ secrets:
+ TEST_SECRET:
+ vault: db/prod
+`;
+
+export const OPT_IN_JWT_HELP_LINK = helpPagePath('ci/secrets/id_token_authentication', {
+ anchor: 'automatic-id-token-authentication-with-hashicorp-vault',
+});
diff --git a/app/assets/javascripts/work_items/components/item_title.vue b/app/assets/javascripts/work_items/components/item_title.vue
index b2c8b7ae1db..6aa3c54705c 100644
--- a/app/assets/javascripts/work_items/components/item_title.vue
+++ b/app/assets/javascripts/work_items/components/item_title.vue
@@ -35,7 +35,7 @@ export default {
<template>
<h2
- class="gl-font-weight-normal gl-sm-font-weight-bold gl-mb-5 gl-mt-0 gl-w-full"
+ class="gl-font-weight-normal gl-sm-font-weight-bold gl-mb-1 gl-mt-0 gl-w-full"
:class="{ 'gl-cursor-text': disabled }"
aria-labelledby="item-title"
>
diff --git a/app/assets/javascripts/work_items/components/work_item_created_updated.vue b/app/assets/javascripts/work_items/components/work_item_created_updated.vue
new file mode 100644
index 00000000000..d1a707f2a8a
--- /dev/null
+++ b/app/assets/javascripts/work_items/components/work_item_created_updated.vue
@@ -0,0 +1,115 @@
+<script>
+import { GlAvatarLink, GlSprintf } from '@gitlab/ui';
+import { getIdFromGraphQLId } from '~/graphql_shared/utils';
+import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
+import { getWorkItemQuery } from '../utils';
+
+export default {
+ components: {
+ GlAvatarLink,
+ GlSprintf,
+ TimeAgoTooltip,
+ },
+ props: {
+ fetchByIid: {
+ type: Boolean,
+ required: true,
+ },
+ workItemId: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ workItemIid: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ fullPath: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ },
+ computed: {
+ createdAt() {
+ return this.workItem?.createdAt || '';
+ },
+ updatedAt() {
+ return this.workItem?.updatedAt || '';
+ },
+ author() {
+ return this.workItem?.author ?? {};
+ },
+ authorId() {
+ return getIdFromGraphQLId(this.author.id);
+ },
+ queryVariables() {
+ return this.fetchByIid
+ ? {
+ fullPath: this.fullPath,
+ iid: this.workItemIid,
+ }
+ : {
+ id: this.workItemId,
+ };
+ },
+ },
+ apollo: {
+ workItem: {
+ query() {
+ return getWorkItemQuery(this.fetchByIid);
+ },
+ variables() {
+ return this.queryVariables;
+ },
+ skip() {
+ return !this.workItemId && !this.workItemIid;
+ },
+ update(data) {
+ const workItem = this.fetchByIid ? data.workspace.workItems.nodes[0] : data.workItem;
+ return workItem ?? {};
+ },
+ },
+ },
+};
+</script>
+
+<template>
+ <div class="gl-mb-3">
+ <span data-testid="work-item-created">
+ <gl-sprintf v-if="author.name" :message="__('Created %{timeAgo} by %{author}')">
+ <template #timeAgo>
+ <time-ago-tooltip :time="createdAt" />
+ </template>
+ <template #author>
+ <gl-avatar-link
+ class="js-user-link gl-text-body gl-font-weight-bold"
+ :title="author.name"
+ :data-user-id="authorId"
+ :href="author.webUrl"
+ >
+ {{ author.name }}
+ </gl-avatar-link>
+ </template>
+ </gl-sprintf>
+ <gl-sprintf v-else-if="createdAt" :message="__('Created %{timeAgo}')">
+ <template #timeAgo>
+ <time-ago-tooltip :time="createdAt" />
+ </template>
+ </gl-sprintf>
+ </span>
+
+ <span
+ v-if="updatedAt"
+ class="gl-ml-5 gl-display-none gl-sm-display-inline-block"
+ data-testid="work-item-updated"
+ >
+ <gl-sprintf :message="__('Updated %{timeAgo}')">
+ <template #timeAgo>
+ <time-ago-tooltip :time="updatedAt" />
+ </template>
+ </gl-sprintf>
+ </span>
+ </div>
+</template>
diff --git a/app/assets/javascripts/work_items/components/work_item_detail.vue b/app/assets/javascripts/work_items/components/work_item_detail.vue
index af25a8d7c31..9a347ebd874 100644
--- a/app/assets/javascripts/work_items/components/work_item_detail.vue
+++ b/app/assets/javascripts/work_items/components/work_item_detail.vue
@@ -51,6 +51,7 @@ import WorkItemTree from './work_item_links/work_item_tree.vue';
import WorkItemActions from './work_item_actions.vue';
import WorkItemState from './work_item_state.vue';
import WorkItemTitle from './work_item_title.vue';
+import WorkItemCreatedUpdated from './work_item_created_updated.vue';
import WorkItemDescription from './work_item_description.vue';
import WorkItemDueDate from './work_item_due_date.vue';
import WorkItemAssignees from './work_item_assignees.vue';
@@ -74,6 +75,7 @@ export default {
GlEmptyState,
WorkItemAssignees,
WorkItemActions,
+ WorkItemCreatedUpdated,
WorkItemDescription,
WorkItemDueDate,
WorkItemLabels,
@@ -569,6 +571,13 @@ export default {
:can-update="canUpdate"
@error="updateError = $event"
/>
+ <work-item-created-updated
+ v-if="workItemsMvcEnabled"
+ :work-item-id="workItem.id"
+ :work-item-iid="workItemIid"
+ :full-path="fullPath"
+ :fetch-by-iid="fetchByIid"
+ />
<work-item-state
:work-item="workItem"
:work-item-parent-id="workItemParentId"
diff --git a/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql b/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql
index 3ee263c149d..ada9f737e6e 100644
--- a/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql
+++ b/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql
@@ -1,4 +1,5 @@
#import "ee_else_ce/work_items/graphql/work_item_widgets.fragment.graphql"
+#import "~/graphql_shared/fragments/author.fragment.graphql"
fragment WorkItem on WorkItem {
id
@@ -8,12 +9,16 @@ fragment WorkItem on WorkItem {
description
confidential
createdAt
+ updatedAt
closedAt
project {
id
fullPath
archived
}
+ author {
+ ...Author
+ }
workItemType {
id
name
diff --git a/app/controllers/projects/commits_controller.rb b/app/controllers/projects/commits_controller.rb
index c006d56ae81..3acc71d5dd3 100644
--- a/app/controllers/projects/commits_controller.rb
+++ b/app/controllers/projects/commits_controller.rb
@@ -75,7 +75,7 @@ class Projects::CommitsController < Projects::ApplicationController
search = permitted_params[:search]
author = permitted_params[:author]
- # fully_qualified_ref is available in some situations when the use_ref_type_parameter FF is enabled
+ # fully_qualified_ref is available in some situations from ExtractsRef
ref = @fully_qualified_ref || @ref
@commits =
if search.present?
diff --git a/app/controllers/projects/network_controller.rb b/app/controllers/projects/network_controller.rb
index aa0838752e2..f3c63b1b97b 100644
--- a/app/controllers/projects/network_controller.rb
+++ b/app/controllers/projects/network_controller.rb
@@ -14,11 +14,7 @@ class Projects::NetworkController < Projects::ApplicationController
urgency :low, [:show]
def show
- @url = if Feature.enabled?(:use_ref_type_parameter, @project)
- project_network_path(@project, @ref, @options.merge(format: :json, ref_type: ref_type))
- else
- project_network_path(@project, @ref, @options.merge(format: :json))
- end
+ @url = project_network_path(@project, @ref, @options.merge(format: :json, ref_type: ref_type))
@ref_type = ref_type
@commit_url = project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")
diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb
index 8ac6d872aae..4c2bd2a9d42 100644
--- a/app/controllers/projects/refs_controller.rb
+++ b/app/controllers/projects/refs_controller.rb
@@ -24,17 +24,9 @@ class Projects::RefsController < Projects::ApplicationController
when "blob"
project_blob_path(@project, @id)
when "graph"
- if Feature.enabled?(:use_ref_type_parameter, @project)
- project_network_path(@project, @id, ref_type: ref_type)
- else
- project_network_path(@project, @id, @options)
- end
+ project_network_path(@project, @id, ref_type: ref_type)
when "graphs"
- if Feature.enabled?(:use_ref_type_parameter, @project)
- project_graph_path(@project, @id, ref_type: ref_type)
- else
- project_graph_path(@project, @id)
- end
+ project_graph_path(@project, @id, ref_type: ref_type)
when "find_file"
project_find_file_path(@project, @id)
when "graphs_commits"
@@ -42,11 +34,7 @@ class Projects::RefsController < Projects::ApplicationController
when "badges"
project_settings_ci_cd_path(@project, ref: @id)
else
- if Feature.enabled?(:use_ref_type_parameter, @project)
- project_commits_path(@project, @id, ref_type: ref_type)
- else
- project_commits_path(@project, @id)
- end
+ project_commits_path(@project, @id, ref_type: ref_type)
end
redirect_to new_path
diff --git a/app/graphql/resolvers/work_items_resolver.rb b/app/graphql/resolvers/work_items_resolver.rb
index d08041ddd3b..42ec41d9d8d 100644
--- a/app/graphql/resolvers/work_items_resolver.rb
+++ b/app/graphql/resolvers/work_items_resolver.rb
@@ -64,7 +64,7 @@ module Resolvers
last_edited_by: :last_edited_by,
assignees: :assignees,
parent: :work_item_parent,
- children: { work_item_children_by_created_at: [:author, { project: :project_feature }] },
+ children: { work_item_children_by_relative_position: [:author, { project: :project_feature }] },
labels: :labels,
milestone: { milestone: [:project, :group] }
}
diff --git a/app/helpers/ide_helper.rb b/app/helpers/ide_helper.rb
index 02980ec422e..c5be044a27b 100644
--- a/app/helpers/ide_helper.rb
+++ b/app/helpers/ide_helper.rb
@@ -1,17 +1,20 @@
# frozen_string_literal: true
module IdeHelper
- def ide_data
+ def ide_data(project:, branch:, path:, merge_request:, fork_info:)
{
'can-use-new-web-ide' => can_use_new_web_ide?.to_s,
'use-new-web-ide' => use_new_web_ide?.to_s,
'new-web-ide-help-page-path' => help_page_path('user/project/web_ide/index.md', anchor: 'vscode-reimplementation'),
'user-preferences-path' => profile_preferences_path,
- 'branch-name' => @branch,
- 'file-path' => @path,
- 'fork-info' => @fork_info&.to_json,
- 'merge-request' => @merge_request
- }.merge(use_new_web_ide? ? new_ide_data : legacy_ide_data)
+ 'branch-name' => branch,
+ 'file-path' => path,
+ 'fork-info' => fork_info&.to_json,
+ 'editor-font-src-url' => font_url('jetbrains-mono/JetBrainsMono.woff2'),
+ 'editor-font-family' => 'JetBrains Mono',
+ 'editor-font-format' => 'woff2',
+ 'merge-request' => merge_request
+ }.merge(use_new_web_ide? ? new_ide_data(project: project) : legacy_ide_data(project: project))
end
def can_use_new_web_ide?
@@ -24,16 +27,16 @@ module IdeHelper
private
- def new_ide_data
+ def new_ide_data(project:)
{
- 'project-path' => @project&.path_with_namespace,
+ 'project-path' => project&.path_with_namespace,
'csp-nonce' => content_security_policy_nonce,
# We will replace these placeholders in the FE
'ide-remote-path' => ide_remote_path(remote_host: ':remote_host', remote_path: ':remote_path')
}
end
- def legacy_ide_data
+ def legacy_ide_data(project:)
{
'empty-state-svg-path' => image_path('illustrations/multi_file_editor_empty.svg'),
'no-changes-state-svg-path' => image_path('illustrations/multi-editor_no_changes_empty.svg'),
@@ -44,10 +47,10 @@ module IdeHelper
'ci-help-page-path' => help_page_path('ci/quick_start/index'),
'web-ide-help-page-path' => help_page_path('user/project/web_ide/index.md'),
'render-whitespace-in-code': current_user.render_whitespace_in_code.to_s,
- 'default-branch' => @project && @project.default_branch,
- 'project' => convert_to_project_entity_json(@project),
- 'enable-environments-guidance' => enable_environments_guidance?.to_s,
- 'preview-markdown-path' => @project && preview_markdown_path(@project),
+ 'default-branch' => project && project.default_branch,
+ 'project' => convert_to_project_entity_json(project),
+ 'enable-environments-guidance' => enable_environments_guidance?(project).to_s,
+ 'preview-markdown-path' => project && preview_markdown_path(project),
'web-terminal-svg-path' => image_path('illustrations/web-ide_promotion.svg'),
'web-terminal-help-path' => help_page_path('user/project/web_ide/index.md', anchor: 'interactive-web-terminals-for-the-web-ide'),
'web-terminal-config-help-path' => help_page_path('user/project/web_ide/index.md', anchor: 'web-ide-configuration-file'),
@@ -61,8 +64,8 @@ module IdeHelper
API::Entities::Project.represent(project, current_user: current_user).to_json
end
- def enable_environments_guidance?
- experiment(:in_product_guidance_environments_webide, project: @project) do |e|
+ def enable_environments_guidance?(project)
+ experiment(:in_product_guidance_environments_webide, project: project) do |e|
e.candidate { !has_dismissed_ide_environments_callout? }
e.run
diff --git a/app/models/work_item.rb b/app/models/work_item.rb
index ec2071b663f..5ae3fb6cf78 100644
--- a/app/models/work_item.rb
+++ b/app/models/work_item.rb
@@ -17,8 +17,9 @@ class WorkItem < Issue
has_many :child_links, class_name: '::WorkItems::ParentLink', foreign_key: :work_item_parent_id
has_many :work_item_children, through: :child_links, class_name: 'WorkItem',
foreign_key: :work_item_id, source: :work_item
- has_many :work_item_children_by_created_at, -> { order(:created_at) }, through: :child_links, class_name: 'WorkItem',
- foreign_key: :work_item_id, source: :work_item
+ has_many :work_item_children_by_relative_position, -> { work_item_children_keyset_order },
+ through: :child_links, class_name: 'WorkItem',
+ foreign_key: :work_item_id, source: :work_item
scope :inc_relations_for_permission_check, -> { includes(:author, project: :project_feature) }
@@ -32,6 +33,26 @@ class WorkItem < Issue
def test_reports_join_column
'issues.id'
end
+
+ def work_item_children_keyset_order
+ keyset_order = Gitlab::Pagination::Keyset::Order.build([
+ Gitlab::Pagination::Keyset::ColumnOrderDefinition.new(
+ attribute_name: :relative_position,
+ column_expression: WorkItems::ParentLink.arel_table[:relative_position],
+ order_expression: WorkItems::ParentLink.arel_table[:relative_position].asc.nulls_last,
+ nullable: :nulls_last,
+ distinct: false
+ ),
+ Gitlab::Pagination::Keyset::ColumnOrderDefinition.new(
+ attribute_name: :created_at,
+ order_expression: WorkItem.arel_table[:created_at].asc,
+ nullable: :not_nullable,
+ distinct: false
+ )
+ ])
+
+ includes(:child_links).order(keyset_order)
+ end
end
def noteable_target_type_name
diff --git a/app/models/work_items/widgets/hierarchy.rb b/app/models/work_items/widgets/hierarchy.rb
index ee10c631bcc..8f54cb32f43 100644
--- a/app/models/work_items/widgets/hierarchy.rb
+++ b/app/models/work_items/widgets/hierarchy.rb
@@ -8,7 +8,7 @@ module WorkItems
end
def children
- work_item.work_item_children_by_created_at
+ work_item.work_item_children_by_relative_position
end
end
end
diff --git a/app/views/ide/_show.html.haml b/app/views/ide/_show.html.haml
index c968d84fc36..5a6e93c3573 100644
--- a/app/views/ide/_show.html.haml
+++ b/app/views/ide/_show.html.haml
@@ -7,4 +7,4 @@
- content_for :prefetch_asset_tags do
- webpack_preload_asset_tag('monaco')
-= render partial: 'shared/ide_root', locals: { data: ide_data, loading_text: _('Loading the GitLab IDE...') }
+= render partial: 'shared/ide_root', locals: { data: ide_data(project: @project, branch: @branch, path: @path, merge_request: @merge_request, fork_info: @fork_info), loading_text: _('Loading the GitLab IDE...') }
diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml
index f921f70dd0b..754de2db8f3 100644
--- a/app/views/projects/graphs/show.html.haml
+++ b/app/views/projects/graphs/show.html.haml
@@ -1,9 +1,5 @@
- page_title _('Contributors')
-- if Feature.enabled?(:use_ref_type_parameter, @project)
- - graph_path = project_graph_path(@project, current_ref, ref_type: @ref_type, format: :json)
- - commits_path = project_commits_path(@project, current_ref, ref_type: @ref_type)
-- else
- - graph_path = project_graph_path(@project, current_ref, format: :json)
- - commits_path = project_commits_path(@project, current_ref)
+- graph_path = project_graph_path(@project, current_ref, ref_type: @ref_type, format: :json)
+- commits_path = project_commits_path(@project, current_ref, ref_type: @ref_type)
.js-contributors-graph{ class: container_class, data: { project_graph_path: graph_path, project_branch: current_ref, default_branch: @project.default_branch, project_id: @project.id, commits_path: commits_path } }
diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml
index 70bb97b7625..c8d4f02274b 100644
--- a/app/views/projects/network/show.html.haml
+++ b/app/views/projects/network/show.html.haml
@@ -1,6 +1,6 @@
- breadcrumb_title _("Graph")
- page_title _("Graph"), @ref
-- network_path = Feature.enabled?(:use_ref_type_parameter) ? project_network_path(@project, @id, ref_type: @ref_type) : project_network_path(@project, @id)
+- network_path = project_network_path(@project, @id, ref_type: @ref_type)
= render "head"
.gl-mt-5
.project-network.gl-border-1.gl-border-solid.gl-border-gray-300
diff --git a/config/feature_flags/development/use_ref_type_parameter.yml b/config/feature_flags/development/use_ref_type_parameter.yml
deleted file mode 100644
index 5cdd3d6f198..00000000000
--- a/config/feature_flags/development/use_ref_type_parameter.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: use_ref_type_parameter
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102936
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/381501
-milestone: '15.6'
-type: development
-group: group::source code
-default_enabled: false
-
diff --git a/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml b/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml
index 2b5b0eaa2cc..49da20e316e 100644
--- a/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml
+++ b/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml
@@ -9,7 +9,17 @@ product_category: web_ide
value_type: number
status: active
time_frame: 28d
+instrumentation_class: AggregatedMetric
data_source: redis_hll
+options:
+ aggregate:
+ operator: OR
+ attribute: user_id
+ events:
+ - g_edit_by_web_ide
+ - g_edit_by_sfe
+ - g_edit_by_snippet_ide
+ - g_edit_by_live_preview
distribution:
- ce
- ee
diff --git a/data/deprecations/15-9-deprecate-option-to-remove-project-immediately.yml b/data/deprecations/15-9-deprecate-option-to-remove-project-immediately.yml
new file mode 100644
index 00000000000..687270fbb71
--- /dev/null
+++ b/data/deprecations/15-9-deprecate-option-to-remove-project-immediately.yml
@@ -0,0 +1,13 @@
+- title: "Option to delete projects immediately is deprecated from deletion protection settings" # (required) Clearly explain the change, or planned change. For example, "The `confidential` field for a `Note` is deprecated" or "CI/CD job names will be limited to 250 characters."
+ announcement_milestone: "15.9" # (required) The milestone when this feature was first announced as deprecated.
+ removal_milestone: "16.0" # (required) The milestone when this feature is planned to be removed
+ breaking_change: true # (required) Change to false if this is not a breaking change.
+ reporter: lohrc # (required) GitLab username of the person reporting the change
+ stage: manage # (required) String value of the stage that the feature was created in. e.g., Growth
+ issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/389557 # (required) Link to the deprecation issue in GitLab
+ body: | # (required) Do not modify this line, instead modify the lines below.
+ The project deletion protection setting in the Admin Area had an option to delete projects immediately. Starting with 16.0, this option will no longer be available, and delayed project deletion will become the default behavior.
+
+ The option will no longer appear as a group setting. Self-managed users will still have the option to define the deletion delay period, and SaaS users have a non-adjustable default retention period of 7 days. Users can still delete the project immediately from the project settings.
+
+ The option to delete projects immediately by default was deprecated to prevent users from accidentally taking this action and permanently losing projects.
diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md
index c80fc0d67d0..068e631f62a 100644
--- a/doc/administration/geo/replication/troubleshooting.md
+++ b/doc/administration/geo/replication/troubleshooting.md
@@ -1323,6 +1323,34 @@ To fix this issue, set the primary site's internal URL to a URL that is:
GeoNode.where(primary: true).first.update!(internal_url: "https://unique.url.for.primary.site")
```
+### Secondary site returns `Received HTTP code 403 from proxy after CONNECT`
+
+If you have installed GitLab using the Linux package (Omnibus) and have configured the `no_proxy` [custom environment variable](https://docs.gitlab.com/omnibus/settings/environment-variables.html) for Gitaly, you may experience this issue. Affected versions:
+
+- `15.4.6`
+- `15.5.0`-`15.5.6`
+- `15.6.0`-`15.6.3`
+- `15.7.0`-`15.7.1`
+
+This is due to [a bug introduced in the included version of cURL](https://github.com/curl/curl/issues/10122) shipped with Omnibus GitLab 15.4.6 and later. You are encouraged to upgrade to a later version where this has been [fixed](https://about.gitlab.com/releases/2023/01/09/security-release-gitlab-15-7-2-released/).
+
+The bug causes all wildcard domains (`.example.com`) to be ignored except for the last on in the `no_proxy` environment variable list. Therefore, if for any reason you cannot upgrade to a newer version, you can work around the issue by moving your wildcard domain to the end of the list:
+
+1. Edit `/etc/gitlab/gitlab.rb`:
+
+ ```ruby
+ gitaly['env'] = {
+ "no_proxy" => "sever.yourdomain.org, .yourdomain.com",
+ }
+
+1. Reconfigure GitLab:
+
+ ```shell
+ sudo gitlab-ctl reconfigure
+ ```
+
+You can have only one wildcard domain in the `no_proxy` list.
+
## Fixing non-PostgreSQL replication failures
If you notice replication failures in `Admin > Geo > Sites` or the [Sync status Rake task](#sync-status-rake-task), you can try to resolve the failures with the following general steps:
diff --git a/doc/administration/geo/secondary_proxy/index.md b/doc/administration/geo/secondary_proxy/index.md
index ef3ce9237e4..addf894f0a5 100644
--- a/doc/administration/geo/secondary_proxy/index.md
+++ b/doc/administration/geo/secondary_proxy/index.md
@@ -32,6 +32,9 @@ Use secondary proxying for use-cases including:
- Having all Geo sites behind a single URL.
- Geographically load-balancing traffic without worrying about write access.
+NOTE:
+Geo proxying for secondary sites is separate from Geo proxying/redirecting for Git push operations.
+
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
For an overview, see: [Secondary proxying using geographic load-balancer and AWS Route53](https://www.youtube.com/watch?v=TALLy7__Na8).
diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md
index bcf106b9d14..dcba034b381 100644
--- a/doc/administration/reference_architectures/10k_users.md
+++ b/doc/administration/reference_architectures/10k_users.md
@@ -1152,15 +1152,19 @@ are supported and can be added if needed.
## Configure Gitaly Cluster
-[Gitaly Cluster](../gitaly/praefect.md) is a GitLab provided and recommended fault tolerant solution for storing Git repositories.
-In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being designated the primary, and failover occurs automatically if the primary node goes down.
+[Gitaly Cluster](../gitaly/praefect.md) is a GitLab-provided and recommended fault tolerant solution for storing Git
+repositories. In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being
+designated the primary, and failover occurs automatically if the primary node goes down.
-NOTE:
-Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management. Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-For implementations with sharded Gitaly, use the same Gitaly specs. Follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md) instead of this section.
+Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management.
+Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-NOTE:
-For guidance on how to migrate existing repositories from NFS to Gitaly Cluster, [follow the main documentation](../gitaly/index.md#migrate-to-gitaly-cluster).
+For guidance on:
+
+- Implementing sharded Gitaly instead, follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md)
+ instead of this section. Use the same Gitaly specs.
+- Migrating existing repositories that aren't managed by Gitaly Cluster, see
+ [migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
NOTE:
Gitaly has been designed and tested with repositories of varying sizes that follow best practices.
@@ -1168,10 +1172,6 @@ However, large repositories or monorepos not following these practices can signi
impact Gitaly performance and requirements.
Refer to [Large repositories](index.md#large-repositories) for more information.
-NOTE:
-This architecture uses [Gitaly Cluster](../gitaly/praefect.md). If you have existing repositories that aren't already managed by Gitaly Cluster, you must first
-[migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
-
The recommended cluster setup includes the following components:
- 3 Gitaly nodes: Replicated storage of Git repositories.
@@ -1179,9 +1179,9 @@ The recommended cluster setup includes the following components:
- 1 Praefect PostgreSQL node: Database server for Praefect. A third-party solution
is required for Praefect database connections to be made highly available.
- 1 load balancer: A load balancer is required for Praefect. The
- [internal load balancer](#configure-the-internal-load-balancer) will be used.
+ [internal load balancer](#configure-the-internal-load-balancer) is used.
-This section will detail how to configure the recommended standard setup in order.
+This section details how to configure the recommended standard setup in order.
For more advanced setups refer to the [standalone Gitaly Cluster documentation](../gitaly/praefect.md).
### Configure Praefect PostgreSQL
diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md
index 37bb6455347..48e6d01a2e5 100644
--- a/doc/administration/reference_architectures/25k_users.md
+++ b/doc/administration/reference_architectures/25k_users.md
@@ -1171,16 +1171,19 @@ are supported and can be added if needed.
## Configure Gitaly Cluster
-[Gitaly Cluster](../gitaly/praefect.md) is a GitLab-provided and recommended
-fault tolerant solution for storing Git repositories.
-In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being designated the primary, and failover occurs automatically if the primary node goes down.
+[Gitaly Cluster](../gitaly/praefect.md) is a GitLab-provided and recommended fault tolerant solution for storing Git
+repositories. In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being
+designated the primary, and failover occurs automatically if the primary node goes down.
-NOTE:
-Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management. Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-For implementations with sharded Gitaly, use the same Gitaly specs. Follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md) instead of this section.
+Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management.
+Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-NOTE:
-For guidance on how to migrate existing repositories from NFS to Gitaly Cluster, [follow the main documentation](../gitaly/index.md#migrate-to-gitaly-cluster).
+For guidance on:
+
+- Implementing sharded Gitaly instead, follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md)
+ instead of this section. Use the same Gitaly specs.
+- Migrating existing repositories that aren't managed by Gitaly Cluster, see
+ [migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
NOTE:
Gitaly has been designed and tested with repositories of varying sizes that follow best practices.
@@ -1188,10 +1191,6 @@ However, large repositories or monorepos not following these practices can signi
impact Gitaly performance and requirements.
Refer to [Large repositories](index.md#large-repositories) for more information.
-NOTE:
-This architecture uses [Gitaly Cluster](../gitaly/praefect.md). If you have existing repositories that aren't already managed by Gitaly Cluster, you must first
-[migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
-
The recommended cluster setup includes the following components:
- 3 Gitaly nodes: Replicated storage of Git repositories.
@@ -1199,9 +1198,9 @@ The recommended cluster setup includes the following components:
- 1 Praefect PostgreSQL node: Database server for Praefect. A third-party solution
is required for Praefect database connections to be made highly available.
- 1 load balancer: A load balancer is required for Praefect. The
- [internal load balancer](#configure-the-internal-load-balancer) will be used.
+ [internal load balancer](#configure-the-internal-load-balancer) is used.
-This section will detail how to configure the recommended standard setup in order.
+This section details how to configure the recommended standard setup in order.
For more advanced setups refer to the [standalone Gitaly Cluster documentation](../gitaly/praefect.md).
### Configure Praefect PostgreSQL
diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md
index b4aeba6e855..2f65f3ba2e1 100644
--- a/doc/administration/reference_architectures/3k_users.md
+++ b/doc/administration/reference_architectures/3k_users.md
@@ -1107,15 +1107,19 @@ The following IPs will be used as an example:
## Configure Gitaly Cluster
-[Gitaly Cluster](../gitaly/praefect.md) is a GitLab provided and recommended fault tolerant solution for storing Git repositories.
-In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being designated the primary, and failover occurs automatically if the primary node goes down.
+[Gitaly Cluster](../gitaly/praefect.md) is a GitLab-provided and recommended fault tolerant solution for storing Git
+repositories. In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being
+designated the primary, and failover occurs automatically if the primary node goes down.
-NOTE:
-Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management. Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-For implementations with sharded Gitaly, use the same Gitaly specs. Follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md) instead of this section.
+Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management.
+Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-NOTE:
-For guidance on how to migrate existing repositories from NFS to Gitaly Cluster, [follow the main documentation](../gitaly/index.md#migrate-to-gitaly-cluster).
+For guidance on:
+
+- Implementing sharded Gitaly instead, follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md)
+ instead of this section. Use the same Gitaly specs.
+- Migrating existing repositories that aren't managed by Gitaly Cluster, see
+ [migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
NOTE:
Gitaly has been designed and tested with repositories of varying sizes that follow best practices.
@@ -1123,10 +1127,6 @@ However, large repositories or monorepos not following these practices can signi
impact Gitaly performance and requirements.
Refer to [Large repositories](index.md#large-repositories) for more information.
-NOTE:
-This architecture uses [Gitaly Cluster](../gitaly/praefect.md). If you have existing repositories that aren't already managed by Gitaly Cluster, you must first
-[migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
-
The recommended cluster setup includes the following components:
- 3 Gitaly nodes: Replicated storage of Git repositories.
@@ -1134,9 +1134,9 @@ The recommended cluster setup includes the following components:
- 1 Praefect PostgreSQL node: Database server for Praefect. A third-party solution
is required for Praefect database connections to be made highly available.
- 1 load balancer: A load balancer is required for Praefect. The
- [internal load balancer](#configure-the-internal-load-balancer) will be used.
+ [internal load balancer](#configure-the-internal-load-balancer) is used.
-This section will detail how to configure the recommended standard setup in order.
+This section details how to configure the recommended standard setup in order.
For more advanced setups refer to the [standalone Gitaly Cluster documentation](../gitaly/praefect.md).
### Configure Praefect PostgreSQL
diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md
index df70233c80e..e12f40b734e 100644
--- a/doc/administration/reference_architectures/50k_users.md
+++ b/doc/administration/reference_architectures/50k_users.md
@@ -1165,15 +1165,19 @@ Advanced [configuration options](https://docs.gitlab.com/omnibus/settings/redis.
## Configure Gitaly Cluster
-[Gitaly Cluster](../gitaly/praefect.md) is a GitLab provided and recommended fault tolerant solution for storing Git repositories.
-In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being designated the primary, and failover occurs automatically if the primary node goes down.
+[Gitaly Cluster](../gitaly/praefect.md) is a GitLab-provided and recommended fault tolerant solution for storing Git
+repositories. In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being
+designated the primary, and failover occurs automatically if the primary node goes down.
-NOTE:
-Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management. Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-For implementations with sharded Gitaly, use the same Gitaly specs. Follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md) instead of this section.
+Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management.
+Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-NOTE:
-For guidance on how to migrate existing repositories from NFS to Gitaly Cluster, [follow the main documentation](../gitaly/index.md#migrate-to-gitaly-cluster).
+For guidance on:
+
+- Implementing sharded Gitaly instead, follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md)
+ instead of this section. Use the same Gitaly specs.
+- Migrating existing repositories that aren't managed by Gitaly Cluster, see
+ [migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
NOTE:
Gitaly has been designed and tested with repositories of varying sizes that follow best practices.
@@ -1181,10 +1185,6 @@ However, large repositories or monorepos not following these practices can signi
impact Gitaly performance and requirements.
Refer to [Large repositories](index.md#large-repositories) for more information.
-NOTE:
-This architecture uses [Gitaly Cluster](../gitaly/praefect.md). If you have existing repositories that aren't already managed by Gitaly Cluster, you must first
-[migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
-
The recommended cluster setup includes the following components:
- 3 Gitaly nodes: Replicated storage of Git repositories.
@@ -1192,9 +1192,9 @@ The recommended cluster setup includes the following components:
- 1 Praefect PostgreSQL node: Database server for Praefect. A third-party solution
is required for Praefect database connections to be made highly available.
- 1 load balancer: A load balancer is required for Praefect. The
- [internal load balancer](#configure-the-internal-load-balancer) will be used.
+ [internal load balancer](#configure-the-internal-load-balancer) is used.
-This section will detail how to configure the recommended standard setup in order.
+This section details how to configure the recommended standard setup in order.
For more advanced setups refer to the [standalone Gitaly Cluster documentation](../gitaly/praefect.md).
### Configure Praefect PostgreSQL
diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md
index 37a765ab0a8..113e9a26a54 100644
--- a/doc/administration/reference_architectures/5k_users.md
+++ b/doc/administration/reference_architectures/5k_users.md
@@ -1103,15 +1103,19 @@ The following IPs are used as an example:
## Configure Gitaly Cluster
-[Gitaly Cluster](../gitaly/praefect.md) is a GitLab provided and recommended fault tolerant solution for storing Git repositories.
-In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being designated the primary, and failover occurs automatically if the primary node goes down.
+[Gitaly Cluster](../gitaly/praefect.md) is a GitLab-provided and recommended fault tolerant solution for storing Git
+repositories. In this configuration, every Git repository is stored on every Gitaly node in the cluster, with one being
+designated the primary, and failover occurs automatically if the primary node goes down.
-NOTE:
-Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management. Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-For implementations with sharded Gitaly, use the same Gitaly specs. Follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md) instead of this section.
+Gitaly Cluster provides the benefits of fault tolerance, but comes with additional complexity of setup and management.
+Review the existing [technical limitations and considerations before deploying Gitaly Cluster](../gitaly/index.md#before-deploying-gitaly-cluster).
-NOTE:
-For guidance on how to migrate existing repositories from NFS to Gitaly Cluster, [follow the main documentation](../gitaly/index.md#migrate-to-gitaly-cluster).
+For guidance on:
+
+- Implementing sharded Gitaly instead, follow the [separate Gitaly documentation](../gitaly/configure_gitaly.md)
+ instead of this section. Use the same Gitaly specs.
+- Migrating existing repositories that aren't managed by Gitaly Cluster, see
+ [migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
NOTE:
Gitaly has been designed and tested with repositories of varying sizes that follow best practices.
@@ -1119,10 +1123,6 @@ However, large repositories or monorepos not following these practices can signi
impact Gitaly performance and requirements.
Refer to [Large repositories](index.md#large-repositories) for more information.
-NOTE:
-This architecture uses [Gitaly Cluster](../gitaly/praefect.md). If you have existing repositories that aren't already managed by Gitaly Cluster, you must first
-[migrate to Gitaly Cluster](../gitaly/index.md#migrate-to-gitaly-cluster).
-
The recommended cluster setup includes the following components:
- 3 Gitaly nodes: Replicated storage of Git repositories.
diff --git a/doc/api/remote_mirrors.md b/doc/api/remote_mirrors.md
index 00dc34e261a..93dffe69ef5 100644
--- a/doc/api/remote_mirrors.md
+++ b/doc/api/remote_mirrors.md
@@ -14,6 +14,11 @@ can query and modify the state of these mirrors with the remote mirror API.
For security reasons, the `url` attribute in the API response is always scrubbed of username
and password information.
+NOTE:
+[Pull mirrors](../user/project/repository/mirror/pull.md) use
+[a different API endpoint](projects.md#configure-pull-mirroring-for-a-project) to
+display and update them.
+
## List a project's remote mirrors
Returns an array of remote mirrors and their statuses:
diff --git a/doc/update/deprecations.md b/doc/update/deprecations.md
index 63c87abdf93..772d0f213b8 100644
--- a/doc/update/deprecations.md
+++ b/doc/update/deprecations.md
@@ -107,6 +107,24 @@ Review the details carefully before upgrading.
Due to low customer usage, Load Performance Testing is deprecated and will be removed. There is no planned replacement and users should stop using Load Performance Testing before GitLab 17.0.
</div>
+
+<div class="deprecation removal-160 breaking-change">
+
+### Option to delete projects immediately is deprecated from deletion protection settings
+
+Planned removal: GitLab <span class="removal-milestone">16.0</span> <span class="removal-date"></span>
+
+WARNING:
+This is a [breaking change](https://docs.gitlab.com/ee/development/deprecation_guidelines/).
+Review the details carefully before upgrading.
+
+The project deletion protection setting in the Admin Area had an option to delete projects immediately. Starting with 16.0, this option will no longer be available, and delayed project deletion will become the default behavior.
+
+The option will no longer appear as a group setting. Self-managed users will still have the option to define the deletion delay period, and SaaS users have a non-adjustable default retention period of 7 days. Users can still delete the project immediately from the project settings.
+
+The option to delete projects immediately by default was deprecated to prevent users from accidentally taking this action and permanently losing projects.
+
+</div>
</div>
<div class="announcement-milestone">
diff --git a/lib/backup/database.rb b/lib/backup/database.rb
index 61dd6033eb0..bd3832c7327 100644
--- a/lib/backup/database.rb
+++ b/lib/backup/database.rb
@@ -25,13 +25,6 @@ module Backup
override :dump
def dump(destination_dir, backup_id)
- snapshot_ids = base_models_for_backup.each_with_object({}) do |(database_name, base_model), snapshot_ids|
- base_model.connection.begin_transaction(isolation: :repeatable_read)
-
- snapshot_ids[database_name] =
- base_model.connection.execute("SELECT pg_export_snapshot() as snapshot_id;").first['snapshot_id']
- end
-
FileUtils.mkdir_p(destination_dir)
snapshot_ids.each do |database_name, snapshot_id|
@@ -69,6 +62,10 @@ module Backup
report_success(success)
progress.flush
end
+ ensure
+ base_models_for_backup.each do |_database_name, base_model|
+ Gitlab::Database::TransactionTimeoutSettings.new(base_model.connection).restore_timeouts
+ end
end
override :restore
@@ -255,5 +252,16 @@ module Backup
def pg_restore_cmd(database)
['psql', database]
end
+
+ def snapshot_ids
+ @snapshot_ids ||= base_models_for_backup.each_with_object({}) do |(database_name, base_model), snapshot_ids|
+ Gitlab::Database::TransactionTimeoutSettings.new(base_model.connection).disable_timeouts
+
+ base_model.connection.begin_transaction(isolation: :repeatable_read)
+
+ snapshot_ids[database_name] =
+ base_model.connection.execute("SELECT pg_export_snapshot() as snapshot_id;").first['snapshot_id']
+ end
+ end
end
end
diff --git a/lib/extracts_ref.rb b/lib/extracts_ref.rb
index f22996df0a5..dba1aad639c 100644
--- a/lib/extracts_ref.rb
+++ b/lib/extracts_ref.rb
@@ -68,7 +68,7 @@ module ExtractsRef
return unless @ref.present?
- @commit = if ref_type && Feature.enabled?(:use_ref_type_parameter, @repo.project)
+ @commit = if ref_type
@fully_qualified_ref = %(refs/#{ref_type}/#{@ref})
@repo.commit(@fully_qualified_ref)
else
diff --git a/lib/gitlab/database/lock_writes_manager.rb b/lib/gitlab/database/lock_writes_manager.rb
index 2e08e1ffb42..83884e89d6e 100644
--- a/lib/gitlab/database/lock_writes_manager.rb
+++ b/lib/gitlab/database/lock_writes_manager.rb
@@ -10,18 +10,6 @@ module Gitlab
# See https://www.postgresql.org/message-id/16934.1568989957%40sss.pgh.pa.us
EXPECTED_TRIGGER_RECORD_COUNT = 3
- def self.tables_to_lock(connection)
- Gitlab::Database::GitlabSchema.tables_to_schema.each do |table_name, schema_name|
- yield table_name, schema_name
- end
-
- Gitlab::Database::SharedModel.using_connection(connection) do
- Postgresql::DetachedPartition.find_each do |detached_partition|
- yield detached_partition.fully_qualified_table_name, detached_partition.table_schema
- end
- end
- end
-
def initialize(table_name:, connection:, database_name:, with_retries: true, logger: nil, dry_run: false)
@table_name = table_name
@connection = connection
diff --git a/lib/gitlab/database/tables_locker.rb b/lib/gitlab/database/tables_locker.rb
new file mode 100644
index 00000000000..c417ce716e8
--- /dev/null
+++ b/lib/gitlab/database/tables_locker.rb
@@ -0,0 +1,65 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ class TablesLocker
+ GITLAB_SCHEMAS_TO_IGNORE = %i[gitlab_geo].freeze
+
+ def initialize(logger: nil, dry_run: false)
+ @logger = logger
+ @dry_run = dry_run
+ end
+
+ def unlock_writes
+ Gitlab::Database::EachDatabase.each_database_connection do |connection, database_name|
+ tables_to_lock(connection) do |table_name, schema_name|
+ # TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/366834
+ next if schema_name.in? GITLAB_SCHEMAS_TO_IGNORE
+
+ lock_writes_manager(table_name, connection, database_name).unlock_writes
+ end
+ end
+ end
+
+ def lock_writes
+ Gitlab::Database::EachDatabase.each_database_connection(include_shared: false) do |connection, database_name|
+ schemas_for_connection = Gitlab::Database.gitlab_schemas_for_connection(connection)
+
+ tables_to_lock(connection) do |table_name, schema_name|
+ # TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/366834
+ next if schema_name.in? GITLAB_SCHEMAS_TO_IGNORE
+
+ if schemas_for_connection.include?(schema_name)
+ lock_writes_manager(table_name, connection, database_name).unlock_writes
+ else
+ lock_writes_manager(table_name, connection, database_name).lock_writes
+ end
+ end
+ end
+ end
+
+ private
+
+ def tables_to_lock(connection, &block)
+ Gitlab::Database::GitlabSchema.tables_to_schema.each(&block)
+
+ Gitlab::Database::SharedModel.using_connection(connection) do
+ Postgresql::DetachedPartition.find_each do |detached_partition|
+ yield detached_partition.fully_qualified_table_name, detached_partition.table_schema
+ end
+ end
+ end
+
+ def lock_writes_manager(table_name, connection, database_name)
+ Gitlab::Database::LockWritesManager.new(
+ table_name: table_name,
+ connection: connection,
+ database_name: database_name,
+ with_retries: true,
+ logger: @logger,
+ dry_run: @dry_run
+ )
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/database/transaction_timeout_settings.rb b/lib/gitlab/database/transaction_timeout_settings.rb
new file mode 100644
index 00000000000..9485b8d4cbc
--- /dev/null
+++ b/lib/gitlab/database/transaction_timeout_settings.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ class TransactionTimeoutSettings
+ SETTING = 'idle_in_transaction_session_timeout'
+
+ def initialize(connection)
+ @connection = connection
+ end
+
+ def disable_timeouts
+ @connection.execute("SET #{SETTING} = 0")
+ end
+
+ def restore_timeouts
+ @connection.execute("RESET #{SETTING}")
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/redis/wrapper.rb b/lib/gitlab/redis/wrapper.rb
index e5e1e1d4165..c990655769c 100644
--- a/lib/gitlab/redis/wrapper.rb
+++ b/lib/gitlab/redis/wrapper.rb
@@ -59,16 +59,11 @@ module Gitlab
config_file_path("redis.#{store_name.underscore}.yml"),
# The current Redis instance may have been split off from another one
- # (e.g. TraceChunks was split off from SharedState). There are
- # installations out there where the lowest priority config source
- # (resque.yml) contains bogus values. In those cases, config_file_name
- # should resolve to the instance we originated from (the
- # "config_fallback") rather than resque.yml.
+ # (e.g. TraceChunks was split off from SharedState).
config_fallback&.config_file_name,
# Global config sources:
- ENV['GITLAB_REDIS_CONFIG_FILE'],
- config_file_path('resque.yml')
+ ENV['GITLAB_REDIS_CONFIG_FILE']
].compact.first
end
@@ -199,11 +194,17 @@ module Gitlab
def fetch_config
redis_yml = read_yaml(self.class.redis_yml_path).fetch(@rails_env, {})
instance_config_yml = read_yaml(self.class.config_file_name)[@rails_env]
+ resque_yml = read_yaml(self.class.config_file_path('resque.yml'))[@rails_env]
[
redis_yml[self.class.store_name.underscore],
+ # There are installations out there where the lowest priority config source (resque.yml) contains bogus
+ # values. In those cases, the configuration should be read for the instance we originated from (the
+ # "config_fallback"), either from its specific config file or from redis.yml, before falling back to
+ # resque.yml.
instance_config_yml,
- self.class.config_fallback && redis_yml[self.class.config_fallback.store_name.underscore]
+ self.class.config_fallback && redis_yml[self.class.config_fallback.store_name.underscore],
+ resque_yml
].compact.first
end
diff --git a/lib/gitlab/usage_data.rb b/lib/gitlab/usage_data.rb
index 1d984f02f39..53794854bd0 100644
--- a/lib/gitlab/usage_data.rb
+++ b/lib/gitlab/usage_data.rb
@@ -589,8 +589,7 @@ module Gitlab
{
action_monthly_active_users_web_ide_edit: redis_usage_data { counter.count_web_ide_edit_actions(**date_range) },
action_monthly_active_users_sfe_edit: redis_usage_data { counter.count_sfe_edit_actions(**date_range) },
- action_monthly_active_users_snippet_editor_edit: redis_usage_data { counter.count_snippet_editor_edit_actions(**date_range) },
- action_monthly_active_users_ide_edit: redis_usage_data { counter.count_edit_using_editor(**date_range) }
+ action_monthly_active_users_snippet_editor_edit: redis_usage_data { counter.count_snippet_editor_edit_actions(**date_range) }
}
end
diff --git a/lib/gitlab/usage_data_counters/editor_unique_counter.rb b/lib/gitlab/usage_data_counters/editor_unique_counter.rb
index 8ec94cb9aa6..2aebc1b8813 100644
--- a/lib/gitlab/usage_data_counters/editor_unique_counter.rb
+++ b/lib/gitlab/usage_data_counters/editor_unique_counter.rb
@@ -33,11 +33,6 @@ module Gitlab
count_unique(EDIT_BY_SNIPPET_EDITOR, date_from, date_to)
end
- def count_edit_using_editor(date_from:, date_to:)
- events = Gitlab::UsageDataCounters::HLLRedisCounter.events_for_category(EDIT_CATEGORY)
- count_unique(events, date_from, date_to)
- end
-
private
def track_unique_action(event_name, author, time, project = nil)
diff --git a/lib/sidebars/projects/menus/repository_menu.rb b/lib/sidebars/projects/menus/repository_menu.rb
index 735be5a5133..ec91ae741fe 100644
--- a/lib/sidebars/projects/menus/repository_menu.rb
+++ b/lib/sidebars/projects/menus/repository_menu.rb
@@ -56,11 +56,7 @@ module Sidebars
end
def commits_menu_item
- link = if Feature.enabled?(:use_ref_type_parameter, context.project)
- project_commits_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
- else
- project_commits_path(context.project, context.current_ref)
- end
+ link = project_commits_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
::Sidebars::MenuItem.new(
title: _('Commits'),
@@ -93,11 +89,7 @@ module Sidebars
def contributors_menu_item
return false unless context.project.analytics_enabled?
- link = if Feature.enabled?(:use_ref_type_parameter, context.project)
- project_graph_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
- else
- project_graph_path(context.project, context.current_ref)
- end
+ link = project_graph_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
::Sidebars::MenuItem.new(
title: _('Contributors'),
@@ -108,11 +100,7 @@ module Sidebars
end
def graphs_menu_item
- link = if Feature.enabled?(:use_ref_type_parameter, context.project)
- project_network_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
- else
- project_network_path(context.project, context.current_ref)
- end
+ link = project_network_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
::Sidebars::MenuItem.new(
title: _('Graph'),
diff --git a/lib/tasks/gitlab/db/lock_writes.rake b/lib/tasks/gitlab/db/lock_writes.rake
index 212d60a7231..7f3b806b53d 100644
--- a/lib/tasks/gitlab/db/lock_writes.rake
+++ b/lib/tasks/gitlab/db/lock_writes.rake
@@ -4,49 +4,18 @@ namespace :gitlab do
namespace :db do
desc "GitLab | DB | Install prevent write triggers on all databases"
task lock_writes: [:environment, 'gitlab:db:validate_config'] do
- Gitlab::Database::EachDatabase.each_database_connection(include_shared: false) do |connection, database_name|
- schemas_for_connection = Gitlab::Database.gitlab_schemas_for_connection(connection)
-
- Gitlab::Database::LockWritesManager.tables_to_lock(connection) do |table_name, schema_name|
- # TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/366834
- next if schema_name == :gitlab_geo
-
- lock_writes_manager = Gitlab::Database::LockWritesManager.new(
- table_name: table_name,
- connection: connection,
- database_name: database_name,
- with_retries: true,
- logger: Logger.new($stdout),
- dry_run: ENV['DRY_RUN'] == 'true'
- )
-
- if schemas_for_connection.include?(schema_name.to_sym)
- lock_writes_manager.unlock_writes
- else
- lock_writes_manager.lock_writes
- end
- end
- end
+ Gitlab::Database::TablesLocker.new(
+ logger: Logger.new($stdout),
+ dry_run: Gitlab::Utils.to_boolean(ENV['DRY_RUN'], default: false)
+ ).lock_writes
end
desc "GitLab | DB | Remove all triggers that prevents writes from all databases"
task unlock_writes: :environment do
- Gitlab::Database::EachDatabase.each_database_connection do |connection, database_name|
- Gitlab::Database::LockWritesManager.tables_to_lock(connection) do |table_name, schema_name|
- # TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/366834
- next if schema_name == :gitlab_geo
-
- lock_writes_manager = Gitlab::Database::LockWritesManager.new(
- table_name: table_name,
- connection: connection,
- database_name: database_name,
- with_retries: true,
- logger: Logger.new($stdout)
- )
-
- lock_writes_manager.unlock_writes
- end
- end
+ Gitlab::Database::TablesLocker.new(
+ logger: Logger.new($stdout),
+ dry_run: Gitlab::Utils.to_boolean(ENV['DRY_RUN'], default: false)
+ ).unlock_writes
end
end
end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index e904cd6c55f..6936591df9e 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -7750,7 +7750,7 @@ msgstr ""
msgid "CICD|The Auto DevOps pipeline runs if no alternative CI configuration file is found."
msgstr ""
-msgid "CICD|The JWT must be manually declared in each job that needs it. When disabled, the token is always available in all jobs in the pipeline."
+msgid "CICD|The JWT must be manually declared in each job that needs it. When disabled, the token is always available in all jobs in the pipeline. %{linkStart}Learn more.%{linkEnd}"
msgstr ""
msgid "CICD|There are several CI/CD limits in place."
@@ -11867,6 +11867,12 @@ msgstr ""
msgid "Created %{epicTimeagoDate}"
msgstr ""
+msgid "Created %{timeAgo}"
+msgstr ""
+
+msgid "Created %{timeAgo} by %{author}"
+msgstr ""
+
msgid "Created %{timestamp}"
msgstr ""
@@ -45327,6 +45333,9 @@ msgstr ""
msgid "Updated"
msgstr ""
+msgid "Updated %{timeAgo}"
+msgstr ""
+
msgid "Updated %{updated_at} by %{updated_by}"
msgstr ""
diff --git a/spec/controllers/projects/refs_controller_spec.rb b/spec/controllers/projects/refs_controller_spec.rb
index a7a8361ae20..a0d119baf16 100644
--- a/spec/controllers/projects/refs_controller_spec.rb
+++ b/spec/controllers/projects/refs_controller_spec.rb
@@ -22,65 +22,30 @@ RSpec.describe Projects::RefsController, feature_category: :source_code_manageme
subject { get :switch, params: params }
- context 'when the use_ref_type_parameter feature flag is not enabled' do
- before do
- stub_feature_flags(use_ref_type_parameter: false)
- end
-
- where(:destination, :ref_type, :redirected_to) do
- 'tree' | nil | lazy { project_tree_path(project, id) }
- 'tree' | 'heads' | lazy { project_tree_path(project, id) }
- 'blob' | nil | lazy { project_blob_path(project, id) }
- 'blob' | 'heads' | lazy { project_blob_path(project, id) }
- 'graph' | nil | lazy { project_network_path(project, id) }
- 'graph' | 'heads' | lazy { project_network_path(project, id) }
- 'graphs' | nil | lazy { project_graph_path(project, id) }
- 'graphs' | 'heads' | lazy { project_graph_path(project, id) }
- 'find_file' | nil | lazy { project_find_file_path(project, id) }
- 'find_file' | 'heads' | lazy { project_find_file_path(project, id) }
- 'graphs_commits' | nil | lazy { commits_project_graph_path(project, id) }
- 'graphs_commits' | 'heads' | lazy { commits_project_graph_path(project, id) }
- 'badges' | nil | lazy { project_settings_ci_cd_path(project, ref: id) }
- 'badges' | 'heads' | lazy { project_settings_ci_cd_path(project, ref: id) }
- 'commits' | nil | lazy { project_commits_path(project, id) }
- 'commits' | 'heads' | lazy { project_commits_path(project, id) }
- 'somethingelse' | nil | lazy { project_commits_path(project, id) }
- 'somethingelse' | 'heads' | lazy { project_commits_path(project, id) }
- end
-
- with_them do
- it 'redirects to destination' do
- expect(subject).to redirect_to(redirected_to)
- end
- end
+ where(:destination, :ref_type, :redirected_to) do
+ 'tree' | nil | lazy { project_tree_path(project, id) }
+ 'tree' | 'heads' | lazy { project_tree_path(project, id) }
+ 'blob' | nil | lazy { project_blob_path(project, id) }
+ 'blob' | 'heads' | lazy { project_blob_path(project, id) }
+ 'graph' | nil | lazy { project_network_path(project, id) }
+ 'graph' | 'heads' | lazy { project_network_path(project, id, ref_type: 'heads') }
+ 'graphs' | nil | lazy { project_graph_path(project, id) }
+ 'graphs' | 'heads' | lazy { project_graph_path(project, id, ref_type: 'heads') }
+ 'find_file' | nil | lazy { project_find_file_path(project, id) }
+ 'find_file' | 'heads' | lazy { project_find_file_path(project, id) }
+ 'graphs_commits' | nil | lazy { commits_project_graph_path(project, id) }
+ 'graphs_commits' | 'heads' | lazy { commits_project_graph_path(project, id) }
+ 'badges' | nil | lazy { project_settings_ci_cd_path(project, ref: id) }
+ 'badges' | 'heads' | lazy { project_settings_ci_cd_path(project, ref: id) }
+ 'commits' | nil | lazy { project_commits_path(project, id) }
+ 'commits' | 'heads' | lazy { project_commits_path(project, id, ref_type: 'heads') }
+ nil | nil | lazy { project_commits_path(project, id) }
+ nil | 'heads' | lazy { project_commits_path(project, id, ref_type: 'heads') }
end
- context 'when the use_ref_type_parameter feature flag is enabled' do
- where(:destination, :ref_type, :redirected_to) do
- 'tree' | nil | lazy { project_tree_path(project, id) }
- 'tree' | 'heads' | lazy { project_tree_path(project, id) }
- 'blob' | nil | lazy { project_blob_path(project, id) }
- 'blob' | 'heads' | lazy { project_blob_path(project, id) }
- 'graph' | nil | lazy { project_network_path(project, id) }
- 'graph' | 'heads' | lazy { project_network_path(project, id, ref_type: 'heads') }
- 'graphs' | nil | lazy { project_graph_path(project, id) }
- 'graphs' | 'heads' | lazy { project_graph_path(project, id, ref_type: 'heads') }
- 'find_file' | nil | lazy { project_find_file_path(project, id) }
- 'find_file' | 'heads' | lazy { project_find_file_path(project, id) }
- 'graphs_commits' | nil | lazy { commits_project_graph_path(project, id) }
- 'graphs_commits' | 'heads' | lazy { commits_project_graph_path(project, id) }
- 'badges' | nil | lazy { project_settings_ci_cd_path(project, ref: id) }
- 'badges' | 'heads' | lazy { project_settings_ci_cd_path(project, ref: id) }
- 'commits' | nil | lazy { project_commits_path(project, id) }
- 'commits' | 'heads' | lazy { project_commits_path(project, id, ref_type: 'heads') }
- nil | nil | lazy { project_commits_path(project, id) }
- nil | 'heads' | lazy { project_commits_path(project, id, ref_type: 'heads') }
- end
-
- with_them do
- it 'redirects to destination' do
- expect(subject).to redirect_to(redirected_to)
- end
+ with_them do
+ it 'redirects to destination' do
+ expect(subject).to redirect_to(redirected_to)
end
end
end
diff --git a/spec/frontend/ide/init_gitlab_web_ide_spec.js b/spec/frontend/ide/init_gitlab_web_ide_spec.js
index 97254ab680b..b5ad38addbd 100644
--- a/spec/frontend/ide/init_gitlab_web_ide_spec.js
+++ b/spec/frontend/ide/init_gitlab_web_ide_spec.js
@@ -32,6 +32,9 @@ const TEST_START_REMOTE_PARAMS = {
remotePath: '/test/projects/f oo',
connectionToken: '123abc',
};
+const TEST_EDITOR_FONT_SRC_URL = 'http://gitlab.test/assets/jetbrains-mono/JetBrainsMono.woff2';
+const TEST_EDITOR_FONT_FORMAT = 'woff2';
+const TEST_EDITOR_FONT_FAMILY = 'JebBrains Mono';
describe('ide/init_gitlab_web_ide', () => {
let resolveConfirm;
@@ -49,6 +52,9 @@ describe('ide/init_gitlab_web_ide', () => {
el.dataset.userPreferencesPath = TEST_USER_PREFERENCES_PATH;
el.dataset.mergeRequest = TEST_MR_ID;
el.dataset.filePath = TEST_FILE_PATH;
+ el.dataset.editorFontSrcUrl = TEST_EDITOR_FONT_SRC_URL;
+ el.dataset.editorFontFormat = TEST_EDITOR_FONT_FORMAT;
+ el.dataset.editorFontFamily = TEST_EDITOR_FONT_FAMILY;
document.body.append(el);
};
@@ -103,6 +109,11 @@ describe('ide/init_gitlab_web_ide', () => {
userPreferences: TEST_USER_PREFERENCES_PATH,
feedbackIssue: GITLAB_WEB_IDE_FEEDBACK_ISSUE,
},
+ editorFont: {
+ srcUrl: TEST_EDITOR_FONT_SRC_URL,
+ fontFamily: TEST_EDITOR_FONT_FAMILY,
+ format: TEST_EDITOR_FONT_FORMAT,
+ },
handleStartRemote: expect.any(Function),
});
});
diff --git a/spec/frontend/token_access/opt_in_jwt_spec.js b/spec/frontend/token_access/opt_in_jwt_spec.js
index a25a480f889..3a68f247aa6 100644
--- a/spec/frontend/token_access/opt_in_jwt_spec.js
+++ b/spec/frontend/token_access/opt_in_jwt_spec.js
@@ -1,10 +1,11 @@
-import { GlLoadingIcon, GlToggle } from '@gitlab/ui';
+import { GlLink, GlLoadingIcon, GlToggle, GlSprintf } from '@gitlab/ui';
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createMockApollo from 'helpers/mock_apollo_helper';
import { mountExtended, shallowMountExtended } from 'helpers/vue_test_utils_helper';
import waitForPromises from 'helpers/wait_for_promises';
import { createAlert } from '~/flash';
+import { OPT_IN_JWT_HELP_LINK } from '~/token_access/constants';
import OptInJwt from '~/token_access/components/opt_in_jwt.vue';
import getOptInJwtSettingQuery from '~/token_access/graphql/queries/get_opt_in_jwt_setting.query.graphql';
import updateOptInJwtMutation from '~/token_access/graphql/mutations/update_opt_in_jwt.mutation.graphql';
@@ -25,6 +26,7 @@ describe('OptInJwt component', () => {
const disabledOptInJwtHandler = jest.fn().mockResolvedValue(optInJwtQueryResponse(false));
const updateOptInJwtHandler = jest.fn().mockResolvedValue(optInJwtMutationResponse(true));
+ const findHelpLink = () => wrapper.findComponent(GlLink);
const findLoadingIcon = () => wrapper.findComponent(GlLoadingIcon);
const findToggle = () => wrapper.findComponent(GlToggle);
const findOptInJwtExpandedSection = () => wrapper.findByTestId('opt-in-jwt-expanded-section');
@@ -33,7 +35,7 @@ describe('OptInJwt component', () => {
return createMockApollo(requestHandlers);
};
- const createComponent = (requestHandlers, mountFn = shallowMountExtended) => {
+ const createComponent = (requestHandlers, mountFn = shallowMountExtended, options = {}) => {
wrapper = mountFn(OptInJwt, {
provide: {
fullPath: 'root/my-repo',
@@ -44,12 +46,18 @@ describe('OptInJwt component', () => {
targetProjectPath: 'root/test',
};
},
+ ...options,
});
};
+ const createShallowComponent = (requestHandlers, options = {}) =>
+ createComponent(requestHandlers, shallowMountExtended, options);
+ const createFullComponent = (requestHandlers, options = {}) =>
+ createComponent(requestHandlers, mountExtended, options);
+
describe('loading state', () => {
it('shows loading state and hides toggle while waiting on query to resolve', async () => {
- createComponent([[getOptInJwtSettingQuery, enabledOptInJwtHandler]]);
+ createShallowComponent([[getOptInJwtSettingQuery, enabledOptInJwtHandler]]);
expect(findLoadingIcon().exists()).toBe(true);
expect(findToggle().exists()).toBe(false);
@@ -61,9 +69,25 @@ describe('OptInJwt component', () => {
});
});
+ describe('template', () => {
+ it('renders help link', async () => {
+ createShallowComponent([[getOptInJwtSettingQuery, enabledOptInJwtHandler]], {
+ stubs: {
+ GlToggle,
+ GlSprintf,
+ GlLink,
+ },
+ });
+ await waitForPromises();
+
+ expect(findHelpLink().exists()).toBe(true);
+ expect(findHelpLink().attributes('href')).toBe(OPT_IN_JWT_HELP_LINK);
+ });
+ });
+
describe('toggle JWT token access', () => {
it('code instruction is visible when toggle is enabled', async () => {
- createComponent([[getOptInJwtSettingQuery, enabledOptInJwtHandler]]);
+ createShallowComponent([[getOptInJwtSettingQuery, enabledOptInJwtHandler]]);
await waitForPromises();
@@ -72,7 +96,7 @@ describe('OptInJwt component', () => {
});
it('code instruction is hidden when toggle is disabled', async () => {
- createComponent([[getOptInJwtSettingQuery, disabledOptInJwtHandler]]);
+ createShallowComponent([[getOptInJwtSettingQuery, disabledOptInJwtHandler]]);
await waitForPromises();
@@ -82,13 +106,10 @@ describe('OptInJwt component', () => {
describe('update JWT token access', () => {
it('calls updateOptInJwtMutation with correct arguments', async () => {
- createComponent(
- [
- [getOptInJwtSettingQuery, disabledOptInJwtHandler],
- [updateOptInJwtMutation, updateOptInJwtHandler],
- ],
- mountExtended,
- );
+ createFullComponent([
+ [getOptInJwtSettingQuery, disabledOptInJwtHandler],
+ [updateOptInJwtMutation, updateOptInJwtHandler],
+ ]);
await waitForPromises();
@@ -103,13 +124,10 @@ describe('OptInJwt component', () => {
});
it('handles update error', async () => {
- createComponent(
- [
- [getOptInJwtSettingQuery, enabledOptInJwtHandler],
- [updateOptInJwtMutation, failureHandler],
- ],
- mountExtended,
- );
+ createFullComponent([
+ [getOptInJwtSettingQuery, enabledOptInJwtHandler],
+ [updateOptInJwtMutation, failureHandler],
+ ]);
await waitForPromises();
diff --git a/spec/frontend/work_items/components/work_item_created_updated_spec.js b/spec/frontend/work_items/components/work_item_created_updated_spec.js
new file mode 100644
index 00000000000..fe31c01df36
--- /dev/null
+++ b/spec/frontend/work_items/components/work_item_created_updated_spec.js
@@ -0,0 +1,104 @@
+import { GlAvatarLink, GlSprintf } from '@gitlab/ui';
+import { shallowMount } from '@vue/test-utils';
+import Vue from 'vue';
+import VueApollo from 'vue-apollo';
+import createMockApollo from 'helpers/mock_apollo_helper';
+import waitForPromises from 'helpers/wait_for_promises';
+import WorkItemCreatedUpdated from '~/work_items/components/work_item_created_updated.vue';
+import workItemQuery from '~/work_items/graphql/work_item.query.graphql';
+import workItemByIidQuery from '~/work_items/graphql/work_item_by_iid.query.graphql';
+import { workItemResponseFactory, mockAssignees } from '../mock_data';
+
+describe('WorkItemCreatedUpdated component', () => {
+ let wrapper;
+ let successHandler;
+ let successByIidHandler;
+
+ Vue.use(VueApollo);
+
+ const findCreatedAt = () => wrapper.find('[data-testid="work-item-created"]');
+ const findUpdatedAt = () => wrapper.find('[data-testid="work-item-updated"]');
+
+ const findCreatedAtText = () => findCreatedAt().text().replace(/\s+/g, ' ');
+
+ const createComponent = async ({
+ workItemId = 'gid://gitlab/WorkItem/1',
+ workItemIid = '1',
+ fetchByIid = false,
+ author = null,
+ updatedAt,
+ } = {}) => {
+ const workItemQueryResponse = workItemResponseFactory({
+ author,
+ updatedAt,
+ });
+ const byIidResponse = {
+ data: {
+ workspace: {
+ id: 'gid://gitlab/Project/1',
+ workItems: {
+ nodes: [workItemQueryResponse.data.workItem],
+ },
+ },
+ },
+ };
+
+ successHandler = jest.fn().mockResolvedValue(workItemQueryResponse);
+ successByIidHandler = jest.fn().mockResolvedValue(byIidResponse);
+
+ const handlers = [
+ [workItemQuery, successHandler],
+ [workItemByIidQuery, successByIidHandler],
+ ];
+
+ wrapper = shallowMount(WorkItemCreatedUpdated, {
+ apolloProvider: createMockApollo(handlers),
+ propsData: { workItemId, workItemIid, fetchByIid, fullPath: '/some/project' },
+ stubs: {
+ GlAvatarLink,
+ GlSprintf,
+ },
+ });
+
+ await waitForPromises();
+ };
+
+ describe.each([true, false])('fetchByIid is %s', (fetchByIid) => {
+ describe('work item id and iid undefined', () => {
+ beforeEach(async () => {
+ await createComponent({ workItemId: null, workItemIid: null, fetchByIid });
+ });
+
+ it('skips the work item query', () => {
+ expect(successHandler).not.toHaveBeenCalled();
+ expect(successByIidHandler).not.toHaveBeenCalled();
+ });
+ });
+
+ it('shows author name and link', async () => {
+ const author = mockAssignees[0];
+
+ await createComponent({ fetchByIid, author });
+
+ expect(findCreatedAtText()).toEqual(`Created by ${author.name}`);
+ });
+
+ it('shows created time when author is null', async () => {
+ await createComponent({ fetchByIid, author: null });
+
+ expect(findCreatedAtText()).toEqual('Created');
+ });
+
+ it('shows updated time', async () => {
+ await createComponent({ fetchByIid });
+
+ expect(findUpdatedAt().exists()).toBe(true);
+ });
+
+ it('does not show updated time for new work items', async () => {
+ await createComponent({ fetchByIid, updatedAt: null });
+
+ expect(findUpdatedAt().exists()).toBe(false);
+ });
+ });
+});
diff --git a/spec/frontend/work_items/components/work_item_detail_spec.js b/spec/frontend/work_items/components/work_item_detail_spec.js
index b3b64c4fd40..cc4a4416253 100644
--- a/spec/frontend/work_items/components/work_item_detail_spec.js
+++ b/spec/frontend/work_items/components/work_item_detail_spec.js
@@ -16,6 +16,7 @@ import { stubComponent } from 'helpers/stub_component';
import WorkItemDetail from '~/work_items/components/work_item_detail.vue';
import WorkItemActions from '~/work_items/components/work_item_actions.vue';
import WorkItemDescription from '~/work_items/components/work_item_description.vue';
+import WorkItemCreatedUpdated from '~/work_items/components/work_item_created_updated.vue';
import WorkItemDueDate from '~/work_items/components/work_item_due_date.vue';
import WorkItemState from '~/work_items/components/work_item_state.vue';
import WorkItemTitle from '~/work_items/components/work_item_title.vue';
@@ -74,6 +75,7 @@ describe('WorkItemDetail component', () => {
const findLoadingIcon = () => wrapper.findComponent(GlLoadingIcon);
const findWorkItemActions = () => wrapper.findComponent(WorkItemActions);
const findWorkItemTitle = () => wrapper.findComponent(WorkItemTitle);
+ const findCreatedUpdated = () => wrapper.findComponent(WorkItemCreatedUpdated);
const findWorkItemState = () => wrapper.findComponent(WorkItemState);
const findWorkItemDescription = () => wrapper.findComponent(WorkItemDescription);
const findWorkItemDueDate = () => wrapper.findComponent(WorkItemDueDate);
@@ -764,4 +766,18 @@ describe('WorkItemDetail component', () => {
expect(findNotesWidget().exists()).toBe(true);
});
});
+
+ it('does not render created/updated by default', async () => {
+ createComponent();
+ await waitForPromises();
+
+ expect(findCreatedUpdated().exists()).toBe(false);
+ });
+
+ it('renders created/updated when the work_items_mvc flag is on', async () => {
+ createComponent({ workItemsMvcEnabled: true });
+ await waitForPromises();
+
+ expect(findCreatedUpdated().exists()).toBe(true);
+ });
});
diff --git a/spec/frontend/work_items/mock_data.js b/spec/frontend/work_items/mock_data.js
index bd5d0302ad9..5b331c016a9 100644
--- a/spec/frontend/work_items/mock_data.js
+++ b/spec/frontend/work_items/mock_data.js
@@ -57,7 +57,16 @@ export const workItemQueryResponse = {
description: 'description',
confidential: false,
createdAt: '2022-08-03T12:41:54Z',
+ updatedAt: null,
closedAt: null,
+ author: {
+ avatarUrl: 'http://127.0.0.1:3000/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
+ id: 'gid://gitlab/User/1',
+ name: 'Administrator',
+ username: 'root',
+ webUrl: 'http://127.0.0.1:3000/root',
+ __typename: 'UserCore',
+ },
project: {
__typename: 'Project',
id: '1',
@@ -153,7 +162,11 @@ export const updateWorkItemMutationResponse = {
description: 'description',
confidential: false,
createdAt: '2022-08-03T12:41:54Z',
+ updatedAt: '2022-08-08T12:41:54Z',
closedAt: null,
+ author: {
+ ...mockAssignees[0],
+ },
project: {
__typename: 'Project',
id: '1',
@@ -281,6 +294,9 @@ export const workItemResponseFactory = ({
withCheckboxes = false,
parent = mockParent.parent,
workItemType = taskType,
+ author = mockAssignees[0],
+ createdAt = '2022-08-03T12:41:54Z',
+ updatedAt = '2022-08-08T12:32:54Z',
} = {}) => ({
data: {
workItem: {
@@ -291,8 +307,10 @@ export const workItemResponseFactory = ({
state: 'OPEN',
description: 'description',
confidential,
- createdAt: '2022-08-03T12:41:54Z',
+ createdAt,
+ updatedAt,
closedAt: null,
+ author,
project: {
__typename: 'Project',
id: '1',
@@ -473,7 +491,11 @@ export const createWorkItemMutationResponse = {
description: 'description',
confidential: false,
createdAt: '2022-08-03T12:41:54Z',
+ updatedAt: null,
closedAt: null,
+ author: {
+ ...mockAssignees[0],
+ },
project: {
__typename: 'Project',
id: '1',
@@ -1048,11 +1070,15 @@ export const workItemObjectiveWithChild = {
deleteWorkItem: true,
updateWorkItem: true,
},
+ author: {
+ ...mockAssignees[0],
+ },
title: 'Objective',
description: 'Objective description',
state: 'OPEN',
confidential: false,
createdAt: '2022-08-03T12:41:54Z',
+ updatedAt: null,
closedAt: null,
widgets: [
{
@@ -1193,7 +1219,11 @@ export const changeWorkItemParentMutationResponse = {
title: 'Foo',
confidential: false,
createdAt: '2022-08-03T12:41:54Z',
+ updatedAt: null,
closedAt: null,
+ author: {
+ ...mockAssignees[0],
+ },
project: {
__typename: 'Project',
id: '1',
diff --git a/spec/helpers/ide_helper_spec.rb b/spec/helpers/ide_helper_spec.rb
index 29b2784412e..e2ee4f33eee 100644
--- a/spec/helpers/ide_helper_spec.rb
+++ b/spec/helpers/ide_helper_spec.rb
@@ -15,16 +15,12 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
context 'with vscode_web_ide=true and instance vars set' do
before do
stub_feature_flags(vscode_web_ide: true)
-
- self.instance_variable_set(:@branch, 'master')
- self.instance_variable_set(:@project, project)
- self.instance_variable_set(:@path, 'foo/README.md')
- self.instance_variable_set(:@merge_request, '7')
end
it 'returns hash' do
- expect(helper.ide_data)
- .to eq(
+ expect(helper.ide_data(project: project, branch: 'master', path: 'foo/README.md', merge_request: '7',
+fork_info: nil))
+ .to match(
'can-use-new-web-ide' => 'true',
'use-new-web-ide' => 'true',
'user-preferences-path' => profile_preferences_path,
@@ -35,6 +31,9 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
'csp-nonce' => 'test-csp-nonce',
'ide-remote-path' => ide_remote_path(remote_host: ':remote_host', remote_path: ':remote_path'),
'file-path' => 'foo/README.md',
+ 'editor-font-family' => 'JetBrains Mono',
+ 'editor-font-format' => 'woff2',
+ 'editor-font-src-url' => a_string_matching(%r{jetbrains-mono/JetBrainsMono}),
'merge-request' => '7',
'fork-info' => nil
)
@@ -43,7 +42,8 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
it 'does not use new web ide if user.use_legacy_web_ide' do
allow(user).to receive(:use_legacy_web_ide).and_return(true)
- expect(helper.ide_data).to include('use-new-web-ide' => 'false')
+ expect(helper.ide_data(project: project, branch: nil, path: nil, merge_request: nil,
+fork_info: nil)).to include('use-new-web-ide' => 'false')
end
end
@@ -52,9 +52,9 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
stub_feature_flags(vscode_web_ide: false)
end
- context 'when instance vars are not set' do
+ context 'when instance vars and parameters are not set' do
it 'returns instance data in the hash as nil' do
- expect(helper.ide_data)
+ expect(helper.ide_data(project: nil, branch: nil, path: nil, merge_request: nil, fork_info: nil))
.to include(
'can-use-new-web-ide' => 'false',
'use-new-web-ide' => 'false',
@@ -73,15 +73,10 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
it 'returns instance data in the hash' do
fork_info = { ide_path: '/test/ide/path' }
- self.instance_variable_set(:@branch, 'master')
- self.instance_variable_set(:@path, 'foo/bar')
- self.instance_variable_set(:@merge_request, '1')
- self.instance_variable_set(:@fork_info, fork_info)
- self.instance_variable_set(:@project, project)
-
serialized_project = API::Entities::Project.represent(project, current_user: project.creator).to_json
- expect(helper.ide_data)
+ expect(helper.ide_data(project: project, branch: 'master', path: 'foo/bar', merge_request: '1',
+fork_info: fork_info))
.to include(
'branch-name' => 'master',
'file-path' => 'foo/bar',
@@ -96,12 +91,12 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
context 'environments guidance experiment', :experiment do
before do
stub_experiments(in_product_guidance_environments_webide: :candidate)
- self.instance_variable_set(:@project, project)
end
context 'when project has no enviornments' do
it 'enables environment guidance' do
- expect(helper.ide_data).to include('enable-environments-guidance' => 'true')
+ expect(helper.ide_data(project: project, branch: nil, path: nil, merge_request: nil,
+fork_info: nil)).to include('enable-environments-guidance' => 'true')
end
context 'and the callout has been dismissed' do
@@ -109,7 +104,8 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
callout = create(:callout, feature_name: :web_ide_ci_environments_guidance, user: project.creator)
callout.update!(dismissed_at: Time.now - 1.week)
allow(helper).to receive(:current_user).and_return(User.find(project.creator.id))
- expect(helper.ide_data).to include('enable-environments-guidance' => 'false')
+ expect(helper.ide_data(project: project, branch: nil, path: nil, merge_request: nil,
+fork_info: nil)).to include('enable-environments-guidance' => 'false')
end
end
end
@@ -118,7 +114,8 @@ RSpec.describe IdeHelper, feature_category: :web_ide do
it 'disables environment guidance' do
create(:environment, project: project)
- expect(helper.ide_data).to include('enable-environments-guidance' => 'false')
+ expect(helper.ide_data(project: project, branch: nil, path: nil, merge_request: nil,
+fork_info: nil)).to include('enable-environments-guidance' => 'false')
end
end
end
diff --git a/spec/lib/backup/database_spec.rb b/spec/lib/backup/database_spec.rb
index bb7f8c63ee5..c70d47e4940 100644
--- a/spec/lib/backup/database_spec.rb
+++ b/spec/lib/backup/database_spec.rb
@@ -2,11 +2,20 @@
require 'spec_helper'
+RSpec.configure do |rspec|
+ rspec.expect_with :rspec do |c|
+ c.max_formatted_output_length = nil
+ end
+end
+
RSpec.describe Backup::Database, feature_category: :backup_restore do
let(:progress) { StringIO.new }
let(:output) { progress.string }
let(:one_db_configured?) { Gitlab::Database.database_base_models.one? }
let(:database_models_for_backup) { Gitlab::Database.database_base_models_with_gitlab_shared }
+ let(:timeout_service) do
+ instance_double(Gitlab::Database::TransactionTimeoutSettings, restore_timeouts: nil, disable_timeouts: nil)
+ end
before(:all) do
Rake::Task.define_task(:environment)
@@ -26,6 +35,7 @@ RSpec.describe Backup::Database, feature_category: :backup_restore do
before do
database_models_for_backup.each do |database_name, base_model|
base_model.connection.rollback_transaction unless base_model.connection.open_transactions.zero?
+ allow(base_model.connection).to receive(:execute).and_call_original
end
end
@@ -55,6 +65,18 @@ RSpec.describe Backup::Database, feature_category: :backup_restore do
end
end
+ it 'disables transaction time out' do
+ number_of_databases = Gitlab::Database.database_base_models_with_gitlab_shared.count
+ expect(Gitlab::Database::TransactionTimeoutSettings)
+ .to receive(:new).exactly(2 * number_of_databases).times.and_return(timeout_service)
+ expect(timeout_service).to receive(:disable_timeouts).exactly(number_of_databases).times
+ expect(timeout_service).to receive(:restore_timeouts).exactly(number_of_databases).times
+
+ Dir.mktmpdir do |dir|
+ subject.dump(dir, backup_id)
+ end
+ end
+
describe 'pg_dump arguments' do
let(:snapshot_id) { 'fake_id' }
let(:pg_args) do
@@ -104,6 +126,23 @@ RSpec.describe Backup::Database, feature_category: :backup_restore do
end
end
end
+
+ context 'when a StandardError (or descendant) is raised' do
+ before do
+ allow(FileUtils).to receive(:mkdir_p).and_raise(StandardError)
+ end
+
+ it 'restores timeouts' do
+ Dir.mktmpdir do |dir|
+ number_of_databases = Gitlab::Database.database_base_models_with_gitlab_shared.count
+ expect(Gitlab::Database::TransactionTimeoutSettings)
+ .to receive(:new).exactly(number_of_databases).times.and_return(timeout_service)
+ expect(timeout_service).to receive(:restore_timeouts).exactly(number_of_databases).times
+
+ expect { subject.dump(dir, backup_id) }.to raise_error StandardError
+ end
+ end
+ end
end
describe '#restore' do
diff --git a/spec/lib/extracts_ref_spec.rb b/spec/lib/extracts_ref_spec.rb
index ca8af9413f3..93a09bf5a0a 100644
--- a/spec/lib/extracts_ref_spec.rb
+++ b/spec/lib/extracts_ref_spec.rb
@@ -48,13 +48,11 @@ RSpec.describe ExtractsRef do
context 'when a ref_type parameter is provided' do
let(:params) { ActionController::Parameters.new(path: path, ref: ref, ref_type: 'tags') }
- context 'and the use_ref_type_parameter feature flag is enabled' do
- it 'sets a fully_qualified_ref variable' do
- fully_qualified_ref = "refs/tags/#{ref}"
- expect(container.repository).to receive(:commit).with(fully_qualified_ref)
- assign_ref_vars
- expect(@fully_qualified_ref).to eq(fully_qualified_ref)
- end
+ it 'sets a fully_qualified_ref variable' do
+ fully_qualified_ref = "refs/tags/#{ref}"
+ expect(container.repository).to receive(:commit).with(fully_qualified_ref)
+ assign_ref_vars
+ expect(@fully_qualified_ref).to eq(fully_qualified_ref)
end
end
end
diff --git a/spec/lib/gitlab/database/tables_locker_spec.rb b/spec/lib/gitlab/database/tables_locker_spec.rb
new file mode 100644
index 00000000000..f4050f15e29
--- /dev/null
+++ b/spec/lib/gitlab/database/tables_locker_spec.rb
@@ -0,0 +1,214 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Database::TablesLocker, :reestablished_active_record_base, :delete, :silence_stdout,
+ :suppress_gitlab_schemas_validate_connection, feature_category: :pods do
+ let(:main_connection) { ApplicationRecord.connection }
+ let(:ci_connection) { Ci::ApplicationRecord.connection }
+ let!(:user) { create(:user) }
+ let!(:ci_build) { create(:ci_build) }
+
+ let(:detached_partition_table) { '_test_gitlab_main_part_20220101' }
+
+ before do
+ described_class.new.unlock_writes
+ end
+
+ before(:all) do
+ create_detached_partition_sql = <<~SQL
+ CREATE TABLE IF NOT EXISTS gitlab_partitions_dynamic._test_gitlab_main_part_20220101 (
+ id bigserial primary key not null
+ )
+ SQL
+
+ ApplicationRecord.connection.execute(create_detached_partition_sql)
+ Ci::ApplicationRecord.connection.execute(create_detached_partition_sql)
+
+ Gitlab::Database::SharedModel.using_connection(ApplicationRecord.connection) do
+ Postgresql::DetachedPartition.create!(
+ table_name: '_test_gitlab_main_part_20220101',
+ drop_after: Time.current
+ )
+ end
+ end
+
+ after(:all) do
+ described_class.new.unlock_writes
+
+ drop_detached_partition_sql = <<~SQL
+ DROP TABLE IF EXISTS gitlab_partitions_dynamic._test_gitlab_main_part_20220101
+ SQL
+
+ ApplicationRecord.connection.execute(drop_detached_partition_sql)
+ Ci::ApplicationRecord.connection.execute(drop_detached_partition_sql)
+
+ Gitlab::Database::SharedModel.using_connection(ApplicationRecord.connection) do
+ Postgresql::DetachedPartition.delete_all
+ end
+ end
+
+ context 'when running on single database' do
+ before do
+ skip_if_multiple_databases_are_setup
+ end
+
+ describe '#lock_writes' do
+ subject { described_class.new.lock_writes }
+
+ it 'does not add any triggers to the main schema tables' do
+ expect { subject }.not_to change { number_of_triggers(main_connection) }
+ end
+
+ it 'will be still able to modify tables that belong to the main two schemas' do
+ subject
+
+ expect do
+ User.last.touch
+ Ci::Build.last.touch
+ end.not_to raise_error
+ end
+ end
+ end
+
+ context 'when running on multiple databases' do
+ before do
+ skip_if_multiple_databases_not_setup
+
+ Gitlab::Database::SharedModel.using_connection(ci_connection) do
+ Postgresql::DetachedPartition.create!(
+ table_name: detached_partition_table,
+ drop_after: Time.zone.now
+ )
+ end
+ end
+
+ describe '#lock_writes' do
+ subject { described_class.new.lock_writes }
+
+ it 'still allows writes on the tables with the correct connections' do
+ User.touch_all
+ Ci::Build.touch_all
+ end
+
+ it 'still allows writing to gitlab_shared schema on any connection' do
+ connections = [main_connection, ci_connection]
+ connections.each do |connection|
+ Gitlab::Database::SharedModel.using_connection(connection) do
+ LooseForeignKeys::DeletedRecord.create!(
+ fully_qualified_table_name: "public.users",
+ primary_key_value: 1,
+ cleanup_attempts: 0
+ )
+ end
+ end
+ end
+
+ it 'prevents writes on the main tables on the ci database' do
+ subject
+
+ expect do
+ ci_connection.execute("delete from users")
+ end.to raise_error(ActiveRecord::StatementInvalid, /Table: "users" is write protected/)
+ end
+
+ it 'prevents writes on the ci tables on the main database' do
+ subject
+
+ expect do
+ main_connection.execute("delete from ci_builds")
+ end.to raise_error(ActiveRecord::StatementInvalid, /Table: "ci_builds" is write protected/)
+ end
+
+ it 'prevents truncating a ci table on the main database' do
+ subject
+
+ expect do
+ main_connection.execute("truncate ci_build_needs")
+ end.to raise_error(ActiveRecord::StatementInvalid, /Table: "ci_build_needs" is write protected/)
+ end
+
+ it 'prevents writes to detached partitions' do
+ subject
+
+ expect do
+ ci_connection.execute("INSERT INTO gitlab_partitions_dynamic.#{detached_partition_table} DEFAULT VALUES")
+ end.to raise_error(ActiveRecord::StatementInvalid, /Table: "#{detached_partition_table}" is write protected/)
+ end
+
+ context 'when running in dry_run mode' do
+ subject { described_class.new(dry_run: true).lock_writes }
+
+ it 'allows writes on the main tables on the ci database' do
+ subject
+
+ expect do
+ ci_connection.execute("delete from users")
+ end.not_to raise_error
+ end
+
+ it 'allows writes on the ci tables on the main database' do
+ subject
+
+ expect do
+ main_connection.execute("delete from ci_builds")
+ end.not_to raise_error
+ end
+ end
+
+ context 'when running on multiple shared databases' do
+ before do
+ allow(::Gitlab::Database).to receive(:db_config_share_with).and_return(nil)
+ ci_db_config = Ci::ApplicationRecord.connection_db_config
+ allow(::Gitlab::Database).to receive(:db_config_share_with).with(ci_db_config).and_return('main')
+ end
+
+ it 'does not lock any tables if the ci database is shared with main database' do
+ subject { described_class.new.lock_writes }
+
+ expect do
+ ApplicationRecord.connection.execute("delete from ci_builds")
+ Ci::ApplicationRecord.connection.execute("delete from users")
+ end.not_to raise_error
+ end
+ end
+ end
+ end
+
+ context 'when geo database is configured' do
+ let(:lock_writes_manager) do
+ instance_double(Gitlab::Database::LockWritesManager, lock_writes: nil, unlock_writes: nil)
+ end
+
+ let(:geo_table) do
+ Gitlab::Database::GitlabSchema
+ .tables_to_schema.filter_map { |table_name, schema| table_name if schema == :gitlab_geo }
+ .first
+ end
+
+ subject { described_class.new.unlock_writes }
+
+ before do
+ skip "Geo database is not configured" unless Gitlab::Database.has_config?(:geo)
+
+ allow(Gitlab::Database::LockWritesManager).to receive(:new).with(any_args).and_return(lock_writes_manager)
+ end
+
+ it 'does not lock table in geo database' do
+ expect(Gitlab::Database::LockWritesManager).not_to receive(:new).with(
+ table_name: geo_table,
+ connection: anything,
+ database_name: 'geo',
+ with_retries: true,
+ logger: anything,
+ dry_run: anything
+ )
+
+ subject
+ end
+ end
+end
+
+def number_of_triggers(connection)
+ connection.select_value("SELECT count(*) FROM information_schema.triggers")
+end
diff --git a/spec/lib/gitlab/database/transaction_timeout_settings_spec.rb b/spec/lib/gitlab/database/transaction_timeout_settings_spec.rb
new file mode 100644
index 00000000000..5b68f9a3757
--- /dev/null
+++ b/spec/lib/gitlab/database/transaction_timeout_settings_spec.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Database::TransactionTimeoutSettings, feature_category: :pods do
+ let(:connection) { ActiveRecord::Base.connection }
+
+ subject { described_class.new(connection) }
+
+ after(:all) do
+ described_class.new(ActiveRecord::Base.connection).restore_timeouts
+ end
+
+ describe '#disable_timeouts' do
+ it 'sets timeouts to 0' do
+ subject.disable_timeouts
+
+ expect(current_timeout).to eq("0")
+ end
+ end
+
+ describe '#restore_timeouts' do
+ before do
+ subject.disable_timeouts
+ end
+
+ it 'resets value' do
+ expect(connection).to receive(:execute).with('RESET idle_in_transaction_session_timeout').and_call_original
+
+ subject.restore_timeouts
+ end
+ end
+
+ def current_timeout
+ connection.execute("show idle_in_transaction_session_timeout").first['idle_in_transaction_session_timeout']
+ end
+end
diff --git a/spec/lib/gitlab/redis/repository_cache_spec.rb b/spec/lib/gitlab/redis/repository_cache_spec.rb
index b11e9ebf1f3..56f77782778 100644
--- a/spec/lib/gitlab/redis/repository_cache_spec.rb
+++ b/spec/lib/gitlab/redis/repository_cache_spec.rb
@@ -14,6 +14,9 @@ RSpec.describe Gitlab::Redis::RepositoryCache, feature_category: :scalability do
before do
allow(described_class).to receive(:config_file_name).and_return(config_new_format_host)
+
+ # Override rails root to avoid having our fixtures overwritten by `redis.yml` if it exists
+ allow(Gitlab::Redis::Cache).to receive(:rails_root).and_return(mktmpdir)
allow(Gitlab::Redis::Cache).to receive(:config_file_name).and_return(config_new_format_socket)
end
diff --git a/spec/lib/gitlab/redis/sidekiq_status_spec.rb b/spec/lib/gitlab/redis/sidekiq_status_spec.rb
index e7cf229b494..bbfec13e6c8 100644
--- a/spec/lib/gitlab/redis/sidekiq_status_spec.rb
+++ b/spec/lib/gitlab/redis/sidekiq_status_spec.rb
@@ -14,10 +14,15 @@ RSpec.describe Gitlab::Redis::SidekiqStatus do
describe '#pool' do
let(:config_new_format_host) { "spec/fixtures/config/redis_new_format_host.yml" }
let(:config_new_format_socket) { "spec/fixtures/config/redis_new_format_socket.yml" }
+ let(:rails_root) { mktmpdir }
subject { described_class.pool }
before do
+ # Override rails root to avoid having our fixtures overwritten by `redis.yml` if it exists
+ allow(Gitlab::Redis::SharedState).to receive(:rails_root).and_return(rails_root)
+ allow(Gitlab::Redis::Queues).to receive(:rails_root).and_return(rails_root)
+
allow(Gitlab::Redis::SharedState).to receive(:config_file_name).and_return(config_new_format_host)
allow(Gitlab::Redis::Queues).to receive(:config_file_name).and_return(config_new_format_socket)
end
diff --git a/spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb
index cb7970cacec..f8a4603c1f8 100644
--- a/spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb
+++ b/spec/lib/gitlab/usage_data_counters/editor_unique_counter_spec.rb
@@ -65,17 +65,4 @@ RSpec.describe Gitlab::UsageDataCounters::EditorUniqueCounter, :clean_gitlab_red
end
end
end
-
- it 'can return the count of actions per user deduplicated' do
- described_class.track_web_ide_edit_action(author: user1, project: project)
- described_class.track_snippet_editor_edit_action(author: user1, project: project)
- described_class.track_sfe_edit_action(author: user1, project: project)
- described_class.track_web_ide_edit_action(author: user2, time: time - 2.days, project: project)
- described_class.track_web_ide_edit_action(author: user3, time: time - 3.days, project: project)
- described_class.track_snippet_editor_edit_action(author: user3, time: time - 3.days, project: project)
- described_class.track_sfe_edit_action(author: user3, time: time - 3.days, project: project)
-
- expect(described_class.count_edit_using_editor(date_from: time, date_to: Date.today)).to eq(1)
- expect(described_class.count_edit_using_editor(date_from: time - 5.days, date_to: Date.tomorrow)).to eq(3)
- end
end
diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb
index ffa34acef5c..5325ef5b5dd 100644
--- a/spec/lib/gitlab/usage_data_spec.rb
+++ b/spec/lib/gitlab/usage_data_spec.rb
@@ -1099,8 +1099,7 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures, feature_category: :servic
{
action_monthly_active_users_web_ide_edit: 2,
action_monthly_active_users_sfe_edit: 2,
- action_monthly_active_users_snippet_editor_edit: 2,
- action_monthly_active_users_ide_edit: 3
+ action_monthly_active_users_snippet_editor_edit: 2
}
)
end
diff --git a/spec/lib/sidebars/projects/menus/repository_menu_spec.rb b/spec/lib/sidebars/projects/menus/repository_menu_spec.rb
index e7aa2b7edca..40ca2107698 100644
--- a/spec/lib/sidebars/projects/menus/repository_menu_spec.rb
+++ b/spec/lib/sidebars/projects/menus/repository_menu_spec.rb
@@ -48,20 +48,13 @@ RSpec.describe Sidebars::Projects::Menus::RepositoryMenu, feature_category: :sou
ref_type: ref_type)
end
- where(:feature_flag_enabled, :ref_type, :link) do
- true | nil | lazy { "#{route}?ref_type=heads" }
- true | 'heads' | lazy { "#{route}?ref_type=heads" }
- true | 'tags' | lazy { "#{route}?ref_type=tags" }
- false | nil | lazy { route }
- false | 'heads' | lazy { route }
- false | 'tags' | lazy { route }
+ where(:ref_type, :link) do
+ nil | lazy { "#{route}?ref_type=heads" }
+ 'heads' | lazy { "#{route}?ref_type=heads" }
+ 'tags' | lazy { "#{route}?ref_type=tags" }
end
with_them do
- before do
- stub_feature_flags(use_ref_type_parameter: feature_flag_enabled)
- end
-
it 'has a link with the fully qualifed ref route' do
expect(subject).to eq(link)
end
diff --git a/spec/models/work_item_spec.rb b/spec/models/work_item_spec.rb
index 52155c3b936..6aacaa3c119 100644
--- a/spec/models/work_item_spec.rb
+++ b/spec/models/work_item_spec.rb
@@ -21,9 +21,8 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
.with_foreign_key('work_item_id')
end
- it 'has many `work_item_children_by_created_at`' do
- is_expected.to have_many(:work_item_children_by_created_at)
- .order(created_at: :asc)
+ it 'has many `work_item_children_by_relative_position`' do
+ is_expected.to have_many(:work_item_children_by_relative_position)
.class_name('WorkItem')
.with_foreign_key('work_item_id')
end
@@ -35,6 +34,49 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
end
end
+ describe '.work_item_children_by_relative_position' do
+ subject { parent_item.reload.work_item_children_by_relative_position }
+
+ let_it_be(:parent_item) { create(:work_item, :objective, project: reusable_project) }
+ let_it_be(:oldest_item) { create(:work_item, :objective, created_at: 5.hours.ago, project: reusable_project) }
+ let_it_be(:middle_item) { create(:work_item, :objective, project: reusable_project) }
+ let_it_be(:newest_item) { create(:work_item, :objective, created_at: 5.hours.from_now, project: reusable_project) }
+
+ let_it_be_with_reload(:link_to_oldest_item) do
+ create(:parent_link, work_item_parent: parent_item, work_item: oldest_item)
+ end
+
+ let_it_be_with_reload(:link_to_middle_item) do
+ create(:parent_link, work_item_parent: parent_item, work_item: middle_item)
+ end
+
+ let_it_be_with_reload(:link_to_newest_item) do
+ create(:parent_link, work_item_parent: parent_item, work_item: newest_item)
+ end
+
+ context 'when ordered by relative position and created_at' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:oldest_item_position, :middle_item_position, :newest_item_position, :expected_order) do
+ nil | nil | nil | lazy { [oldest_item, middle_item, newest_item] }
+ nil | nil | 1 | lazy { [newest_item, oldest_item, middle_item] }
+ nil | 1 | 2 | lazy { [middle_item, newest_item, oldest_item] }
+ 2 | 3 | 1 | lazy { [newest_item, oldest_item, middle_item] }
+ 1 | 2 | 3 | lazy { [oldest_item, middle_item, newest_item] }
+ end
+
+ with_them do
+ before do
+ link_to_oldest_item.update!(relative_position: oldest_item_position)
+ link_to_middle_item.update!(relative_position: middle_item_position)
+ link_to_newest_item.update!(relative_position: newest_item_position)
+ end
+
+ it { is_expected.to eq(expected_order) }
+ end
+ end
+ end
+
describe '#noteable_target_type_name' do
it 'returns `issue` as the target name' do
work_item = build(:work_item)
diff --git a/spec/models/work_items/widgets/hierarchy_spec.rb b/spec/models/work_items/widgets/hierarchy_spec.rb
index 43670b30645..7ff3088d9ec 100644
--- a/spec/models/work_items/widgets/hierarchy_spec.rb
+++ b/spec/models/work_items/widgets/hierarchy_spec.rb
@@ -36,14 +36,40 @@ RSpec.describe WorkItems::Widgets::Hierarchy, feature_category: :team_planning d
it { is_expected.to contain_exactly(parent_link1.work_item, parent_link2.work_item) }
- context 'with default order by created_at' do
+ context 'when ordered by relative position and created_at' do
let_it_be(:oldest_child) { create(:work_item, :task, project: project, created_at: 5.minutes.ago) }
+ let_it_be(:newest_child) { create(:work_item, :task, project: project, created_at: 5.minutes.from_now) }
let_it_be_with_reload(:link_to_oldest_child) do
create(:parent_link, work_item_parent: work_item_parent, work_item: oldest_child)
end
- it { is_expected.to eq([link_to_oldest_child, parent_link1, parent_link2].map(&:work_item)) }
+ let_it_be_with_reload(:link_to_newest_child) do
+ create(:parent_link, work_item_parent: work_item_parent, work_item: newest_child)
+ end
+
+ let(:parent_links_ordered) { [link_to_oldest_child, parent_link1, parent_link2, link_to_newest_child] }
+
+ context 'when children relative positions are nil' do
+ it 'orders by created_at' do
+ is_expected.to eq(parent_links_ordered.map(&:work_item))
+ end
+ end
+
+ context 'when children relative positions are present' do
+ let(:first_position) { 10 }
+ let(:second_position) { 20 }
+ let(:parent_links_ordered) { [link_to_oldest_child, link_to_newest_child, parent_link1, parent_link2] }
+
+ before do
+ link_to_oldest_child.update!(relative_position: first_position)
+ link_to_newest_child.update!(relative_position: second_position)
+ end
+
+ it 'orders by relative_position and by created_at' do
+ is_expected.to eq(parent_links_ordered.map(&:work_item))
+ end
+ end
end
end
end
diff --git a/spec/requests/api/graphql/work_item_spec.rb b/spec/requests/api/graphql/work_item_spec.rb
index 1f321d1dec3..0fad4f4ff3a 100644
--- a/spec/requests/api/graphql/work_item_spec.rb
+++ b/spec/requests/api/graphql/work_item_spec.rb
@@ -215,6 +215,20 @@ RSpec.describe 'Query.work_item(id)', feature_category: :team_planning do
it 'places the newest child item to the end of the children list' do
expect(hierarchy_children.last['id']).to eq(newest_child.to_gid.to_s)
end
+
+ context 'when relative position is set' do
+ let_it_be(:first_child) { create(:work_item, :task, project: project, created_at: 5.minutes.from_now) }
+
+ let_it_be(:first_link) do
+ create(:parent_link, work_item_parent: work_item, work_item: first_child, relative_position: 1)
+ end
+
+ it 'places children according to relative_position at the beginning of the children list' do
+ ordered_list = [first_child, oldest_child, child_item1, child_item2, newest_child]
+
+ expect(hierarchy_children.pluck('id')).to eq(ordered_list.map(&:to_gid).map(&:to_s))
+ end
+ end
end
end
diff --git a/spec/requests/projects/network_controller_spec.rb b/spec/requests/projects/network_controller_spec.rb
index 954f9655558..dee95c6e70e 100644
--- a/spec/requests/projects/network_controller_spec.rb
+++ b/spec/requests/projects/network_controller_spec.rb
@@ -35,17 +35,6 @@ RSpec.describe Projects::NetworkController, feature_category: :source_code_manag
subject
expect(assigns(:url)).to eq(project_network_path(project, ref, format: :json, ref_type: 'heads'))
end
-
- context 'when the use_ref_type_parameter flag is disabled' do
- before do
- stub_feature_flags(use_ref_type_parameter: false)
- end
-
- it 'assigns url without ref_type' do
- subject
- expect(assigns(:url)).to eq(project_network_path(project, ref, format: :json))
- end
- end
end
it 'assigns url' do
diff --git a/spec/support/redis/redis_new_instance_shared_examples.rb b/spec/support/redis/redis_new_instance_shared_examples.rb
index 0f2de78b2cb..435d342fcca 100644
--- a/spec/support/redis/redis_new_instance_shared_examples.rb
+++ b/spec/support/redis/redis_new_instance_shared_examples.rb
@@ -27,38 +27,34 @@ RSpec.shared_examples "redis_new_instance_shared_examples" do |name, fallback_cl
FileUtils.mkdir_p(File.join(rails_root, 'config'))
end
- context 'when there is only a resque.yml' do
+ context 'and there is a global env override' do
before do
- FileUtils.touch(File.join(rails_root, 'config/resque.yml'))
+ stub_env('GITLAB_REDIS_CONFIG_FILE', 'global override')
end
- it { expect(subject).to eq("#{rails_root}/config/resque.yml") }
+ it { expect(subject).to eq('global override') }
- context 'and there is a global env override' do
- before do
- stub_env('GITLAB_REDIS_CONFIG_FILE', 'global override')
- end
-
- it { expect(subject).to eq('global override') }
+ context "and #{fallback_class.name.demodulize} has a different config file" do
+ let(:fallback_config_file) { 'fallback config file' }
- context "and #{fallback_class.name.demodulize} has a different config file" do
- let(:fallback_config_file) { 'fallback config file' }
-
- it { expect(subject).to eq('fallback config file') }
- end
+ it { expect(subject).to eq('fallback config file') }
end
end
end
describe '#fetch_config' do
- context 'when redis.yml exists' do
- subject { described_class.new('test').send(:fetch_config) }
+ subject { described_class.new('test').send(:fetch_config) }
+
+ before do
+ FileUtils.mkdir_p(File.join(rails_root, 'config'))
+
+ allow(described_class).to receive(:rails_root).and_return(rails_root)
+ end
+ context 'when redis.yml exists' do
before do
allow(described_class).to receive(:config_file_name).and_call_original
allow(described_class).to receive(:redis_yml_path).and_call_original
- allow(described_class).to receive(:rails_root).and_return(rails_root)
- FileUtils.mkdir_p(File.join(rails_root, 'config'))
end
context 'when the fallback has a redis.yml entry' do
@@ -93,5 +89,23 @@ RSpec.shared_examples "redis_new_instance_shared_examples" do |name, fallback_cl
end
end
end
+
+ context 'when no redis config file exsits' do
+ it 'returns nil' do
+ expect(subject).to eq(nil)
+ end
+
+ context 'when resque.yml exists' do
+ before do
+ File.write(File.join(rails_root, 'config/resque.yml'), {
+ 'test' => { 'foobar' => 123 }
+ }.to_json)
+ end
+
+ it 'returns the config from resque.yml' do
+ expect(subject).to eq({ 'foobar' => 123 })
+ end
+ end
+ end
end
end
diff --git a/spec/support/redis/redis_shared_examples.rb b/spec/support/redis/redis_shared_examples.rb
index 43c118a362d..6e20f6028be 100644
--- a/spec/support/redis/redis_shared_examples.rb
+++ b/spec/support/redis/redis_shared_examples.rb
@@ -40,42 +40,30 @@ RSpec.shared_examples "redis_shared_examples" do
context 'when there is no config file anywhere' do
it { expect(subject).to be_nil }
- context 'but resque.yml exists' do
+ context 'and there is a global env override' do
before do
- FileUtils.touch(File.join(rails_root, 'config', 'resque.yml'))
+ stub_env('GITLAB_REDIS_CONFIG_FILE', 'global override')
end
- it { expect(subject).to eq("#{rails_root}/config/resque.yml") }
-
- it 'returns a path that exists' do
- expect(File.file?(subject)).to eq(true)
- end
+ it { expect(subject).to eq('global override') }
- context 'and there is a global env override' do
+ context 'and there is an instance specific config file' do
before do
- stub_env('GITLAB_REDIS_CONFIG_FILE', 'global override')
+ FileUtils.touch(File.join(rails_root, instance_specific_config_file))
end
- it { expect(subject).to eq('global override') }
-
- context 'and there is an instance specific config file' do
- before do
- FileUtils.touch(File.join(rails_root, instance_specific_config_file))
- end
+ it { expect(subject).to eq("#{rails_root}/#{instance_specific_config_file}") }
- it { expect(subject).to eq("#{rails_root}/#{instance_specific_config_file}") }
+ it 'returns a path that exists' do
+ expect(File.file?(subject)).to eq(true)
+ end
- it 'returns a path that exists' do
- expect(File.file?(subject)).to eq(true)
+ context 'and there is a specific env override' do
+ before do
+ stub_env(environment_config_file_name, 'instance specific override')
end
- context 'and there is a specific env override' do
- before do
- stub_env(environment_config_file_name, 'instance specific override')
- end
-
- it { expect(subject).to eq('instance specific override') }
- end
+ it { expect(subject).to eq('instance specific override') }
end
end
end
@@ -402,6 +390,12 @@ RSpec.shared_examples "redis_shared_examples" do
end
describe '#fetch_config' do
+ before do
+ FileUtils.mkdir_p(File.join(rails_root, 'config'))
+
+ allow(described_class).to receive(:rails_root).and_return(rails_root)
+ end
+
it 'raises an exception when the config file contains invalid yaml' do
Tempfile.open('bad.yml') do |file|
file.write('{"not":"yaml"')
@@ -424,8 +418,6 @@ RSpec.shared_examples "redis_shared_examples" do
before do
allow(described_class).to receive(:config_file_name).and_call_original
allow(described_class).to receive(:redis_yml_path).and_call_original
- allow(described_class).to receive(:rails_root).and_return(rails_root)
- FileUtils.mkdir_p(File.join(rails_root, 'config'))
end
it 'uses config/redis.yml' do
@@ -436,6 +428,27 @@ RSpec.shared_examples "redis_shared_examples" do
expect(subject).to eq({ 'foobar' => 123 })
end
end
+
+ context 'when no config file exsits' do
+ subject { described_class.new('test').send(:fetch_config) }
+
+ it 'returns nil' do
+ expect(subject).to eq(nil)
+ end
+
+ context 'but resque.yml exists' do
+ before do
+ FileUtils.mkdir_p(File.join(rails_root, 'config'))
+ File.write(File.join(rails_root, 'config/resque.yml'), {
+ 'test' => { 'foobar' => 123 }
+ }.to_json)
+ end
+
+ it 'returns the config from resque.yml' do
+ expect(subject).to eq({ 'foobar' => 123 })
+ end
+ end
+ end
end
def clear_pool
diff --git a/spec/tasks/gitlab/db/lock_writes_rake_spec.rb b/spec/tasks/gitlab/db/lock_writes_rake_spec.rb
index a0a99b65767..24a2c0a48f7 100644
--- a/spec/tasks/gitlab/db/lock_writes_rake_spec.rb
+++ b/spec/tasks/gitlab/db/lock_writes_rake_spec.rb
@@ -2,8 +2,7 @@
require 'rake_helper'
-RSpec.describe 'gitlab:db:lock_writes', :silence_stdout, :reestablished_active_record_base, :delete,
- :suppress_gitlab_schemas_validate_connection, feature_category: :pods do
+RSpec.describe 'gitlab:db:lock_writes', :reestablished_active_record_base, feature_category: :pods do
before :all do
Rake.application.rake_require 'active_record/railties/databases'
Rake.application.rake_require 'tasks/seed_fu'
@@ -14,193 +13,77 @@ RSpec.describe 'gitlab:db:lock_writes', :silence_stdout, :reestablished_active_r
Rake::Task.define_task :environment
end
- let(:main_connection) { ApplicationRecord.connection }
- let(:ci_connection) { Ci::ApplicationRecord.connection }
- let!(:user) { create(:user) }
- let!(:ci_build) { create(:ci_build) }
-
- let(:detached_partition_table) { '_test_gitlab_main_part_20220101' }
+ let(:table_locker) { instance_double(Gitlab::Database::TablesLocker) }
+ let(:logger) { instance_double(Logger) }
before do
- create_detached_partition_sql = <<~SQL
- CREATE TABLE IF NOT EXISTS gitlab_partitions_dynamic._test_gitlab_main_part_20220101 (
- id bigserial primary key not null
- )
- SQL
-
- main_connection.execute(create_detached_partition_sql)
- ci_connection.execute(create_detached_partition_sql)
-
- Gitlab::Database::SharedModel.using_connection(main_connection) do
- Postgresql::DetachedPartition.create!(
- table_name: detached_partition_table,
- drop_after: Time.current
- )
- end
+ allow(Logger).to receive(:new).with($stdout).and_return(logger)
+ allow(Gitlab::Database::TablesLocker).to receive(:new).with(
+ logger: logger, dry_run: dry_run
+ ).and_return(table_locker)
end
- after do
- run_rake_task('gitlab:db:unlock_writes')
- end
-
- after(:all) do
- drop_detached_partition_sql = <<~SQL
- DROP TABLE IF EXISTS gitlab_partitions_dynamic._test_gitlab_main_part_20220101
- SQL
-
- ApplicationRecord.connection.execute(drop_detached_partition_sql)
- Ci::ApplicationRecord.connection.execute(drop_detached_partition_sql)
+ shared_examples "call table locker" do |method|
+ it "creates TablesLocker with dry run set and calls #{method}" do
+ expect(table_locker).to receive(method)
- Gitlab::Database::SharedModel.using_connection(ApplicationRecord.connection) do
- Postgresql::DetachedPartition.delete_all
+ run_rake_task("gitlab:db:#{method}")
end
end
- context 'single database' do
- before do
- skip_if_multiple_databases_are_setup
- end
-
- context 'when locking writes' do
- it 'does not add any triggers to the main schema tables' do
- expect do
- run_rake_task('gitlab:db:lock_writes')
- end.to change {
- number_of_triggers(main_connection)
- }.by(0)
- end
+ describe 'lock_writes' do
+ context 'when environment sets DRY_RUN to true' do
+ let(:dry_run) { true }
- it 'will be still able to modify tables that belong to the main two schemas' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- User.last.touch
- Ci::Build.last.touch
- end.not_to raise_error
+ before do
+ stub_env('DRY_RUN', 'true')
end
- end
- end
-
- context 'multiple databases' do
- before do
- skip_if_multiple_databases_not_setup
- Gitlab::Database::SharedModel.using_connection(ci_connection) do
- Postgresql::DetachedPartition.create!(
- table_name: detached_partition_table,
- drop_after: Time.current
- )
- end
+ include_examples "call table locker", :lock_writes
end
- context 'when locking writes' do
- it 'still allows writes on the tables with the correct connections' do
- User.update_all(updated_at: Time.now)
- Ci::Build.update_all(updated_at: Time.now)
- end
+ context 'when environment sets DRY_RUN to false' do
+ let(:dry_run) { false }
- it 'still allows writing to gitlab_shared schema on any connection' do
- connections = [main_connection, ci_connection]
- connections.each do |connection|
- Gitlab::Database::SharedModel.using_connection(connection) do
- LooseForeignKeys::DeletedRecord.create!(
- fully_qualified_table_name: "public.users",
- primary_key_value: 1,
- cleanup_attempts: 0
- )
- end
- end
+ before do
+ stub_env('DRY_RUN', 'false')
end
- it 'prevents writes on the main tables on the ci database' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- ci_connection.execute("delete from users")
- end.to raise_error(ActiveRecord::StatementInvalid, /Table: "users" is write protected/)
- end
+ include_examples "call table locker", :lock_writes
+ end
- it 'prevents writes on the ci tables on the main database' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- main_connection.execute("delete from ci_builds")
- end.to raise_error(ActiveRecord::StatementInvalid, /Table: "ci_builds" is write protected/)
- end
+ context 'when environment does not define DRY_RUN' do
+ let(:dry_run) { false }
- it 'prevents truncating a ci table on the main database' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- main_connection.execute("truncate ci_build_needs")
- end.to raise_error(ActiveRecord::StatementInvalid, /Table: "ci_build_needs" is write protected/)
- end
-
- it 'prevents writes to detached partitions' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- ci_connection.execute("INSERT INTO gitlab_partitions_dynamic.#{detached_partition_table} DEFAULT VALUES")
- end.to raise_error(ActiveRecord::StatementInvalid, /Table: "#{detached_partition_table}" is write protected/)
- end
+ include_examples "call table locker", :lock_writes
end
+ end
+
+ describe 'unlock_writes' do
+ context 'when environment sets DRY_RUN to true' do
+ let(:dry_run) { true }
- context 'when running in dry_run mode' do
before do
stub_env('DRY_RUN', 'true')
end
- it 'allows writes on the main tables on the ci database' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- ci_connection.execute("delete from users")
- end.not_to raise_error
- end
-
- it 'allows writes on the ci tables on the main database' do
- run_rake_task('gitlab:db:lock_writes')
- expect do
- main_connection.execute("delete from ci_builds")
- end.not_to raise_error
- end
+ include_examples "call table locker", :unlock_writes
end
- context 'multiple shared databases' do
- before do
- allow(::Gitlab::Database).to receive(:db_config_share_with).and_return(nil)
- ci_db_config = Ci::ApplicationRecord.connection_db_config
- allow(::Gitlab::Database).to receive(:db_config_share_with).with(ci_db_config).and_return('main')
- end
-
- it 'does not lock any tables if the ci database is shared with main database' do
- run_rake_task('gitlab:db:lock_writes')
+ context 'when environment sets DRY_RUN to false' do
+ let(:dry_run) { false }
- expect do
- ApplicationRecord.connection.execute("delete from ci_builds")
- Ci::ApplicationRecord.connection.execute("delete from users")
- end.not_to raise_error
- end
- end
-
- context 'when unlocking writes' do
before do
- run_rake_task('gitlab:db:lock_writes')
+ stub_env('DRY_RUN', 'false')
end
- it 'allows writes again on the gitlab_ci tables on the main database' do
- run_rake_task('gitlab:db:unlock_writes')
-
- expect do
- main_connection.execute("delete from ci_builds")
- end.not_to raise_error
- end
+ include_examples "call table locker", :unlock_writes
+ end
- it 'allows writes again to detached partitions' do
- run_rake_task('gitlab:db:unlock_writes')
+ context 'when environment does not define DRY_RUN' do
+ let(:dry_run) { false }
- expect do
- ci_connection.execute("INSERT INTO gitlab_partitions_dynamic._test_gitlab_main_part_20220101 DEFAULT VALUES")
- end.not_to raise_error
- end
+ include_examples "call table locker", :unlock_writes
end
end
-
- def number_of_triggers(connection)
- connection.select_value("SELECT count(*) FROM information_schema.triggers")
- end
end
diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
index 82584155de5..cddff276317 100644
--- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
+++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
@@ -83,24 +83,10 @@ RSpec.describe 'layouts/nav/sidebar/_project', feature_category: :navigation do
end
describe 'Commits' do
- context 'when the use_ref_type_parameter flag is not enabled' do
- before do
- stub_feature_flags(use_ref_type_parameter: false)
- end
-
- it 'has a link to the project commits path' do
- render
-
- expect(rendered).to have_link('Commits', href: project_commits_path(project, current_ref), id: 'js-onboarding-commits-link')
- end
- end
-
- context 'when the use_ref_type_parameter flag is enabled' do
- it 'has a link to the fully qualified project commits path' do
- render
+ it 'has a link to the fully qualified project commits path' do
+ render
- expect(rendered).to have_link('Commits', href: project_commits_path(project, current_ref, ref_type: 'heads'), id: 'js-onboarding-commits-link')
- end
+ expect(rendered).to have_link('Commits', href: project_commits_path(project, current_ref, ref_type: 'heads'), id: 'js-onboarding-commits-link')
end
end
@@ -121,24 +107,10 @@ RSpec.describe 'layouts/nav/sidebar/_project', feature_category: :navigation do
end
describe 'Contributors' do
- context 'and the use_ref_type_parameter flag is disabled' do
- before do
- stub_feature_flags(use_ref_type_parameter: false)
- end
-
- it 'has a link to the project contributors path' do
- render
-
- expect(rendered).to have_link('Contributors', href: project_graph_path(project, current_ref))
- end
- end
-
- context 'and the use_ref_type_parameter flag is enabled' do
- it 'has a link to the project contributors path' do
- render
+ it 'has a link to the project contributors path' do
+ render
- expect(rendered).to have_link('Contributors', href: project_graph_path(project, current_ref, ref_type: 'heads'))
- end
+ expect(rendered).to have_link('Contributors', href: project_graph_path(project, current_ref, ref_type: 'heads'))
end
end