diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb
index 252ddfa429a510de31b96910fdc7b368a92d286b..7fca5e77f32444b82e07d4c788551dc456be6e38 100644
--- a/app/controllers/projects/compare_controller.rb
+++ b/app/controllers/projects/compare_controller.rb
@@ -21,7 +21,7 @@ class Projects::CompareController < Projects::ApplicationController
   def diff_for_path
     return render_404 unless @compare
 
-    render_diff_for_path(Compare.decorate(@compare, @project).diff_file_collection(diff_options: diff_options))
+    render_diff_for_path(@compare.diff_file_collection(diff_options: diff_options))
   end
 
   def create
@@ -40,18 +40,12 @@ class Projects::CompareController < Projects::ApplicationController
     @compare = CompareService.new.execute(@project, @head_ref, @project, @start_ref)
 
     if @compare
-      @commits = Commit.decorate(@compare.commits, @project)
+      @commits = @compare.commits
+      @start_commit = @compare.start_commit
+      @commit = @compare.commit
+      @base_commit = @compare.base_commit
 
-      @start_commit = @project.commit(@start_ref)
-      @commit = @project.commit(@head_ref)
-      @base_commit = @project.merge_base_commit(@start_ref, @head_ref)
-
-      diff_refs = Gitlab::Diff::DiffRefs.new(
-        base_sha: @base_commit.try(:sha),
-        start_sha: @start_commit.try(:sha),
-        head_sha: @commit.try(:sha)
-      )
-      @diffs = Compare.decorate(@compare, @project).diff_file_collection(diff_options: diff_options, diff_refs: diff_refs)
+      @diffs = @compare.diff_file_collection(diff_options: diff_options)
 
       @diff_notes_disabled = true
       @grouped_diff_discussions = {}
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 39e7d0f61823484f9053ebb6b301e49e2d9360ce..20afc6afcb2e67ab42f83eb76c745bf676d16e93 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -86,7 +86,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
     respond_to do |format|
       format.html { define_discussion_vars }
       format.json do
-        @diffs = @merge_request.diff_file_collection(diff_options) if @merge_request_diff.collected?
+        @diffs = @merge_request.diff_file_collection(diff_options)
 
         render json: { html: view_to_html_string("projects/merge_requests/show/_diffs") }
       end
@@ -157,10 +157,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
     @commit = @merge_request.diff_head_commit
     @base_commit = @merge_request.diff_base_commit
     if @merge_request.compare
-      @diffs = Compare.decorate(@merge_request.compare, @project).diff_file_collection(
-        diff_options: diff_options,
-        diff_refs: @merge_request.diff_refs
-      )
+      @diffs = @merge_request.diff_file_collection(diff_options)
     end
     @diff_notes_disabled = true
 
diff --git a/app/models/commit.rb b/app/models/commit.rb
index d22ecb222e57ca9387e912c3b22ba1d23fda01ff..a339d47f5f3f39d237efcfb2c08adcf6692bd06c 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -317,7 +317,7 @@ class Commit
     nil
   end
 
-  def diff_file_collection(diff_options)
+  def diff_file_collection(diff_options = nil)
     Gitlab::Diff::FileCollection::Commit.new(self, diff_options: diff_options)
   end
 
diff --git a/app/models/compare.rb b/app/models/compare.rb
index 6672d1bf05996b6a3ed2b472c02dda529bff5af1..05c8fbbcc3620c3eea49774b018863c8e32be21b 100644
--- a/app/models/compare.rb
+++ b/app/models/compare.rb
@@ -1,5 +1,5 @@
 class Compare
-  delegate :commits, :same, :head, :base, to: :@compare
+  delegate :same, :head, :base, to: :@compare
 
   def self.decorate(compare, project)
     if compare.is_a?(Compare)
@@ -14,10 +14,53 @@ class Compare
     @project = project
   end
 
