summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb26
1 files changed, 16 insertions, 10 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 2edb1a45100..b9acb539404 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -555,22 +555,28 @@ class MergeRequest < ApplicationRecord
end
end
+ def diff_stats
+ return unless diff_refs
+
+ strong_memoize(:diff_stats) do
+ project.repository.diff_stats(diff_refs.base_sha, diff_refs.head_sha)
+ end
+ end
+
def diff_size
# Calling `merge_request_diff.diffs.real_size` will also perform
# highlighting, which we don't need here.
- merge_request_diff&.real_size || diffs.real_size
+ merge_request_diff&.real_size || diff_stats&.real_size || diffs.real_size
end
def modified_paths(past_merge_request_diff: nil)
- diffs = if past_merge_request_diff
- past_merge_request_diff
- elsif compare
- compare
- else
- self.merge_request_diff
- end
-
- diffs.modified_paths
+ if past_merge_request_diff
+ past_merge_request_diff.modified_paths
+ elsif compare
+ diff_stats&.paths || compare.modified_paths
+ else
+ merge_request_diff.modified_paths
+ end
end
def new_paths