From 13e210a5d6f9d3577752ebfb9e3790adf4740be1 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 22 May 2024 15:18:20 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop_todo/gitlab/bounded_contexts.yml | 4 + .../style/inline_disable_annotation.yml | 1 - .../admin/abuse_reports/components/app.vue | 9 +- .../boards/components/boards_selector.vue | 4 +- .../javascripts/diffs/components/app.vue | 52 +- .../diffs/components/diffs_file_tree.vue | 26 +- app/assets/javascripts/diffs/store/actions.js | 5 - app/assets/javascripts/merge_request_tabs.js | 4 +- .../javascripts/network/branch_graph.js | 3 +- .../components/date_range_filter.vue | 13 +- .../components/list_page/image_list.vue | 4 +- .../components/manifests_list.vue | 4 +- .../details/components/app.vue | 24 +- .../list/components/packages_list.vue | 4 +- .../shared/components/registry_list.vue | 4 +- .../branch_rules/components/view/constants.js | 2 + .../branch_rules/components/view/index.vue | 55 +- .../components/view/protection.vue | 2 +- .../components/view/rule_drawer.vue | 117 + .../edit_branch_rule.mutation.graphql | 19 +- .../components/states/commit_edit.vue | 13 +- .../components/states/ready_to_merge.vue | 4 +- .../components/list_selector/index.vue | 18 +- .../metric_image_details_modal.vue | 181 ++ .../metric_images/metric_images_tab.vue | 100 +- .../metric_images/metric_images_table.vue | 99 +- .../components/registry/list_item.vue | 4 +- .../projects/mirrors_controller.rb | 2 +- app/models/bulk_import.rb | 21 +- app/models/bulk_imports/batch_tracker.rb | 5 + app/models/bulk_imports/entity.rb | 17 + app/models/bulk_imports/tracker.rb | 17 + app/models/ci/partition.rb | 19 + app/models/packages/debian/file_metadatum.rb | 4 +- .../packages/debian/group_distribution.rb | 5 +- app/models/packages/debian/package.rb | 67 + .../packages/debian/project_distribution.rb | 2 +- app/models/packages/debian/publication.rb | 14 +- app/models/packages/package.rb | 49 +- app/services/ci/partitions/create_service.rb | 3 +- app/services/ci/partitions/sync_service.rb | 41 + .../extract_changes_metadata_service.rb | 2 +- .../debian/process_package_file_service.rb | 13 +- app/services/users/activity_service.rb | 7 + .../bulk_imports/pipeline_batch_worker.rb | 7 + app/workers/bulk_imports/pipeline_worker.rb | 8 + app/workers/ci/partitioning_worker.rb | 6 + .../use_remote_mirror_create_service.yml | 9 - db/docs/elastic_index_settings.yml | 5 +- db/docs/events.yml | 3 +- db/docs/packages_packages.yml | 1 + db/docs/push_event_payloads.yml | 1 + ..._unique_index_on_status_to_ci_partition.rb | 18 + db/schema_migrations/20240506125412 | 1 + db/structure.sql | 2 + doc/api/bulk_imports.md | 34 + doc/api/projects.md | 21 +- .../cells/impacted_features/group-transfer.md | 4 + .../blueprints/custom_models/index.md | 28 +- doc/user/analytics/value_streams_dashboard.md | 2 +- doc/user/asciidoc.md | 1 + .../get_started/get_started_managing_code.md | 1 + doc/user/group/custom_project_templates.md | 1 + doc/user/group/ssh_certificates.md | 1 + doc/user/project/changelogs.md | 1 + doc/user/project/git_attributes.md | 1 + doc/user/project/highlighting.md | 1 + .../project/integrations/beyond_identity.md | 1 + doc/user/project/integrations/git_guardian.md | 1 + doc/user/project/protected_tags.md | 1 + doc/user/project/repository/csv.md | 1 + doc/user/project/repository/geojson.md | 1 + .../repository/jupyter_notebooks/index.md | 1 + .../repository/mirror/troubleshooting.md | 1 + .../project/repository/signed_commits/gpg.md | 1 + .../repository/signed_commits/index.md | 1 + .../project/repository/signed_commits/ssh.md | 1 + .../project/repository/signed_commits/x509.md | 1 + doc/user/project/system_notes.md | 1 + doc/user/tasks.md | 6 +- lib/api/bulk_imports.rb | 25 + lib/api/entities/project_statistics.rb | 1 + lib/api/remote_mirrors.rb | 30 +- lib/gitlab/allowable.rb | 6 + .../templates/Jobs/SAST.latest.gitlab-ci.yml | 2 - lib/gitlab/usage/metric_definition.rb | 23 +- lib/gitlab/view/presenter/delegated.rb | 1 + lib/tasks/gitlab/seed/group_seed.rake | 5 +- locale/gitlab.pot | 15 +- ...cking_finished_on_deprecated_migrations.rb | 5 +- .../projects/mirrors_controller_spec.rb | 61 - spec/factories/bulk_import/batch_trackers.rb | 4 + spec/factories/bulk_import/trackers.rb | 4 + spec/factories/packages/debian/packages.rb | 86 + spec/factories/packages/packages.rb | 74 - spec/factories/users.rb | 4 - spec/frontend/diffs/components/app_spec.js | 32 +- .../diffs/components/diffs_file_tree_spec.js | 28 +- spec/frontend/merge_request_tabs_spec.js | 17 +- .../observability/date_range_filter_spec.js | 67 +- .../package_list_row_spec.js.snap | 4 +- .../components/details/package_files_spec.js | 25 +- .../package_list_row_spec.js.snap | 4 +- .../components/view/index_spec.js | 56 +- .../branch_rules/components/view/mock_data.js | 40 +- .../components/view/protection_spec.js | 2 +- .../components/view/rule_drawer_spec.js | 60 + .../components/states/commit_edit_spec.js | 3 +- .../components/list_selector/index_spec.js | 11 +- .../metric_images_table_spec.js.snap | 41 +- .../metric_image_details_modal_spec.js | 321 +++ .../metric_images/metric_images_tab_spec.js | 106 +- .../metric_images/metric_images_table_spec.js | 70 +- spec/helpers/storage_helper_spec.rb | 3 +- spec/lib/gitlab/allowable_spec.rb | 17 + spec/models/bulk_import_spec.rb | 28 +- .../models/bulk_imports/batch_tracker_spec.rb | 10 + spec/models/bulk_imports/entity_spec.rb | 27 +- spec/models/bulk_imports/tracker_spec.rb | 20 + spec/models/ci/partition_spec.rb | 44 +- spec/models/packages/debian/package_spec.rb | 169 ++ .../packages/debian/publication_spec.rb | 29 +- spec/models/packages/package_spec.rb | 147 -- spec/requests/api/bulk_imports_spec.rb | 32 + spec/requests/api/ci/runners_spec.rb | 1917 +++++++++++------ .../api/debian_group_packages_spec.rb | 2 +- .../api/debian_project_packages_spec.rb | 2 +- .../sentry_detailed_error_request_spec.rb | 6 +- spec/requests/api/projects_spec.rb | 2 +- spec/requests/api/remote_mirrors_spec.rb | 37 - spec/requests/api/usage_data_spec.rb | 2 +- spec/requests/api/users_spec.rb | 4 - .../merge_requests_controller_spec.rb | 8 +- spec/requests/projects/merge_requests_spec.rb | 6 +- ..._finished_on_deprecated_migrations_spec.rb | 6 +- .../ci/partitions/create_service_spec.rb | 6 +- .../ci/partitions/sync_service_spec.rb | 85 + .../find_or_create_incoming_service_spec.rb | 2 +- .../process_package_file_service_spec.rb | 18 +- spec/services/users/activity_service_spec.rb | 24 + ...every_metric_definition_shared_examples.rb | 2 +- .../debian/distribution_shared_examples.rb | 2 +- .../pipeline_batch_worker_spec.rb | 26 + .../bulk_imports/pipeline_worker_spec.rb | 42 + spec/workers/ci/partitioning_worker_spec.rb | 43 +- .../process_package_file_worker_spec.rb | 4 +- 146 files changed, 3457 insertions(+), 1786 deletions(-) create mode 100644 app/assets/javascripts/projects/settings/branch_rules/components/view/rule_drawer.vue create mode 100644 app/assets/javascripts/vue_shared/components/metric_images/metric_image_details_modal.vue create mode 100644 app/models/packages/debian/package.rb create mode 100644 app/services/ci/partitions/sync_service.rb delete mode 100644 config/feature_flags/gitlab_com_derisk/use_remote_mirror_create_service.yml create mode 100644 db/migrate/20240506125412_add_unique_index_on_status_to_ci_partition.rb create mode 100644 db/schema_migrations/20240506125412 create mode 100644 spec/factories/packages/debian/packages.rb create mode 100644 spec/frontend/projects/settings/branch_rules/components/view/rule_drawer_spec.js create mode 100644 spec/frontend/vue_shared/components/metric_images/metric_image_details_modal_spec.js create mode 100644 spec/models/packages/debian/package_spec.rb create mode 100644 spec/services/ci/partitions/sync_service_spec.rb diff --git a/.rubocop_todo/gitlab/bounded_contexts.yml b/.rubocop_todo/gitlab/bounded_contexts.yml index d3542440a9e..97e717828c1 100644 --- a/.rubocop_todo/gitlab/bounded_contexts.yml +++ b/.rubocop_todo/gitlab/bounded_contexts.yml @@ -978,14 +978,18 @@ Gitlab/BoundedContexts: - 'app/models/board_project_recent_visit.rb' - 'app/models/bulk_import.rb' - 'app/models/bulk_imports/batch_tracker.rb' + - 'app/models/bulk_imports/configuration.rb' + - 'app/models/bulk_imports/entity.rb' - 'app/models/bulk_imports/export.rb' - 'app/models/bulk_imports/export_batch.rb' - 'app/models/bulk_imports/export_status.rb' - 'app/models/bulk_imports/export_upload.rb' + - 'app/models/bulk_imports/failure.rb' - 'app/models/bulk_imports/file_transfer.rb' - 'app/models/bulk_imports/file_transfer/base_config.rb' - 'app/models/bulk_imports/file_transfer/group_config.rb' - 'app/models/bulk_imports/file_transfer/project_config.rb' + - 'app/models/bulk_imports/tracker.rb' - 'app/models/chat_name.rb' - 'app/models/chat_team.rb' - 'app/models/ci_platform_metric.rb' diff --git a/.rubocop_todo/style/inline_disable_annotation.yml b/.rubocop_todo/style/inline_disable_annotation.yml index d76cd4adc5e..34515b80b88 100644 --- a/.rubocop_todo/style/inline_disable_annotation.yml +++ b/.rubocop_todo/style/inline_disable_annotation.yml @@ -1861,7 +1861,6 @@ Style/InlineDisableAnnotation: - 'ee/spec/controllers/concerns/gitlab_subscriptions/seat_count_alert_spec.rb' - 'ee/spec/controllers/concerns/routable_actions_spec.rb' - 'ee/spec/controllers/projects/settings/merge_requests_controller_spec.rb' - - 'ee/spec/elastic/migrate/20230503064300_backfill_project_permissions_in_blobs_using_permutations_spec.rb' - 'ee/spec/factories/package_metadata/pm_licenses.rb' - 'ee/spec/factories/security_scans.rb' - 'ee/spec/features/dashboards/todos_spec.rb' diff --git a/app/assets/javascripts/admin/abuse_reports/components/app.vue b/app/assets/javascripts/admin/abuse_reports/components/app.vue index e1e75a4f8d0..521634f7209 100644 --- a/app/assets/javascripts/admin/abuse_reports/components/app.vue +++ b/app/assets/javascripts/admin/abuse_reports/components/app.vue @@ -39,12 +39,9 @@ export default { - +
    + +
this.jumpToFile(-1)); Mousetrap.bind(keysFor(MR_NEXT_FILE_IN_DIFF), () => this.jumpToFile(+1)); @@ -619,32 +629,36 @@ export default { ); } - let keydownTime; Mousetrap.bind(['mod+f', 'mod+g'], () => { - keydownTime = new Date().getTime(); + this.keydownTime = new Date().getTime(); }); - window.addEventListener('blur', () => { - if (keydownTime) { - const delta = new Date().getTime() - keydownTime; + window.addEventListener('blur', this.handleBrowserFindActivation); - // To make sure the user is using the find function we need to wait for blur - // and max 1000ms to be sure it the search box is filtered - if (delta >= 0 && delta < 1000) { - this.disableVirtualScroller(); - - api.trackRedisHllUserEvent('i_code_review_user_searches_diff'); - api.trackRedisCounterEvent('diff_searches'); - } - } - }); + this.listenersAttached = true; }, removeEventListeners() { Mousetrap.unbind(keysFor(MR_PREVIOUS_FILE_IN_DIFF)); Mousetrap.unbind(keysFor(MR_NEXT_FILE_IN_DIFF)); Mousetrap.unbind(keysFor(MR_COMMITS_NEXT_COMMIT)); Mousetrap.unbind(keysFor(MR_COMMITS_PREVIOUS_COMMIT)); - Mousetrap.unbind(['ctrl+f', 'command+f']); + Mousetrap.unbind(['ctrl+f', 'command+f', 'mod+f', 'mod+g']); + window.removeEventListener('blur', this.handleBrowserFindActivation); + this.listenersAttached = false; + }, + handleBrowserFindActivation() { + if (!this.keydownTime) return; + + const delta = new Date().getTime() - this.keydownTime; + + // To make sure the user is using the find function we need to wait for blur + // and max 1000ms to be sure it the search box is filtered + if (delta >= 0 && delta < 1000) { + this.disableVirtualScroller(); + + api.trackRedisHllUserEvent('i_code_review_user_searches_diff'); + api.trackRedisCounterEvent('diff_searches'); + } }, jumpToFile(step) { const targetIndex = this.currentDiffIndex + step; @@ -709,6 +723,10 @@ export default { this.trackEvent(types[event.name]); } }, + fileTreeToggled() { + this.toggleTreeList(); + this.adjustView(); + }, }, howToMergeDocsPath: helpPagePath('user/project/merge_requests/merge_request_troubleshooting.md', { anchor: 'check-out-merge-requests-locally-through-the-head-ref', @@ -738,7 +756,7 @@ export default { :data-can-create-note="getNoteableData.current_user.can_create_note" class="files d-flex gl-mt-2" > - +
-// eslint-disable-next-line no-restricted-imports -import { mapActions, mapState } from 'vuex'; import { Mousetrap } from '~/lib/mousetrap'; import { keysFor, MR_TOGGLE_FILE_BROWSER } from '~/behaviors/shortcuts/keybindings'; import PanelResizer from '~/vue_shared/components/panel_resizer.vue'; @@ -18,7 +16,7 @@ export default { minTreeWidth: MIN_TREE_WIDTH, maxTreeWidth: window.innerWidth / 2, props: { - renderDiffFiles: { + visible: { type: Boolean, required: true, }, @@ -32,33 +30,29 @@ export default { }; }, computed: { - ...mapState('diffs', ['showTreeList']), - renderFileTree() { - return this.renderDiffFiles && this.showTreeList; - }, hideFileStats() { return this.treeWidth <= TREE_HIDE_STATS_WIDTH; }, }, - watch: { - renderFileTree() { - this.$emit('toggled'); - }, - }, mounted() { - Mousetrap.bind(keysFor(MR_TOGGLE_FILE_BROWSER), this.toggleTreeList); + Mousetrap.bind(keysFor(MR_TOGGLE_FILE_BROWSER), this.toggle); }, beforeDestroy() { - Mousetrap.unbind(keysFor(MR_TOGGLE_FILE_BROWSER), this.toggleTreeList); + Mousetrap.unbind(keysFor(MR_TOGGLE_FILE_BROWSER), this.toggle); }, methods: { - ...mapActions('diffs', ['cacheTreeListWidth', 'toggleTreeList']), + toggle() { + this.$emit('toggled'); + }, + cacheTreeListWidth(size) { + localStorage.setItem(TREE_LIST_WIDTH_STORAGE_KEY, size); + }, }, };