-  def diff_file_collection(diff_options:, diff_refs: nil)
+  def commits
+    @commits ||= Commit.decorate(@compare.commits, @project)
+  end
+
+  def start_commit
+    return @start_commit if defined?(@start_commit)
+
+    commit = @compare.base
+    @start_commit = commit ? ::Commit.new(commit, @project) : nil
+  end
+
+  def commit
+    return @commit if defined?(@commit)
+
+    commit = @compare.head
+    @commit = commit ? ::Commit.new(commit, @project) : nil
+  end
+  alias_method :head_commit, :commit
+
+  # Used only on emails_on_push_worker.rb
+  def base_commit=(commit)
+    @base_commit = commit
+  end
+
+  def base_commit
+    return @base_commit if defined?(@base_commit)
+
+    @base_commit = if start_commit && commit
+                     @project.merge_base_commit(start_commit.id, commit.id)
+                   else
+                     nil
+                   end
+  end
+
+  # keyword args until we get ride of diff_refs as argument
+  def diff_file_collection(diff_options:, diff_refs: self.diff_refs)
     Gitlab::Diff::FileCollection::Compare.new(@compare,
       project: @project,
       diff_options: diff_options,
       diff_refs: diff_refs)
   end
+
+  def diff_refs
+    @diff_refs ||= Gitlab::Diff::DiffRefs.new(
+      base_sha:  base_commit.try(:sha),
+      start_sha: start_commit.try(:sha),
+      head_sha: commit.try(:sha)
+    )
+  end
 end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index abc8bacbe599e13c55960976c33909795440a023..62e5573dfdc3d055f5cf09547a6421646112c309 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -168,8 +168,12 @@ class MergeRequest < ActiveRecord::Base
     merge_request_diff ? merge_request_diff.diffs(*args) : compare.diffs(*args)
   end
 
-  def diff_file_collection(diff_options)
-    Gitlab::Diff::FileCollection::MergeRequest.new(self, diff_options: diff_options)
+  def diff_file_collection(diff_options = nil)
+    if self.compare
+      self.compare.diff_file_collection(diff_options: diff_options, diff_refs: diff_refs)
+    else
+      Gitlab::Diff::FileCollection::MergeRequest.new(self, diff_options: diff_options)
+    end
   end
 
   def diff_size
diff --git a/app/services/compare_service.rb b/app/services/compare_service.rb
index 149822aa64743ad5637c2058893b6c444d4b7601..bb3aff72b47487162f9bdb58aeab8346663af51b 100644
--- a/app/services/compare_service.rb
+++ b/app/services/compare_service.rb
@@ -20,10 +20,13 @@ class CompareService
       )
     end
 
