From 4fa04f789e6fed5f0dfeafe718eeb7f56a5086e9 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 2 Sep 2020 12:10:35 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop_todo.yml | 61 ------- GITALY_SERVER_VERSION | 2 +- .../edit/components/jira_issues_fields.vue | 7 +- .../javascripts/integrations/edit/index.js | 2 + .../issuables_list/components/issuable.vue | 2 +- .../issuables_list/service_desk_helper.js | 143 ++++++++++----- .../issue_show/components/description.vue | 9 +- .../issue_show/components/pinned_links.vue | 19 +- .../shared/components/package_list_row.vue | 65 ++++--- .../shared/components/publish_method.vue | 10 +- .../explorer/components/delete_button.vue | 1 - .../components/details_page/tags_list.vue | 1 - .../components/details_page/tags_list_row.vue | 2 +- .../components/list_page/image_list.vue | 1 - .../components/list_page/image_list_row.vue | 2 +- .../components/registry}/list_item.vue | 45 ++--- app/assets/stylesheets/utilities.scss | 37 ++++ app/controllers/projects/issues_controller.rb | 8 + app/helpers/search_helper.rb | 15 ++ app/models/blob_viewer/dependency_manager.rb | 4 +- app/models/ci/pipeline.rb | 4 +- .../concerns/bulk_member_access_load.rb | 2 +- app/models/concerns/from_except.rb | 37 ++++ app/models/concerns/from_intersect.rb | 37 ++++ app/models/concerns/from_set_operator.rb | 19 ++ app/models/concerns/from_union.rb | 16 ++ app/models/concerns/id_in_ordered.rb | 20 +++ app/models/issue.rb | 1 + app/models/project.rb | 4 +- app/serializers/base_serializer.rb | 2 +- app/serializers/pipeline_entity.rb | 4 - app/services/event_create_service.rb | 28 ++- app/services/prometheus/proxy_service.rb | 4 +- app/views/projects/issues/show.html.haml | 3 +- app/workers/delete_stored_files_worker.rb | 4 +- app/workers/partition_creation_worker.rb | 2 + .../205578-add-creator-id-to-packages.yml | 5 + ...ing-data-to-track-usage-of-diffnotes-2.yml | 5 + ...-desk-info-messages-need-to-be-updated.yml | 5 + changelogs/unreleased/closing-paren-cop.yml | 5 + changelogs/unreleased/first-param-cop.yml | 5 + changelogs/unreleased/raise-exceptio-cop.yml | 5 + changelogs/unreleased/rescue-alignment.yml | 5 + changelogs/unreleased/self-assign-cop.yml | 5 + .../unreleased/space-before-first-arg.yml | 5 + .../development/recent_items_search.yml | 7 + .../development/sql-set-operators.yml | 7 + config/initializers/1_settings.rb | 4 +- config/initializers/trusted_proxies.rb | 2 +- config/routes/group.rb | 14 +- ...190402150158_backport_enterprise_schema.rb | 2 +- ...200827005322_add_creator_id_to_packages.rb | 9 + ...0830201204_add_index_to_package_creator.rb | 21 +++ db/schema_migrations/20200827005322 | 1 + db/schema_migrations/20200830201204 | 1 + db/structure.sql | 8 +- .../monitoring/prometheus/gitlab_metrics.md | 9 + .../reference_architectures/10k_users.md | 2 +- .../reference_architectures/25k_users.md | 2 +- .../reference_architectures/2k_users.md | 2 +- .../reference_architectures/3k_users.md | 2 +- .../reference_architectures/50k_users.md | 2 +- .../reference_architectures/5k_users.md | 2 +- .../graphql/reference/gitlab_schema.graphql | 5 + doc/api/graphql/reference/gitlab_schema.json | 18 ++ doc/api/graphql/reference/index.md | 1 + lib/gitlab/cross_project_access.rb | 2 +- lib/gitlab/data_builder/push.rb | 2 +- .../partitioning/partition_monitoring.rb | 34 ++++ lib/gitlab/highlight.rb | 4 +- lib/gitlab/search/recent_issues.rb | 60 +++++++ lib/gitlab/sql/except.rb | 22 +++ lib/gitlab/sql/intersect.rb | 23 +++ lib/gitlab/sql/set_operator.rb | 53 ++++++ lib/gitlab/sql/union.rb | 27 +-- lib/gitlab/usage_data.rb | 17 +- .../track_unique_events.rb | 7 + lib/tasks/gitlab/lfs/migrate.rake | 10 +- locale/gitlab.pot | 12 ++ package.json | 2 +- rubocop/cop/gitlab/except.rb | 23 +++ rubocop/cop/gitlab/intersect.rb | 23 +++ rubocop/routes_under_scope.rb | 9 + scripts/lint-doc.sh | 13 +- .../projects/issues_controller_spec.rb | 18 ++ .../projects/pipelines_controller_spec.rb | 4 +- spec/features/issuables/issuable_list_spec.rb | 4 +- spec/features/issues/service_desk_spec.rb | 92 +++++----- .../components/jira_issues_fields_spec.js | 16 ++ .../service_desk_helper_spec.js | 28 +++ .../issue_show/components/description_spec.js | 17 +- .../package_list_row_spec.js.snap | 170 +++++++++++------- .../__snapshots__/publish_method_spec.js.snap | 10 +- .../components/package_list_row_spec.js | 22 ++- .../explorer/components/delete_button_spec.js | 1 - .../components/details_page/tags_list_spec.js | 1 - .../list_page/image_list_row_spec.js | 2 +- spec/frontend/registry/explorer/stubs.js | 2 +- .../components/registry}/list_item_spec.js | 77 +++----- spec/helpers/search_helper_spec.rb | 33 ++++ .../partitioning/partition_monitoring_spec.rb | 34 ++++ spec/lib/gitlab/search/recent_issues_spec.rb | 123 +++++++++++++ spec/lib/gitlab/sql/except_spec.rb | 7 + spec/lib/gitlab/sql/intersect_spec.rb | 7 + spec/lib/gitlab/sql/union_spec.rb | 37 +--- spec/lib/gitlab/usage_data_spec.rb | 27 +-- spec/models/concerns/from_except_spec.rb | 7 + spec/models/concerns/from_intersect_spec.rb | 7 + .../models/concerns/from_set_operator_spec.rb | 20 +++ spec/models/concerns/from_union_spec.rb | 35 +--- spec/models/concerns/id_in_ordered_spec.rb | 33 ++++ .../api/graphql/project/issues_spec.rb | 11 +- spec/requests/api/helpers_spec.rb | 2 +- spec/rubocop/cop/gitlab/except_spec.rb | 19 ++ spec/rubocop/cop/gitlab/intersect_spec.rb | 19 ++ .../cop/put_group_routes_under_scope_spec.rb | 14 ++ .../put_project_routes_under_scope_spec.rb | 14 ++ spec/serializers/pipeline_entity_spec.rb | 8 - spec/serializers/pipeline_serializer_spec.rb | 2 +- spec/services/event_create_service_spec.rb | 120 ++++++++----- .../issues/resolve_discussions_spec.rb | 2 +- spec/services/projects/update_service_spec.rb | 10 +- spec/support/helpers/repo_helpers.rb | 2 +- spec/support/helpers/stub_object_storage.rb | 4 +- .../import_export/configuration_helper.rb | 4 +- .../sql/set_operator_shared_examples.rb | 46 +++++ .../from_set_operator_shared_examples.rb | 42 +++++ .../api/custom_attributes_shared_examples.rb | 2 +- .../workers/partition_creation_worker_spec.rb | 14 +- ...ve_unreferenced_lfs_objects_worker_spec.rb | 6 +- yarn.lock | 8 +- 131 files changed, 1702 insertions(+), 613 deletions(-) rename app/assets/javascripts/{registry/explorer/components => vue_shared/components/registry}/list_item.vue (69%) create mode 100644 app/models/concerns/from_except.rb create mode 100644 app/models/concerns/from_intersect.rb create mode 100644 app/models/concerns/from_set_operator.rb create mode 100644 app/models/concerns/id_in_ordered.rb create mode 100644 changelogs/unreleased/205578-add-creator-id-to-packages.yml create mode 100644 changelogs/unreleased/225555-update-usage-ping-data-to-track-usage-of-diffnotes-2.yml create mode 100644 changelogs/unreleased/235060-the-service-desk-info-messages-need-to-be-updated.yml create mode 100644 changelogs/unreleased/closing-paren-cop.yml create mode 100644 changelogs/unreleased/first-param-cop.yml create mode 100644 changelogs/unreleased/raise-exceptio-cop.yml create mode 100644 changelogs/unreleased/rescue-alignment.yml create mode 100644 changelogs/unreleased/self-assign-cop.yml create mode 100644 changelogs/unreleased/space-before-first-arg.yml create mode 100644 config/feature_flags/development/recent_items_search.yml create mode 100644 config/feature_flags/development/sql-set-operators.yml create mode 100644 db/migrate/20200827005322_add_creator_id_to_packages.rb create mode 100644 db/migrate/20200830201204_add_index_to_package_creator.rb create mode 100644 db/schema_migrations/20200827005322 create mode 100644 db/schema_migrations/20200830201204 create mode 100644 lib/gitlab/database/partitioning/partition_monitoring.rb create mode 100644 lib/gitlab/search/recent_issues.rb create mode 100644 lib/gitlab/sql/except.rb create mode 100644 lib/gitlab/sql/intersect.rb create mode 100644 lib/gitlab/sql/set_operator.rb create mode 100644 rubocop/cop/gitlab/except.rb create mode 100644 rubocop/cop/gitlab/intersect.rb create mode 100644 spec/frontend/issuables_list/service_desk_helper_spec.js rename spec/frontend/{registry/explorer/components => vue_shared/components/registry}/list_item_spec.js (68%) create mode 100644 spec/lib/gitlab/database/partitioning/partition_monitoring_spec.rb create mode 100644 spec/lib/gitlab/search/recent_issues_spec.rb create mode 100644 spec/lib/gitlab/sql/except_spec.rb create mode 100644 spec/lib/gitlab/sql/intersect_spec.rb create mode 100644 spec/models/concerns/from_except_spec.rb create mode 100644 spec/models/concerns/from_intersect_spec.rb create mode 100644 spec/models/concerns/from_set_operator_spec.rb create mode 100644 spec/models/concerns/id_in_ordered_spec.rb create mode 100644 spec/rubocop/cop/gitlab/except_spec.rb create mode 100644 spec/rubocop/cop/gitlab/intersect_spec.rb create mode 100644 spec/support/shared_examples/lib/gitlab/sql/set_operator_shared_examples.rb create mode 100644 spec/support/shared_examples/models/concerns/from_set_operator_shared_examples.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 7d879d18e79..d01b3fb91da 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -18,17 +18,6 @@ Capybara/CurrentPathExpectation: Layout/ArgumentAlignment: Enabled: false -# Offense count: 13 -# Cop supports --auto-correct. -Layout/ClosingParenthesisIndentation: - Exclude: - - 'db/post_migrate/20180704145007_update_project_indexes.rb' - - 'ee/db/geo/migrate/20180405074130_add_partial_index_project_repository_verification.rb' - - 'spec/services/issues/resolve_discussions_spec.rb' - - 'spec/services/projects/update_service_spec.rb' - - 'spec/support/helpers/stub_object_storage.rb' - - 'spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb' - # Offense count: 72 # Cop supports --auto-correct. Layout/EmptyLinesAroundArguments: @@ -57,17 +46,6 @@ Layout/FirstArrayElementIndentation: Layout/FirstHashElementIndentation: Enabled: false -# Offense count: 4 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, IndentationWidth. -# SupportedStyles: consistent, align_parentheses -Layout/FirstParameterIndentation: - Exclude: - - 'lib/gitlab/cross_project_access.rb' - - 'lib/gitlab/data_builder/push.rb' - - 'spec/support/helpers/repo_helpers.rb' - - 'spec/support/helpers/stub_object_storage.rb' - # Offense count: 2164 # Cop supports --auto-correct. # Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle. @@ -91,33 +69,11 @@ Layout/LineLength: Layout/MultilineOperationIndentation: Enabled: false -# Offense count: 9 -# Cop supports --auto-correct. -Layout/RescueEnsureAlignment: - Exclude: - - 'app/models/blob_viewer/dependency_manager.rb' - - 'app/models/project.rb' - - 'app/services/prometheus/proxy_service.rb' - - 'app/workers/delete_stored_files_worker.rb' - - 'config/initializers/1_settings.rb' - - 'config/initializers/trusted_proxies.rb' - - 'lib/gitlab/background_migration/archive_legacy_traces.rb' - - 'lib/gitlab/highlight.rb' - - 'lib/tasks/gitlab/lfs/migrate.rake' - # Offense count: 36 # Cop supports --auto-correct. Layout/SpaceAroundMethodCallOperator: Enabled: false -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: AllowForAlignment. -Layout/SpaceBeforeFirstArg: - Exclude: - - 'spec/requests/api/runner_spec.rb' - - 'spec/support/shared_examples/requests/api/custom_attributes_shared_examples.rb' - # Offense count: 642 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -153,15 +109,6 @@ Lint/NonDeterministicRequireOrder: - 'qa/spec/spec_helper.rb' - 'spec/spec_helper.rb' -# Offense count: 3 -# Configuration parameters: AllowedImplicitNamespaces. -# AllowedImplicitNamespaces: Gem -Lint/RaiseException: - Exclude: - - 'db/migrate/20190402150158_backport_enterprise_schema.rb' - - 'ee/spec/requests/api/helpers_spec.rb' - - 'spec/requests/api/helpers_spec.rb' - # Offense count: 27 # Cop supports --auto-correct. Lint/RedundantCopDisableDirective: @@ -818,14 +765,6 @@ Style/RescueModifier: Style/RescueStandardError: Enabled: false -# Offense count: 4 -# Cop supports --auto-correct. -Style/SelfAssignment: - Exclude: - - 'app/models/concerns/bulk_member_access_load.rb' - - 'app/serializers/base_serializer.rb' - - 'spec/support/import_export/configuration_helper.rb' - # Offense count: 50 # Cop supports --auto-correct. # Configuration parameters: AllowIfMethodIsEmpty. diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 0d9079f6165..acaadbc3902 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -12dcff902c9a2178fa6f4992d9d562ad9b422dd2 +12d115c50517935dc8e7e2e1248aa450bf00710e diff --git a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue index 5a1f86718b0..1baa2b440b0 100644 --- a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue +++ b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue @@ -37,6 +37,11 @@ export default { required: false, default: null, }, + gitlabIssuesEnabled: { + type: Boolean, + required: false, + default: true, + }, upgradePlanPath: { type: String, required: false, @@ -133,7 +138,7 @@ export default { :disabled="!enableJiraIssues" /> -

