From 3a720bee044d0e401f54d2de6534477a2be6b42d Mon Sep 17 00:00:00 2001 From: Hordur Freyr Yngvason <hfyngvason@gitlab.com> Date: Fri, 6 Oct 2023 12:29:47 +0000 Subject: [PATCH] Enable semi-linear merge trains (behind feature flag) This expands the feature flag `fast_forward_merge_trains_support` to also include semi-linear merge trains. Feature issue: https://gitlab.com/gitlab-org/gitlab/-/issues/26996 Rollout issue: https://gitlab.com/gitlab-org/gitlab/-/issues/282442 Changelog: changed EE: true --- .../merge_trains/refresh_merge_request_service.rb | 6 ++++-- .../merge_trains/refresh_merge_request_service_spec.rb | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ee/app/services/merge_trains/refresh_merge_request_service.rb b/ee/app/services/merge_trains/refresh_merge_request_service.rb index 97eabe5f4bf96..cdd0b885963e1 100644 --- a/ee/app/services/merge_trains/refresh_merge_request_service.rb +++ b/ee/app/services/merge_trains/refresh_merge_request_service.rb @@ -47,8 +47,10 @@ def validate! end def merge_from_train_ref? - # For now, we only enable this for fast-forward merge trains - return false unless project.merge_requests_ff_only_enabled && Feature.enabled?(:fast_forward_merge_trains_support, project) + # Although it should be technically safe to merge from any mergeable train + # ref, do so for fast-forward and semi-linear merge trains to avoid + # disruption to standard merge commit merge trains. + return false unless project.ff_merge_must_be_possible? && Feature.enabled?(:fast_forward_merge_trains_support, project) mergeable_sha_and_message?(merge_train_car) end diff --git a/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb b/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb index f539ec8f61bc6..dd3a5bf089e5c 100644 --- a/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb +++ b/ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb @@ -259,9 +259,15 @@ context 'when the merge request is the first queue' do it_behaves_like 'merges the merge request' - context 'when the merge method is fast forward' do + using RSpec::Parameterized::TableSyntax + + where(:merge_method) do + [:ff, :rebase_merge] + end + + with_them do before do - project.update!(merge_method: :ff) + project.update!(merge_method: merge_method) project.repository.raw_repository.write_ref(merge_request.train_ref_path, pipeline.sha) end -- GitLab