-    Gitlab::Git::Compare.new(
+    raw_compare = Gitlab::Git::Compare.new(
       target_project.repository.raw_repository,
       target_branch,
-      source_sha,
+      source_sha
     )
+
+    # REVIEW be sure if it's target_project or source_project
+    Compare.new(raw_compare, target_project)
   end
 end
diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb
index 7fe57747265156320a76b5b4ac84c1b7cd28f19b..290742f1506dda44fa2dda5c6add2d888b900731 100644
--- a/app/services/merge_requests/build_service.rb
+++ b/app/services/merge_requests/build_service.rb
@@ -34,7 +34,7 @@ module MergeRequests
       # At this point we decide if merge request can be created
       # If we have at least one commit to merge -> creation allowed
       if commits.present?
-        merge_request.compare_commits = Commit.decorate(commits, merge_request.source_project)
+        merge_request.compare_commits = commits
         merge_request.can_be_created = true
         merge_request.compare = compare
       else
diff --git a/app/services/merge_requests/merge_request_diff_cache_service.rb b/app/services/merge_requests/merge_request_diff_cache_service.rb
index 982540ba7f5618897c90ece365ca5473334acacb..8151c24d1b08549686c932c3fbca7acac19aeb8b 100644
--- a/app/services/merge_requests/merge_request_diff_cache_service.rb
+++ b/app/services/merge_requests/merge_request_diff_cache_service.rb
@@ -2,7 +2,7 @@ module MergeRequests
   class MergeRequestDiffCacheService
     def execute(merge_request)
       # Executing the iteration we cache all the highlighted diff information
-      merge_request.diff_file_collection(Gitlab::Diff::FileCollection.default_options).diff_files.to_a
+      merge_request.diff_file_collection.diff_files.to_a
     end
   end
 end
diff --git a/app/views/projects/commit/show.html.haml b/app/views/projects/commit/show.html.haml
index 11b2020f99b8d55e58dba2efdfab293cf9773b57..ed44d86a687d0a1e36456d8b507650e12711c12b 100644
--- a/app/views/projects/commit/show.html.haml
+++ b/app/views/projects/commit/show.html.haml
@@ -7,7 +7,7 @@
   = render "ci_menu"
 - else
   %div.block-connector
-= render "projects/diffs/diffs", diff_files: @diffs.diff_files, project: @diffs.project, diff_refs: @diffs.diff_refs
+= render "projects/diffs/diffs", diffs: @diffs
 = render "projects/notes/notes_with_form"
 - if can_collaborate_with_project?
   - %w(revert cherry-pick).each do |type|
diff --git a/app/views/projects/compare/show.html.haml b/app/views/projects/compare/show.html.haml
index eb8a1bd52898f295156c9eb7e153abcc2be42a85..819e9bc15ae591b2ae222f0760b4d71e62e0b8ff 100644
--- a/app/views/projects/compare/show.html.haml
+++ b/app/views/projects/compare/show.html.haml
@@ -8,7 +8,7 @@
 
   - if @commits.present?
     = render "projects/commits/commit_list"
-    = render "projects/diffs/diffs", diff_files: @diffs.diff_files, project: @diffs.project, diff_refs: @diffs.diff_refs
+    = render "projects/diffs/diffs", diffs: @diffs
   - else
     .light-well
       .center
diff --git a/app/views/projects/diffs/_diffs.html.haml b/app/views/projects/diffs/_diffs.html.haml
index 45895a9a3dec0ebd377bb9706bc08d62530311a0..35fdf7d52789d1152b8afc18426d5060fbd4bbab 100644
--- a/app/views/projects/diffs/_diffs.html.haml
+++ b/app/views/projects/diffs/_diffs.html.haml
@@ -1,4 +1,5 @@
 - show_whitespace_toggle = local_assigns.fetch(:show_whitespace_toggle, true)
+- diff_files = diffs.diff_files
 - if diff_view == 'parallel'
   - fluid_layout true
 
@@ -26,7 +27,7 @@
     - diff_commit = commit_for_diff(diff_file)
     - blob = diff_file.blob(diff_commit)
     - next unless blob
-    - blob.load_all_data!(project.repository) unless blob.only_display_raw?
+    - blob.load_all_data!(@project.repository) unless blob.only_display_raw?
 
-    = render 'projects/diffs/file', i: index, project: project,
-      diff_file: diff_file, diff_commit: diff_commit, blob: blob, diff_refs: diff_refs
+    = render 'projects/diffs/file', i: index, project: @project,
+      diff_file: diff_file, diff_commit: diff_commit, blob: blob, diff_refs: diffs.diff_refs
diff --git a/app/views/projects/merge_requests/_new_submit.html.haml b/app/views/projects/merge_requests/_new_submit.html.haml
index cb2b623691cb7bd9cde5ff8c8bebf3fd57c2fae5..598bd743676eb211dec31d0f3da2e0a54fc10f08 100644
--- a/app/views/projects/merge_requests/_new_submit.html.haml
+++ b/app/views/projects/merge_requests/_new_submit.html.haml
@@ -42,7 +42,7 @@
           %h4 This comparison includes more than #{MergeRequestDiff::COMMITS_SAFE_SIZE} commits.
           %p To preserve performance the line changes are not shown.
       - else
-        = render "projects/diffs/diffs", diff_files: @diffs.diff_files, project: @diffs.project, diff_refs: @merge_request.diff_refs, show_whitespace_toggle: false
+        = render "projects/diffs/diffs", diffs: @diffs, show_whitespace_toggle: false
     - if @pipeline
       #builds.builds.tab-pane
         = render "projects/merge_requests/show/builds"
diff --git a/app/views/projects/merge_requests/show/_diffs.html.haml b/app/views/projects/merge_requests/show/_diffs.html.haml
index 5b842dd928079f60d03c3d793b8bd9346f9b82b4..c6d2567af35da3e872e4f3999884a004aed84ab9 100644
--- a/app/views/projects/merge_requests/show/_diffs.html.haml
+++ b/app/views/projects/merge_requests/show/_diffs.html.haml
@@ -1,5 +1,5 @@
 - if @merge_request_diff.collected?
-  = render "projects/diffs/diffs", diff_files: @diffs.diff_files,
+  = render "projects/diffs/diffs", diffs: @diffs,
     diff_refs: @diffs.diff_refs, project: @diffs.project
 - elsif @merge_request_diff.empty?
   .nothing-here-block Nothing to merge from #{@merge_request.source_branch} into #{@merge_request.target_branch}
diff --git a/app/workers/emails_on_push_worker.rb b/app/workers/emails_on_push_worker.rb
index 0b6a01a3200829b86fdd8ca2b25a37457bafcffb..0b63913cfd1afc0e81ff8973537fe821f8820bda 100644
--- a/app/workers/emails_on_push_worker.rb
+++ b/app/workers/emails_on_push_worker.rb
@@ -33,25 +33,19 @@ class EmailsOnPushWorker
     reverse_compare = false
 
     if action == :push
-      merge_base_sha = project.merge_base_commit(before_sha, after_sha).try(:sha)
+      base_commit = project.merge_base_commit(before_sha, after_sha)
       compare = Gitlab::Git::Compare.new(project.repository.raw_repository, before_sha, after_sha)
-
-      diff_refs = Gitlab::Diff::DiffRefs.new(
-        base_sha: merge_base_sha,
-        start_sha: before_sha,
-        head_sha: after_sha
-      )
+      compare = Compare.decorate(compare, project)
+      compare.base_commit = base_commit
+      diff_refs = compare.diff_refs
 
       return false if compare.same
 
       if compare.commits.empty?
         compare = Gitlab::Git::Compare.new(project.repository.raw_repository, after_sha, before_sha)
-
-        diff_refs = Gitlab::Diff::DiffRefs.new(
-          base_sha: merge_base_sha,
-          start_sha: after_sha,
-          head_sha: before_sha
-        )
+        compare = Compare.decorate(compare, project)
+        compare.base_commit = base_commit
+        diff_refs = compare.diff_refs
 
         reverse_compare = true
 
diff --git a/lib/gitlab/diff/file_collection/base.rb b/lib/gitlab/diff/file_collection/base.rb
index 20562773c14afc176b0219c013493dd32af07009..a0c88265c45b5976995f63b4ad78cf8b9a94b201 100644
--- a/lib/gitlab/diff/file_collection/base.rb
+++ b/lib/gitlab/diff/file_collection/base.rb
@@ -7,7 +7,7 @@ module Gitlab
 
         delegate :count, :size, :real_size, to: :diff_files
 
-        def initialize(diffs, project:, diff_options:, diff_refs: nil)
+        def initialize(diffs, project:, diff_options: nil, diff_refs: nil)
           @diffs        = diffs
           @project      = project
           @diff_options = diff_options
diff --git a/lib/gitlab/diff/file_collection/commit.rb b/lib/gitlab/diff/file_collection/commit.rb
index 2a46109ad99999804feb9242edc8eba325fa2f3b..19def300b74daefb27c462f961c394027bda5e61 100644
--- a/lib/gitlab/diff/file_collection/commit.rb
+++ b/lib/gitlab/diff/file_collection/commit.rb
@@ -3,6 +3,9 @@ module Gitlab
     module FileCollection
       class Commit < Base
         def initialize(commit, diff_options:)
+          # Not merge just set defaults
+          diff_options = diff_options || Gitlab::Diff::FileCollection.default_options
+
           super(commit.diffs(diff_options),
             project: commit.project,
             diff_options: diff_options,
diff --git a/lib/gitlab/diff/file_collection/compare.rb b/lib/gitlab/diff/file_collection/compare.rb
index 1bcda145f158b7b03c9353fd7cb52427392ab24d..aba5a28b51f3a463b336be49457e071f6c0fa5af 100644
--- a/lib/gitlab/diff/file_collection/compare.rb
+++ b/lib/gitlab/diff/file_collection/compare.rb
@@ -3,6 +3,9 @@ module Gitlab
     module FileCollection
       class Compare < Base
         def initialize(compare, project:, diff_options:, diff_refs: nil)
+          # Not merge just set defaults
+          diff_options = diff_options || Gitlab::Diff::FileCollection.default_options
+
           super(compare.diffs(diff_options),
             project:      project,
             diff_options: diff_options,
diff --git a/lib/gitlab/diff/file_collection/merge_request.rb b/lib/gitlab/diff/file_collection/merge_request.rb
index 7c40622d594be039161aaa39183aea1c0b5135c6..9fde0bba18382463988358a2f19ea7d123b47274 100644
--- a/lib/gitlab/diff/file_collection/merge_request.rb
+++ b/lib/gitlab/diff/file_collection/merge_request.rb
@@ -4,6 +4,8 @@ module Gitlab
       class MergeRequest < Base
         def initialize(merge_request, diff_options:)
           @merge_request = merge_request
+          # Not merge just set defaults
+          diff_options = diff_options || Gitlab::Diff::FileCollection.default_options
 
           super(merge_request.diffs(diff_options),
             project: merge_request.project,
@@ -27,15 +29,10 @@ module Gitlab
           if cacheable?
             cache_highlight!(diff_file)
           else
-            highlight_diff_file!(diff_file)
+            diff_file # Don't need to eager load highlighted diff lines
           end
         end
 
-        def highlight_diff_file!(diff_file)
-          diff_file.highlighted_diff_lines = Gitlab::Diff::Highlight.new(diff_file, repository: diff_file.repository).highlight
-          diff_file
-        end
-
         def highlight_diff_file_from_cache!(diff_file, cache_diff_lines)
           diff_file.highlighted_diff_lines = cache_diff_lines.map do |line|
             Gitlab::Diff::Line.init_from_hash(line)
@@ -56,7 +53,6 @@ module Gitlab
           if highlight_cache[file_path]
             highlight_diff_file_from_cache!(diff_file, highlight_cache[file_path])
           else
-            highlight_diff_file!(diff_file)
             highlight_cache[file_path] = diff_file.highlighted_diff_lines.map(&:to_hash)
           end
 
diff --git a/lib/gitlab/email/message/repository_push.rb b/lib/gitlab/email/message/repository_push.rb
index 71213813e172de9a17bb9ee76cc96bcf54400b3c..16491ede71b3f614fa026a2ac4095928ab836e9e 100644
--- a/lib/gitlab/email/message/repository_push.rb
+++ b/lib/gitlab/email/message/repository_push.rb
@@ -35,13 +35,13 @@ module Gitlab
         def commits
           return unless compare
 
-          @commits ||= Commit.decorate(compare.commits, project)
+          @commits ||= compare.commits
         end
 
         def diffs
           return unless compare
 
-          @diffs ||= compare.diff_file_collection(diff_options: { max_files: 30 }, diff_refs: diff_refs).diff_files
+          @diffs ||= compare.diff_file_collection(diff_options: { max_files: 30 }).diff_files
         end
 
         def diffs_count
@@ -49,9 +49,7 @@ module Gitlab
         end
 
         def compare
-          if @opts[:compare]
-            Compare.decorate(@opts[:compare], project)
-          end
+          @opts[:compare] if @opts[:compare]
         end
 
         def diff_refs
@@ -99,16 +97,18 @@ module Gitlab
             if commits.length > 1
               namespace_project_compare_url(project_namespace,
                                             project,
-                                            from: Commit.new(compare.base, project),
-                                            to:   Commit.new(compare.head, project))
+                                            from: compare.start_commit,
+                                            to:   compare.head_commit)
             else
               namespace_project_commit_url(project_namespace,
-                                           project, commits.first)
+                                           project,
+                                           commits.first)
             end
           else
             unless @action == :delete
               namespace_project_tree_url(project_namespace,
-                                         project, ref_name)
+                                         project,
+                                         ref_name)
             end
           end
         end
diff --git a/spec/lib/gitlab/email/message/repository_push_spec.rb b/spec/lib/gitlab/email/message/repository_push_spec.rb
index c1d07329983405d8baede07a681301d6ad9e2501..5b966bddb6a6733a19b6db6800479a1713001c55 100644
--- a/spec/lib/gitlab/email/message/repository_push_spec.rb
+++ b/spec/lib/gitlab/email/message/repository_push_spec.rb
@@ -16,9 +16,12 @@ describe Gitlab::Email::Message::RepositoryPush do
       { author_id: author.id, ref: 'master', action: :push, compare: compare,
         send_from_committer_email: true }
     end
-    let(:compare) do
+    let(:raw_compare) do
       Gitlab::Git::Compare.new(project.repository.raw_repository,
-                               sample_image_commit.id, sample_commit.id)
+        sample_image_commit.id, sample_commit.id)
+    end
+    let(:compare) do
+      Compare.decorate(raw_compare, project)
     end
 
     describe '#project' do
