diff options
author | Oswaldo Ferreira <oswaldo@gitlab.com> | 2018-04-30 18:44:37 -0300 |
---|---|---|
committer | Oswaldo Ferreira <oswaldo@gitlab.com> | 2018-04-30 20:07:21 -0300 |
commit | be8a320bd8594fe42c2558d2eab471acdbdc7321 (patch) | |
tree | 3b1389b76d543302586795498eaa7d8f01e419b8 /app/models/diff_note.rb | |
parent | 5af7fd59e53061700bb2db781711aec0b958253c (diff) | |
download | gitlab-ce-be8a320bd8594fe42c2558d2eab471acdbdc7321.tar.gz |
Use persisted diff data instead fetching Git on discussions
Today, when fetching diffs of a note, we always go to Gitaly in order to diff between commits and return the diff of each discussion note. With this change we avoid doing that for notes on the "current version" of the MR.
Diffstat (limited to 'app/models/diff_note.rb')
-rw-r--r-- | app/models/diff_note.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/models/diff_note.rb b/app/models/diff_note.rb index 15122cbc693..616a626419b 100644 --- a/app/models/diff_note.rb +++ b/app/models/diff_note.rb @@ -54,7 +54,20 @@ class DiffNote < Note end def diff_file - @diff_file ||= self.original_position.diff_file(self.project.repository) + @diff_file ||= + begin + if created_at_diff?(noteable.diff_refs) + # We're able to use the already persisted diffs (Postgres) if we're + # presenting a "current version" of the MR discussion diff. + # So no need to make an extra Gitaly diff request for it. + # As an extra benefit, the returned `diff_file` already + # has `highlighted_diff_lines` data set from Redis on + # `Diff::FileCollection::MergeRequestDiff`. + noteable.diffs(paths: original_position.paths, expanded: true).diff_files.first + else + original_position.diff_file(self.project.repository) + end + end end def diff_line |