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
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/entities/merge_request_basic.rb')
-rw-r--r--lib/api/entities/merge_request_basic.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/api/entities/merge_request_basic.rb b/lib/api/entities/merge_request_basic.rb
index 16afc6c1f6a..f796aeba17f 100644
--- a/lib/api/entities/merge_request_basic.rb
+++ b/lib/api/entities/merge_request_basic.rb
@@ -55,7 +55,10 @@ module API
#
# For list endpoints, we skip the recheck by default, since it's expensive
expose :merge_status do |merge_request, options|
- merge_request.check_mergeability(async: true) unless options[:skip_merge_status_recheck]
+ if !options[:skip_merge_status_recheck] && can_check_mergeability?(merge_request.project)
+ merge_request.check_mergeability(async: true)
+ end
+
merge_request.public_merge_status
end
expose :detailed_merge_status
@@ -101,6 +104,12 @@ module API
def detailed_merge_status
::MergeRequests::Mergeability::DetailedMergeStatusService.new(merge_request: object).execute
end
+
+ def can_check_mergeability?(project)
+ return true if ::Feature.disabled?(:restrict_merge_status_recheck, project)
+
+ Ability.allowed?(options[:current_user], :update_merge_request, project)
+ end
end
end
end