@@ -62,7 +65,7 @@ describe Gitlab::Email::Message::RepositoryPush do
 
     describe '#diffs_count' do
       subject { message.diffs_count }
-      it { is_expected.to eq compare.diffs.size }
+      it { is_expected.to eq raw_compare.diffs.size }
     end
 
     describe '#compare' do
@@ -72,7 +75,7 @@ describe Gitlab::Email::Message::RepositoryPush do
 
     describe '#compare_timeout' do
       subject { message.compare_timeout }
-      it { is_expected.to eq compare.diffs.overflow? }
+      it { is_expected.to eq raw_compare.diffs.overflow? }
     end
 
     describe '#reverse_compare?' do
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 3685b2b17b55f4cd6cedbd25d1b6b07917a6a751..e2866ef160c82e97e53c77a04dd185b01b4845b1 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -944,8 +944,9 @@ describe Notify do
   describe 'email on push with multiple commits' do
     let(:example_site_path) { root_path }
     let(:user) { create(:user) }
-    let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_image_commit.id, sample_commit.id) }
-    let(:commits) { Commit.decorate(compare.commits, nil) }
+    let(:raw_compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_image_commit.id, sample_commit.id) }
+    let(:compare) { Compare.decorate(raw_compare, project) }
+    let(:commits) { compare.commits }
     let(:diff_path) { namespace_project_compare_path(project.namespace, project, from: Commit.new(compare.base, project), to: Commit.new(compare.head, project)) }
     let(:send_from_committer_email) { false }
     let(:diff_refs) { Gitlab::Diff::DiffRefs.new(base_sha: project.merge_base_commit(sample_image_commit.id, sample_commit.id).id, head_sha: sample_commit.id) }