+

${__('Read more')}`; + const serviceDeskSupportedTitle = __( + 'Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab', + ); - if (emptyStateMeta.canEditProjectSettings && emptyStateMeta.isServiceDeskEnabled) { - return { - title, - svgPath, - description: `

${__('Have your users email')} ${ - emptyStateMeta.serviceDeskAddress - }

${commonDescription}`, - }; - } + const serviceDeskSupportedMessage = __( + 'Those emails automatically become issues (with the comments becoming the email conversation) listed here.', + ); - if (emptyStateMeta.canEditProjectSettings && !emptyStateMeta.isServiceDeskEnabled) { - return { - title, - svgPath, - description: commonDescription, - primaryLink: emptyStateMeta.editProjectPage, - primaryText: __('Turn on Service Desk'), - }; - } - - return { - title, - svgPath, - description: commonDescription, - }; - } + const commonDescription = ` + ${serviceDeskSupportedMessage} + ${__('Read more')}`; return { - title: __('Service Desk is enabled but not yet active'), - svgPath, - description: __('You must set up incoming email before it becomes active.'), - primaryLink: emptyStateMeta.incomingEmailHelpPage, - primaryText: __('More information'), + serviceDeskEnabledAndCanEditProjectSettings: { + title: serviceDeskSupportedTitle, + svgPath, + description: `

