diff options
author | Sean McGivern <sean@gitlab.com> | 2017-04-20 15:47:32 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2017-04-25 16:54:10 +0100 |
commit | a0979c05fd5976cabe3c0633c168848d66320bfa (patch) | |
tree | ec0aa3a394e875871cdec10ce61a3e75ba7f3eb9 /app/models/merge_request.rb | |
parent | d1e570221bfdf1f513af017e39d7ebfe8967cfe3 (diff) | |
download | gitlab-ce-a0979c05fd5976cabe3c0633c168848d66320bfa.tar.gz |
Show correct size when MR diff overflows
The problem is that we often go via a diff object constructed from the diffs
stored in the DB. Those diffs, by definition, don't overflow, so we don't have
access to the 'correct' `real_size` - that is stored on the MR diff object
iself.
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 1d4827375d7..9d2288c311e 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -191,22 +191,23 @@ class MergeRequest < ActiveRecord::Base merge_request_diff ? merge_request_diff.raw_diffs(*args) : compare.raw_diffs(*args) end - def diffs(diff_options = nil) + def diffs(diff_options = {}) if compare - compare.diffs(diff_options) + # When saving MR diffs, `no_collapse` is implicitly added (because we need + # to save the entire contents to the DB), so add that here for + # consistency. + compare.diffs(diff_options.merge(no_collapse: true)) else merge_request_diff.diffs(diff_options) end end def diff_size - # The `#diffs` method ends up at an instance of a class inheriting from - # `Gitlab::Diff::FileCollection::Base`, so use those options as defaults - # here too, to get the same diff size without performing highlighting. - # - opts = Gitlab::Diff::FileCollection::Base.default_options.merge(diff_options || {}) + # Calling `merge_request_diff.diffs.real_size` will also perform + # highlighting, which we don't need here. + return real_size if merge_request_diff - raw_diffs(opts).size + diffs.real_size end def diff_base_commit |