From 74a3e6b71254409d423077987f6961ea17ba00d9 Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Fri, 21 Jun 2019 11:30:09 -0300 Subject: Avoid touching the MR status if MR is not opened --- app/models/merge_request.rb | 4 ---- app/services/merge_requests/mergeability_check_service.rb | 11 ++++++++++- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index f12b44ec0c9..df2dc9c49eb 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -231,10 +231,6 @@ class MergeRequest < ApplicationRecord end end - def merge_ref_auto_sync_enabled? - Feature.enabled?(:merge_ref_auto_sync, project, default_enabled: true) - end - # Use this method whenever you need to make sure the head_pipeline is synced with the # branch head commit, for example checking if a merge request can be merged. # For more information check: https://gitlab.com/gitlab-org/gitlab-ce/issues/40004 diff --git a/app/services/merge_requests/mergeability_check_service.rb b/app/services/merge_requests/mergeability_check_service.rb index faa38eda61e..9fa50c9448f 100644 --- a/app/services/merge_requests/mergeability_check_service.rb +++ b/app/services/merge_requests/mergeability_check_service.rb @@ -4,7 +4,7 @@ module MergeRequests class MergeabilityCheckService < ::BaseService include Gitlab::Utils::StrongMemoize - delegate :project, :merge_ref_auto_sync_enabled?, to: :@merge_request + delegate :project, to: :@merge_request delegate :repository, to: :project def initialize(merge_request) @@ -39,6 +39,10 @@ module MergeRequests return ServiceResponse.error(message: 'Merge ref is outdated due to disabled feature') end + unless payload.fetch(:merge_ref_head) + return ServiceResponse.error(message: 'Merge ref cannot be updated') + end + ServiceResponse.success(payload: payload) end @@ -89,6 +93,7 @@ module MergeRequests # Returns true if the merge-ref does not exists or is out of sync. def outdated_merge_ref? return false unless merge_ref_auto_sync_enabled? + return false unless merge_request.open? return true unless ref_head = merge_request.merge_ref_head return true unless target_sha = merge_request.target_branch_sha @@ -107,5 +112,9 @@ module MergeRequests result = MergeRequests::MergeToRefService.new(project, merge_request.author).execute(merge_request) result[:status] == :success end + + def merge_ref_auto_sync_enabled? + Feature.enabled?(:merge_ref_auto_sync, project, default_enabled: true) + end end end -- cgit v1.2.1