diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-12 15:08:30 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-12 15:08:30 +0300 |
commit | cb3b9f9243555b0c26145e2992a9f01f7fa47bf5 (patch) | |
tree | 5fea3438f0c21330e2fba8c958cbc505810ab990 /app | |
parent | 71d34aac9a0fae0507c265929767422391816b01 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
20 files changed, 71 insertions, 87 deletions
diff --git a/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue b/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue index d70ade36fe9..1283db5c8eb 100644 --- a/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue +++ b/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue @@ -41,10 +41,6 @@ export default { label: __('Filename'), }, { - key: 'permissions', - label: __('Permissions'), - }, - { key: 'created_at', label: __('Uploaded'), }, @@ -112,10 +108,6 @@ export default { {{ item.name }} </template> - <template #cell(permissions)="{ item }"> - {{ item.permissions }} - </template> - <template #cell(created_at)="{ item }"> <timeago-tooltip :time="item.created_at" /> </template> diff --git a/app/assets/javascripts/clusters_list/components/agent_table.vue b/app/assets/javascripts/clusters_list/components/agent_table.vue index 2decdb5307b..b878a6835b2 100644 --- a/app/assets/javascripts/clusters_list/components/agent_table.vue +++ b/app/assets/javascripts/clusters_list/components/agent_table.vue @@ -165,8 +165,6 @@ export default { :items="agentsList" :fields="fields" stacked="md" - head-variant="white" - thead-class="gl-border-b-solid gl-border-b-2 gl-border-b-gray-100" class="gl-mb-4!" data-testid="cluster-agent-list-table" > diff --git a/app/assets/javascripts/clusters_list/components/clusters.vue b/app/assets/javascripts/clusters_list/components/clusters.vue index 02eac5a6268..fb3c8ff66b0 100644 --- a/app/assets/javascripts/clusters_list/components/clusters.vue +++ b/app/assets/javascripts/clusters_list/components/clusters.vue @@ -235,8 +235,6 @@ export default { :fields="fields" fixed stacked="md" - head-variant="white" - thead-class="gl-border-b-solid gl-border-b-2 gl-border-b-gray-100" class="qa-clusters-table gl-mb-4!" data-testid="cluster_list_table" > diff --git a/app/assets/javascripts/cycle_analytics/components/stage_table.vue b/app/assets/javascripts/cycle_analytics/components/stage_table.vue index 6a45969fd1a..e4236968efc 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_table.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_table.vue @@ -191,9 +191,7 @@ export default { /> <gl-table v-else - head-variant="white" stacked="lg" - thead-class="border-bottom" show-empty :sort-by.sync="sort" :sort-direction.sync="direction" diff --git a/app/assets/javascripts/diffs/components/compare_dropdown_layout.vue b/app/assets/javascripts/diffs/components/compare_dropdown_layout.vue index 6c5973b7c28..fd219a7d00f 100644 --- a/app/assets/javascripts/diffs/components/compare_dropdown_layout.vue +++ b/app/assets/javascripts/diffs/components/compare_dropdown_layout.vue @@ -24,7 +24,12 @@ export default { </script> <template> - <gl-dropdown :text="selectedVersionName" data-qa-selector="dropdown_content"> + <gl-dropdown + :text="selectedVersionName" + data-qa-selector="dropdown_content" + size="small" + category="tertiary" + > <template v-for="version in versions"> <gl-dropdown-divider v-if="version.addDivider" :key="version.id" /> <gl-dropdown-item diff --git a/app/assets/javascripts/members/components/table/members_table.vue b/app/assets/javascripts/members/components/table/members_table.vue index 0b97ce7e33e..14d628e455c 100644 --- a/app/assets/javascripts/members/components/table/members_table.vue +++ b/app/assets/javascripts/members/components/table/members_table.vue @@ -232,12 +232,10 @@ export default { v-bind="tableAttrs.table" class="members-table" data-testid="members-table" - head-variant="white" stacked="lg" :fields="filteredAndModifiedFields" :items="members" primary-key="id" - thead-class="border-bottom" :empty-text="__('No members found')" show-empty :tbody-tr-attr="tbodyTrAttr" diff --git a/app/assets/stylesheets/page_bundles/merge_requests.scss b/app/assets/stylesheets/page_bundles/merge_requests.scss index bef7ecc8a7e..269ce4042fc 100644 --- a/app/assets/stylesheets/page_bundles/merge_requests.scss +++ b/app/assets/stylesheets/page_bundles/merge_requests.scss @@ -702,18 +702,21 @@ $tabs-holder-z-index: 250; .mr-version-dropdown, .mr-version-compare-dropdown { - margin: 0 0.5rem; + margin: 0 $gl-spacing-scale-1; + + .dropdown-toggle.gl-button { + padding: $gl-spacing-scale-2 2px $gl-spacing-scale-2 $gl-spacing-scale-2; + font-weight: $gl-font-weight-bold; + + .gl-button-icon { + margin-left: $gl-spacing-scale-1; + } + } } .dropdown-title { color: var(--gl-text-color, $gl-text-color); } - - // Shortening button height by 1px to make compare-versions - // header 56px and fit into our 8px design grid - .btn { - height: 34px; - } } .mr-section-container .resize-observer > object { diff --git a/app/controllers/projects/releases_controller.rb b/app/controllers/projects/releases_controller.rb index 84c763088e5..1dfb71842bd 100644 --- a/app/controllers/projects/releases_controller.rb +++ b/app/controllers/projects/releases_controller.rb @@ -17,7 +17,13 @@ class Projects::ReleasesController < Projects::ApplicationController format.html do require_non_empty_project end - format.json { render json: releases } + format.json do + if Feature.enabled?(:remove_sha_from_releases_json, project) + render json: ReleaseSerializer.new.represent(releases) + else + render json: releases + end + end end end diff --git a/app/models/ci/secure_file.rb b/app/models/ci/secure_file.rb index 6a26a5341aa..9c82e106d6e 100644 --- a/app/models/ci/secure_file.rb +++ b/app/models/ci/secure_file.rb @@ -3,8 +3,11 @@ module Ci class SecureFile < Ci::ApplicationRecord include FileStoreMounter + include IgnorableColumns include Limitable + ignore_column :permissions, remove_with: '15.2', remove_after: '2022-06-22' + FILE_SIZE_LIMIT = 5.megabytes.freeze CHECKSUM_ALGORITHM = 'sha256' @@ -14,14 +17,12 @@ module Ci belongs_to :project, optional: false validates :file, presence: true, file_size: { maximum: FILE_SIZE_LIMIT } - validates :checksum, :file_store, :name, :permissions, :project_id, presence: true + validates :checksum, :file_store, :name, :project_id, presence: true validates :name, uniqueness: { scope: :project } after_initialize :generate_key_data before_validation :assign_checksum - enum permissions: { read_only: 0, read_write: 1, execute: 2 } - default_value_for(:file_store) { Ci::SecureFileUploader.default_store } mount_file_store_uploader Ci::SecureFileUploader diff --git a/app/models/event.rb b/app/models/event.rb index e9a98c06b59..8ae2f61f36d 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -369,6 +369,10 @@ class Event < ApplicationRecord Event._to_partial_path end + def has_no_project_and_group? + project_id.nil? && group_id.nil? + end + protected def capability diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 5adc5a656c8..39b5949ea7a 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -1438,30 +1438,8 @@ class MergeRequest < ApplicationRecord actual_head_pipeline.success? end - ## - # This method is for looking for active environments which created via pipelines for merge requests. - # Since deployments run on a merge request ref (e.g. `refs/merge-requests/:iid/head`), - # we cannot look up environments with source branch name. - def legacy_environments - return Environment.none unless actual_head_pipeline&.merge_request? - - build_for_actual_head_pipeline = Ci::Build.latest.where(pipeline: actual_head_pipeline) - - environments = build_for_actual_head_pipeline.joins(:metadata) - .where.not('ci_builds_metadata.expanded_environment_name' => nil) - .distinct('ci_builds_metadata.expanded_environment_name') - .limit(100) - .pluck(:expanded_environment_name) - - Environment.where(project: project, name: environments) - end - def environments_in_head_pipeline(deployment_status: nil) - if ::Feature.enabled?(:fix_related_environments_for_merge_requests, target_project) - actual_head_pipeline&.environments_in_self_and_descendants(deployment_status: deployment_status) || Environment.none - else - legacy_environments - end + actual_head_pipeline&.environments_in_self_and_descendants(deployment_status: deployment_status) || Environment.none end def fetch_ref! diff --git a/app/models/wiki.rb b/app/models/wiki.rb index ca1266e50f4..32d70fcd3b7 100644 --- a/app/models/wiki.rb +++ b/app/models/wiki.rb @@ -261,36 +261,26 @@ class Wiki end def update_page(page, content:, title: nil, format: :markdown, message: nil) - if Feature.enabled?(:gitaly_replace_wiki_update_page, container, type: :undefined) - with_valid_format(format) do |default_extension| - title = title.presence || Pathname(page.path).sub_ext('').to_s + with_valid_format(format) do |default_extension| + title = title.presence || Pathname(page.path).sub_ext('').to_s - # If the format is the same we keep the former extension. This check is for formats - # that can have more than one extension like Markdown (.md, .markdown) - # If we don't do this we will override the existing extension. - extension = page.format != format.to_sym ? default_extension : File.extname(page.path).downcase[1..] + # If the format is the same we keep the former extension. This check is for formats + # that can have more than one extension like Markdown (.md, .markdown) + # If we don't do this we will override the existing extension. + extension = page.format != format.to_sym ? default_extension : File.extname(page.path).downcase[1..] - capture_git_error(:updated) do - repository.update_file( - user, - sluggified_full_path(title, extension), - content, - previous_path: page.path, - **multi_commit_options(:updated, message, title)) + capture_git_error(:updated) do + repository.update_file( + user, + sluggified_full_path(title, extension), + content, + previous_path: page.path, + **multi_commit_options(:updated, message, title)) - after_wiki_activity + after_wiki_activity - true - end + true end - else - commit = commit_details(:updated, message, page.title) - - wiki.update_page(page.path, title || page.name, format.to_sym, content, commit) - - after_wiki_activity - - true end end diff --git a/app/models/work_items/type.rb b/app/models/work_items/type.rb index e2d38dc9903..0d390fa131d 100644 --- a/app/models/work_items/type.rb +++ b/app/models/work_items/type.rb @@ -41,6 +41,10 @@ module WorkItems scope :by_type, ->(base_type) { where(base_type: base_type) } def self.default_by_type(type) + found_type = find_by(namespace_id: nil, base_type: type) + return found_type if found_type + + Gitlab::DatabaseImporters::WorkItems::BaseTypeImporter.upsert_types find_by(namespace_id: nil, base_type: type) end diff --git a/app/serializers/release_entity.rb b/app/serializers/release_entity.rb index 6777b0f9780..5c3d06b82d3 100644 --- a/app/serializers/release_entity.rb +++ b/app/serializers/release_entity.rb @@ -1,6 +1,15 @@ # frozen_string_literal: true +# TODO: consider removing this entity after https://gitlab.com/gitlab-org/gitlab/-/issues/360631 class ReleaseEntity < Grape::Entity expose :id expose :tag # see https://gitlab.com/gitlab-org/gitlab/-/issues/36338 + expose :name + expose :description + expose :project_id + expose :author_id + + expose :created_at + expose :updated_at + expose :released_at end diff --git a/app/services/environments/stop_service.rb b/app/services/environments/stop_service.rb index 5a0dca4e35b..54ad94947ff 100644 --- a/app/services/environments/stop_service.rb +++ b/app/services/environments/stop_service.rb @@ -19,9 +19,7 @@ module Environments end def execute_for_merge_request_pipeline(merge_request) - if ::Feature.enabled?(:fix_related_environments_for_merge_requests, merge_request.target_project) - return unless merge_request.actual_head_pipeline&.merge_request? - end + return unless merge_request.actual_head_pipeline&.merge_request? merge_request.environments_in_head_pipeline(deployment_status: :success).each do |environment| execute(environment) diff --git a/app/views/events/event/_note.html.haml b/app/views/events/event/_note.html.haml index d08c3d5ba41..53c59474d83 100644 --- a/app/views/events/event/_note.html.haml +++ b/app/views/events/event/_note.html.haml @@ -1,3 +1,5 @@ +- return if !event.personal_snippet_note? && event.has_no_project_and_group? + = icon_for_profile_event(event) = event_user_info(event) diff --git a/app/views/projects/_merge_request_merge_checks_settings.html.haml b/app/views/projects/_merge_request_merge_checks_settings.html.haml index baaa3067c81..3345b3043b8 100644 --- a/app/views/projects/_merge_request_merge_checks_settings.html.haml +++ b/app/views/projects/_merge_request_merge_checks_settings.html.haml @@ -13,6 +13,6 @@ help_text: s_('ProjectSettings|Introduces the risk of merging changes that do not pass the pipeline.'), checkbox_options: { class: 'gl-pl-6' } = form.gitlab_ui_checkbox_component :only_allow_merge_if_all_discussions_are_resolved, - s_('ProjectSettings|All discussions must be resolved'), + s_('ProjectSettings|All threads must be resolved'), checkbox_options: { data: { qa_selector: 'allow_merge_if_all_discussions_are_resolved_checkbox' } } = render_if_exists 'projects/merge_request_merge_checks_jira_enforcement', form: form, project: @project diff --git a/app/views/projects/_merge_request_merge_options_settings.html.haml b/app/views/projects/_merge_request_merge_options_settings.html.haml index 8bed8e20b66..e91c001ea3d 100644 --- a/app/views/projects/_merge_request_merge_options_settings.html.haml +++ b/app/views/projects/_merge_request_merge_options_settings.html.haml @@ -6,7 +6,7 @@ = render_if_exists 'projects/merge_pipelines_settings', form: form = render_if_exists 'projects/merge_trains_settings', form: form = form.gitlab_ui_checkbox_component :resolve_outdated_diff_discussions, - s_('ProjectSettings|Automatically resolve merge request diff discussions when they become outdated') + s_('ProjectSettings|Automatically resolve merge request diff threads when they become outdated') = form.gitlab_ui_checkbox_component :printing_merge_request_link_enabled, s_('ProjectSettings|Show link to create or view a merge request when pushing from the command line') = form.gitlab_ui_checkbox_component :remove_source_branch_after_merge, diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml index bb6cc693ad9..25d69a8fc1b 100644 --- a/app/views/shared/issuable/_sidebar.html.haml +++ b/app/views/shared/issuable/_sidebar.html.haml @@ -90,7 +90,7 @@ .gl-display-flex.gl-align-items-center.gl-justify-content-space-between.gl-mb-2.hide-collapsed %span.gl-overflow-hidden.gl-text-overflow-ellipsis.gl-white-space-nowrap = _('Source branch: %{source_branch_open}%{source_branch}%{source_branch_close}').html_safe % { source_branch_open: "<span class='gl-font-monospace' data-testid='ref-name' title='#{html_escape(source_branch)}'>".html_safe, source_branch_close: "</span>".html_safe, source_branch: html_escape(source_branch) } - = clipboard_button(text: source_branch, title: _('Copy branch name'), placement: "left", boundary: 'viewport') + = clipboard_button(text: source_branch, title: _('Copy branch name'), placement: "left", boundary: 'viewport', class: 'btn-clipboard gl-button btn-default-tertiary btn-icon btn-sm js-source-branch-copy') - if show_forwarding_email .block diff --git a/app/workers/bulk_imports/pipeline_worker.rb b/app/workers/bulk_imports/pipeline_worker.rb index abfa6dc6299..b515f0fa202 100644 --- a/app/workers/bulk_imports/pipeline_worker.rb +++ b/app/workers/bulk_imports/pipeline_worker.rb @@ -4,7 +4,7 @@ module BulkImports class PipelineWorker # rubocop:disable Scalability/IdempotentWorker include ApplicationWorker - NDJSON_PIPELINE_PERFORM_DELAY = 10.seconds + FILE_EXTRACTION_PIPELINE_PERFORM_DELAY = 10.seconds data_consistency :always feature_category :importers @@ -46,7 +46,7 @@ module BulkImports raise(Entity::FailedError, 'Failed entity status') end - if ndjson_pipeline?(pipeline_tracker) + if file_extraction_pipeline?(pipeline_tracker) export_status = ExportStatus.new(pipeline_tracker, pipeline_tracker.pipeline_class.relation) raise(Pipeline::ExpiredError, 'Pipeline timeout') if job_timeout?(pipeline_tracker) @@ -104,15 +104,15 @@ module BulkImports @logger ||= Gitlab::Import::Logger.build end - def ndjson_pipeline?(pipeline_tracker) - pipeline_tracker.pipeline_class.ndjson_pipeline? + def file_extraction_pipeline?(pipeline_tracker) + pipeline_tracker.pipeline_class.file_extraction_pipeline? end def job_timeout?(pipeline_tracker) (Time.zone.now - pipeline_tracker.entity.created_at) > Pipeline::NDJSON_EXPORT_TIMEOUT end - def reenqueue(pipeline_tracker, delay: NDJSON_PIPELINE_PERFORM_DELAY) + def reenqueue(pipeline_tracker, delay: FILE_EXTRACTION_PIPELINE_PERFORM_DELAY) self.class.perform_in( delay, pipeline_tracker.id, |