@@ -1046,8 +1047,9 @@ describe Notify do
   describe 'email on push with a single commit' do
     let(:example_site_path) { root_path }
     let(:user) { create(:user) }
-    let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_commit.parent_id, sample_commit.id) }
-    let(:commits) { Commit.decorate(compare.commits, nil) }
+    let(:raw_compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_commit.parent_id, sample_commit.id) }
+    let(:compare) { Compare.decorate(raw_compare, project) }
+    let(:commits) { compare.commits }
     let(:diff_path) { namespace_project_commit_path(project.namespace, project, commits.first) }
     let(:diff_refs) { Gitlab::Diff::DiffRefs.new(base_sha: project.merge_base_commit(sample_image_commit.id, sample_commit.id).id, head_sha: sample_commit.id) }
 
diff --git a/spec/services/merge_requests/build_service_spec.rb b/spec/services/merge_requests/build_service_spec.rb
index 782d74ec5ecf3f331b4c8a451877b8f2f83e6962..232508cda23bc4f4e6cc7b1c040c2c3248a61bd7 100644
--- a/spec/services/merge_requests/build_service_spec.rb
+++ b/spec/services/merge_requests/build_service_spec.rb
@@ -61,7 +61,7 @@ describe MergeRequests::BuildService, services: true do
     end
 
     context 'one commit in the diff' do
