From eb7e5e27afe5a6d06693409ae69df342278c4331 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 4 Jun 2025 15:12:20 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/qa-common/variables.gitlab-ci.yml | 2 +- .rubocop_todo/layout/line_length.yml | 2 - .../behaviors/shortcuts/keybindings.js | 11 +- .../behaviors/shortcuts/shortcuts_blob.js | 14 - .../blob/blob_line_permalink_updater.js | 45 -- .../blob/components/blob_header.vue | 87 +--- .../blob_header_default_actions.vue | 7 +- .../blob_header_viewer_switcher.vue | 15 +- .../blob/queries/user_info.query.graphql | 8 - .../components/assigned_users.vue | 9 +- .../pages/dashboard/merge_requests/index.js | 12 +- .../dashboard/merge_requests_v2/index.js | 16 + .../javascripts/pages/projects/init_blob.js | 10 - .../components/blob_button_group.vue | 155 ------- .../components/blob_content_viewer.vue | 28 -- .../repository/components/fork_suggestion.vue | 46 -- .../components/header_area/blob_controls.vue | 54 +-- .../header_area/blob_overflow_menu.vue | 14 +- .../header_area/permalink_dropdown_item.vue | 8 +- .../queries/application_info.query.graphql | 0 .../snippets/components/snippet_header.vue | 2 +- .../work_item_children_wrapper.vue | 3 +- .../work_item_links/work_item_link_child.vue | 4 +- app/controllers/projects/blob_controller.rb | 1 - app/controllers/projects/tree_controller.rb | 1 - app/controllers/projects_controller.rb | 1 - .../work_items/data_sync/move_service.rb | 4 +- app/views/dashboard/merge_requests.html.haml | 1 + .../feature_flags/beta/blob_overflow_menu.yml | 9 - ...holder_users_details_from_source_users.yml | 8 + ...eholder_users_details_from_source_users.rb | 26 ++ ...ustomer_relation_contacts_for_epic_type.rb | 31 ++ db/schema_migrations/20250526065102 | 1 + db/schema_migrations/20250530124922 | 1 + .../auth/ldap/ldap_synchronization.md | 5 + doc/api/users.md | 31 +- .../documentation/styleguide/_index.md | 8 +- doc/user/custom_roles/_index.md | 51 +++ doc/user/gitlab_duo_chat/agentic_chat.md | 4 + doc/user/project/file_lock.md | 7 +- doc/user/project/insights/_index.md | 7 + doc/user/project/repository/web_editor.md | 7 +- ...eholder_users_details_from_source_users.rb | 104 +++++ ...l_project_id_to_dependency_list_exports.rb | 2 +- locale/gitlab.pot | 6 - .../lib/deployment/resource_presets.rb | 4 +- .../deployment/resource_presets_spec.rb | 6 +- qa/qa/page/file/show.rb | 4 - .../parent_group_access_termination_spec.rb | 4 +- .../user/user_inherited_access_spec.rb | 4 +- .../blobs/blob_line_permalink_updater_spec.rb | 97 ---- .../projects/blobs/shortcuts_blob_spec.rb | 59 --- .../projects/files/user_edits_files_spec.rb | 35 +- .../features/snippets/public_snippets_spec.rb | 9 +- .../shortcuts/shortcuts_blob_spec.js | 56 --- .../blob_header_default_actions_spec.js | 7 +- .../blob/components/blob_header_spec.js | 124 +----- .../blob_header_viewer_switcher_spec.js | 23 +- spec/frontend/blob/components/mock_data.js | 2 - .../components/blob_button_group_spec.js | 160 ------- .../components/blob_content_viewer_spec.js | 110 ----- .../components/fork_suggestion_spec.js | 42 -- .../header_area/blob_controls_spec.js | 420 ++++++++---------- .../header_area/blob_overflow_menu_spec.js | 3 + .../permalink_dropdown_item_spec.js | 8 +- .../work_item_children_wrapper_spec.js | 8 +- .../work_item_link_child_spec.js | 2 +- ...al_ids_to_vulnerability_statistics_spec.rb | 11 +- ...detected_at_from_created_at_column_spec.rb | 7 +- ...er_users_details_from_source_users_spec.rb | 168 +++++++ ...ject_id_to_dependency_list_exports_spec.rb | 8 +- ...kfill_project_id_to_security_scans_spec.rb | 7 +- ...ty_external_issue_links_project_id_spec.rb | 10 +- ..._occurrence_identifiers_project_id_spec.rb | 10 +- ...space_from_os_type_sbom_components_spec.rb | 7 +- .../resync_has_vulnerabilities_spec.rb | 16 +- ...er_users_details_from_source_users_spec.rb | 27 ++ ...er_relation_contacts_for_epic_type_spec.rb | 130 ++++++ spec/support/rspec_order_todo.yml | 2 - 79 files changed, 920 insertions(+), 1538 deletions(-) delete mode 100644 app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js delete mode 100644 app/assets/javascripts/blob/blob_line_permalink_updater.js delete mode 100644 app/assets/javascripts/blob/queries/user_info.query.graphql create mode 100644 app/assets/javascripts/pages/dashboard/merge_requests_v2/index.js delete mode 100644 app/assets/javascripts/repository/components/blob_button_group.vue delete mode 100644 app/assets/javascripts/repository/components/fork_suggestion.vue rename app/assets/javascripts/{blob => repository}/queries/application_info.query.graphql (100%) delete mode 100644 config/feature_flags/beta/blob_overflow_menu.yml create mode 100644 db/docs/batched_background_migrations/backfill_placeholder_users_details_from_source_users.yml create mode 100644 db/post_migrate/20250526065102_queue_backfill_placeholder_users_details_from_source_users.rb create mode 100644 db/post_migrate/20250530124922_remove_customer_relation_contacts_for_epic_type.rb create mode 100644 db/schema_migrations/20250526065102 create mode 100644 db/schema_migrations/20250530124922 create mode 100644 lib/gitlab/background_migration/backfill_placeholder_users_details_from_source_users.rb delete mode 100644 spec/features/projects/blobs/blob_line_permalink_updater_spec.rb delete mode 100644 spec/features/projects/blobs/shortcuts_blob_spec.rb delete mode 100644 spec/frontend/behaviors/shortcuts/shortcuts_blob_spec.js delete mode 100644 spec/frontend/repository/components/blob_button_group_spec.js delete mode 100644 spec/frontend/repository/components/fork_suggestion_spec.js create mode 100644 spec/lib/gitlab/background_migration/backfill_placeholder_users_details_from_source_users_spec.rb create mode 100644 spec/migrations/20250526065102_queue_backfill_placeholder_users_details_from_source_users_spec.rb create mode 100644 spec/migrations/20250530124922_remove_customer_relation_contacts_for_epic_type_spec.rb diff --git a/.gitlab/ci/qa-common/variables.gitlab-ci.yml b/.gitlab/ci/qa-common/variables.gitlab-ci.yml index 7073b1abaff..a07c367f45f 100644 --- a/.gitlab/ci/qa-common/variables.gitlab-ci.yml +++ b/.gitlab/ci/qa-common/variables.gitlab-ci.yml @@ -16,7 +16,7 @@ variables: # Retry failed specs in separate process QA_RETRY_FAILED_SPECS: "true" # Helm chart ref used by test-on-cng pipeline - GITLAB_HELM_CHART_REF: "67dde1999693aa85eb97bebdb6ba0177814e9c6c" + GITLAB_HELM_CHART_REF: "26a3a2715a90b3a5d9cc01fff87dac0c27c42c49" # Specific ref for cng-mirror project to trigger builds for GITLAB_CNG_MIRROR_REF: "df7aafcccafdbab732a7cf757efb3b7b74c851dd" # Makes sure some of the common scripts from pipeline-common use bundler to execute commands diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index cc63fa725cb..970bdec0692 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -2595,10 +2595,8 @@ Layout/LineLength: - 'spec/features/profiles/user_edit_profile_spec.rb' - 'spec/features/projects/artifacts/file_spec.rb' - 'spec/features/projects/artifacts/user_downloads_artifacts_spec.rb' - - 'spec/features/projects/blobs/blob_line_permalink_updater_spec.rb' - 'spec/features/projects/blobs/blob_show_spec.rb' - 'spec/features/projects/blobs/edit_spec.rb' - - 'spec/features/projects/blobs/shortcuts_blob_spec.rb' - 'spec/features/projects/blobs/user_views_pipeline_editor_button_spec.rb' - 'spec/features/projects/ci/editor_spec.rb' - 'spec/features/projects/commit/cherry_pick_spec.rb' diff --git a/app/assets/javascripts/behaviors/shortcuts/keybindings.js b/app/assets/javascripts/behaviors/shortcuts/keybindings.js index 3e48472f29a..4ff55cc27bd 100644 --- a/app/assets/javascripts/behaviors/shortcuts/keybindings.js +++ b/app/assets/javascripts/behaviors/shortcuts/keybindings.js @@ -390,12 +390,9 @@ export const PROJECT_FILES_GO_BACK = { overrideGlobalHotkey: true, }; -const { blobOverflowMenu } = gon.features ?? {}; -export const PROJECT_FILES_GO_TO_PERMALINK = { - id: 'projectFiles.goToFilePermalink', - description: blobOverflowMenu - ? __('Copy file permalink') - : __('Go to file permalink (while viewing a file)'), +export const PROJECT_FILES_COPY_FILE_PERMALINK = { + id: 'projectFiles.copyFilePermalink', + description: __('Copy file permalink'), defaultKeys: ['y'], }; @@ -681,7 +678,7 @@ const PROJECT_FILES_SHORTCUTS_GROUP = { PROJECT_FILES_MOVE_SELECTION_DOWN, PROJECT_FILES_OPEN_SELECTION, PROJECT_FILES_GO_BACK, - PROJECT_FILES_GO_TO_PERMALINK, + PROJECT_FILES_COPY_FILE_PERMALINK, PROJECT_FILES_GO_TO_COMPARE, ], }; diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js deleted file mode 100644 index 13ecfaf1a54..00000000000 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js +++ /dev/null @@ -1,14 +0,0 @@ -import { PROJECT_FILES_GO_TO_PERMALINK } from '~/behaviors/shortcuts/keybindings'; -import { moveToFilePermalink } from '~/blob/utils'; - -export default class ShortcutsBlob { - constructor(shortcuts) { - const { blobOverflowMenu } = gon.features ?? {}; - if (blobOverflowMenu) { - // TODO: Remove ShortcutsBlob entirely once these feature flags are removed. - return; - } - - shortcuts.add(PROJECT_FILES_GO_TO_PERMALINK, moveToFilePermalink); - } -} diff --git a/app/assets/javascripts/blob/blob_line_permalink_updater.js b/app/assets/javascripts/blob/blob_line_permalink_updater.js deleted file mode 100644 index 62d9da528f4..00000000000 --- a/app/assets/javascripts/blob/blob_line_permalink_updater.js +++ /dev/null @@ -1,45 +0,0 @@ -import { getLocationHash } from '~/lib/utils/url_utility'; -import { getPageParamValue, getPageSearchString } from './utils'; - -const lineNumberRe = /^(L|LC)[0-9]+/; - -const updateLineNumbersOnBlobPermalinks = (linksToUpdate) => { - const hash = getLocationHash(); - if (hash && lineNumberRe.test(hash)) { - const hashUrlString = `#${hash}`; - - [].concat(Array.prototype.slice.call(linksToUpdate)).forEach((permalinkButton) => { - const baseHref = - permalinkButton.dataset.originalHref || - (() => { - const href = permalinkButton.getAttribute('href'); - // eslint-disable-next-line no-param-reassign - permalinkButton.dataset.originalHref = href; - return href; - })(); - const lineNum = parseInt(hash.split('L')[1], 10); - const page = getPageParamValue(lineNum); - const searchString = getPageSearchString(baseHref, page); - permalinkButton.setAttribute('href', `${baseHref}${searchString}${hashUrlString}`); - }); - } -}; - -function BlobLinePermalinkUpdater(blobContentHolder, lineNumberSelector, elementsToUpdate) { - if (!blobContentHolder) return; - const updateBlameAndBlobPermalinkCb = () => { - // Wait for the hash to update from the LineHighlighter callback - setTimeout(() => { - updateLineNumbersOnBlobPermalinks(elementsToUpdate); - }, 0); - }; - - blobContentHolder.addEventListener('click', (e) => { - if (e.target.matches(lineNumberSelector)) { - updateBlameAndBlobPermalinkCb(); - } - }); - updateBlameAndBlobPermalinkCb(); -} - -export default BlobLinePermalinkUpdater; diff --git a/app/assets/javascripts/blob/components/blob_header.vue b/app/assets/javascripts/blob/components/blob_header.vue index a826160e2ba..ccef2f8d110 100644 --- a/app/assets/javascripts/blob/components/blob_header.vue +++ b/app/assets/javascripts/blob/components/blob_header.vue @@ -1,9 +1,5 @@