summaryrefslogtreecommitdiff
path: root/lib/gitlab/checks/diff_check.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/checks/diff_check.rb')
-rw-r--r--lib/gitlab/checks/diff_check.rb21
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