-      let(:commits) { [commit_1] }
+      let(:commits) { Commit.decorate([commit_1], project) }
 
       it 'allows the merge request to be created' do
         expect(merge_request.can_be_created).to eq(true)
@@ -84,7 +84,7 @@ describe MergeRequests::BuildService, services: true do
       end
 
       context 'commit has no description' do
-        let(:commits) { [commit_2] }
+        let(:commits) { Commit.decorate([commit_2], project) }
 
         it 'uses the title of the commit as the title of the merge request' do
           expect(merge_request.title).to eq(commit_2.safe_message)
@@ -111,7 +111,7 @@ describe MergeRequests::BuildService, services: true do
         end
 
         context 'commit has no description' do
-          let(:commits) { [commit_2] }
+          let(:commits) { Commit.decorate([commit_2], project) }
 
           it 'sets the description to "Closes #$issue-iid"' do
             expect(merge_request.description).to eq("Closes ##{issue.iid}")
@@ -121,7 +121,7 @@ describe MergeRequests::BuildService, services: true do
     end
 
     context 'more than one commit in the diff' do
-      let(:commits) { [commit_1, commit_2] }
+      let(:commits) { Commit.decorate([commit_1, commit_2], project) }
 
       it 'allows the merge request to be created' do
         expect(merge_request.can_be_created).to eq(true)