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
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-05-12 15:08:30 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-05-12 15:08:30 +0300
commitcb3b9f9243555b0c26145e2992a9f01f7fa47bf5 (patch)
tree5fea3438f0c21330e2fba8c958cbc505810ab990 /app
parent71d34aac9a0fae0507c265929767422391816b01 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/ci_secure_files/components/secure_files_list.vue8
-rw-r--r--app/assets/javascripts/clusters_list/components/agent_table.vue2
-rw-r--r--app/assets/javascripts/clusters_list/components/clusters.vue2
-rw-r--r--app/assets/javascripts/cycle_analytics/components/stage_table.vue2
-rw-r--r--app/assets/javascripts/diffs/components/compare_dropdown_layout.vue7
-rw-r--r--app/assets/javascripts/members/components/table/members_table.vue2
-rw-r--r--app/assets/stylesheets/page_bundles/merge_requests.scss17
-rw-r--r--app/controllers/projects/releases_controller.rb8
-rw-r--r--app/models/ci/secure_file.rb7
-rw-r--r--app/models/event.rb4
-rw-r--r--app/models/merge_request.rb24
-rw-r--r--app/models/wiki.rb40
-rw-r--r--app/models/work_items/type.rb4
-rw-r--r--app/serializers/release_entity.rb9
-rw-r--r--app/services/environments/stop_service.rb4
-rw-r--r--app/views/events/event/_note.html.haml2
-rw-r--r--app/views/projects/_merge_request_merge_checks_settings.html.haml2
-rw-r--r--app/views/projects/_merge_request_merge_options_settings.html.haml2
-rw-r--r--app/views/shared/issuable/_sidebar.html.haml2
-rw-r--r--app/workers/bulk_imports/pipeline_worker.rb10
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,