diff options
Diffstat (limited to 'lib/gitlab/checks/diff_check.rb')
-rw-r--r-- | lib/gitlab/checks/diff_check.rb | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/gitlab/checks/diff_check.rb b/lib/gitlab/checks/diff_check.rb index 8780b410a07..c0b228dee59 100644 --- a/lib/gitlab/checks/diff_check.rb +++ b/lib/gitlab/checks/diff_check.rb @@ -17,17 +17,26 @@ module Gitlab file_paths = [] - process_commits do |commit| - validate_once(commit) do - commit.raw_deltas.each do |diff| - file_paths.concat([diff.new_path, diff.old_path].compact) + if ::Feature.enabled?(:diff_check_with_paths_changed_rpc, project, default_enabled: true) + paths = project.repository.find_changed_paths(commits.map(&:sha)) + paths.each do |path| + file_paths.concat([path.path]) - validate_diff(diff) + validate_diff(path) + end + else + process_commits do |commit| + validate_once(commit) do + commit.raw_deltas.each do |diff| + file_paths.concat([diff.new_path, diff.old_path].compact) + + validate_diff(diff) + end end end end - validate_file_paths(file_paths) + validate_file_paths(file_paths.uniq) end private |