${__('Have your users email')} + ${serviceDeskAddress} +

+ ${commonDescription}`, + }, + serviceDeskEnabledAndCannotEditProjectSettings: { + title: serviceDeskSupportedTitle, + svgPath, + description: commonDescription, + }, + serviceDeskDisabledAndCanEditProjectSettings: { + title: serviceDeskSupportedTitle, + svgPath, + description: commonDescription, + primaryLink: editProjectPage, + primaryText: __('Turn on Service Desk'), + }, + serviceDeskDisabledAndCannotEditProjectSettings: { + title: serviceDeskSupportedTitle, + svgPath, + description: commonDescription, + }, + serviceDeskIsNotSupported: { + title: __('Service Desk is not supported'), + svgPath, + description: __( + 'In order to enable Service Desk for your instance, you must first set up incoming email.', + ), + primaryLink: incomingEmailHelpPage, + primaryText: __('More information'), + }, + serviceDeskIsNotEnabled: { + title: __('Service Desk is not enabled'), + svgPath, + description: __( + 'For help setting up the Service Desk for your instance, please contact an administrator.', + ), + }, }; } + +/** + * Returns the attributes used for gl-empty-state in the Service Desk issues list. + * + * @param {Object} emptyStateMeta - Meta data used to generate empty state messages + * @returns {Object} + */ +export function emptyStateHelper(emptyStateMeta) { + const messages = generateMessages(emptyStateMeta); + + const { isServiceDeskSupported, canEditProjectSettings, isServiceDeskEnabled } = emptyStateMeta; + + if (isServiceDeskSupported) { + if (isServiceDeskEnabled && canEditProjectSettings) { + return messages.serviceDeskEnabledAndCanEditProjectSettings; + } + + if (isServiceDeskEnabled && !canEditProjectSettings) { + return messages.serviceDeskEnabledAndCannotEditProjectSettings; + } + + // !isServiceDeskEnabled && canEditProjectSettings + if (canEditProjectSettings) { + return messages.serviceDeskDisabledAndCanEditProjectSettings; + } + + // !isServiceDeskEnabled && !canEditProjectSettings + return messages.serviceDeskDisabledAndCannotEditProjectSettings; + } + + // !serviceDeskSupported && canEditProjectSettings + if (canEditProjectSettings) { + return messages.serviceDeskIsNotSupported; + } + + // !serviceDeskSupported && !canEditProjectSettings + return messages.serviceDeskIsNotEnabled; +} diff --git a/app/assets/javascripts/issue_show/components/description.vue b/app/assets/javascripts/issue_show/components/description.vue index 9cf46be5345..4c586f6c3a6 100644 --- a/app/assets/javascripts/issue_show/components/description.vue +++ b/app/assets/javascripts/issue_show/components/description.vue @@ -48,11 +48,16 @@ export default { return { preAnimation: false, pulseAnimation: false, + initialUpdate: true, }; }, watch: { - descriptionHtml() { - this.animateChange(); + descriptionHtml(newDescription, oldDescription) { + if (!this.initialUpdate && newDescription !== oldDescription) { + this.animateChange(); + } else { + this.initialUpdate = false; + } this.$nextTick(() => { this.renderGFM(); diff --git a/app/assets/javascripts/issue_show/components/pinned_links.vue b/app/assets/javascripts/issue_show/components/pinned_links.vue index 36375ca743b..d38189307bd 100644 --- a/app/assets/javascripts/issue_show/components/pinned_links.vue +++ b/app/assets/javascripts/issue_show/components/pinned_links.vue @@ -20,20 +20,25 @@ export default { }, computed: { pinnedLinks() { - return [ - { + const links = []; + if (this.publishedIncidentUrl) { + links.push({ id: 'publishedIncidentUrl', url: this.publishedIncidentUrl, text: STATUS_PAGE_PUBLISHED, icon: 'tanuki', - }, - { + }); + } + if (this.zoomMeetingUrl) { + links.push({ id: 'zoomMeetingUrl', url: this.zoomMeetingUrl, text: JOIN_ZOOM_MEETING, icon: 'brand-zoom', - }, - ]; + }); + } + + return links; }, }, methods: { @@ -45,7 +50,7 @@ export default {