diff --git a/app/services/compare_service.rb b/app/services/compare_service.rb
index fcbfe68f1a3ec50b7a179eff261c8842b580b2d8..31c371c4b342683d047858aee974b109560e3626 100644
--- a/app/services/compare_service.rb
+++ b/app/services/compare_service.rb
@@ -3,15 +3,16 @@ require 'securerandom'
 # Compare 2 branches for one repo or between repositories
 # and return Gitlab::Git::Compare object that responds to commits and diffs
 class CompareService
-  attr_reader :source_project, :source_branch
+  attr_reader :source_project, :source_branch_name
 
-  def initialize(new_source_project, source_branch_name)
+  def initialize(new_source_project, new_source_branch_name)
     @source_project = new_source_project
-    @source_branch = new_source_project.commit(source_branch_name)
+    @source_branch_name = new_source_branch_name
   end
 
   def execute(target_project, target_branch, straight: false)
-    source_sha = source_branch.try(:sha)
+    source_sha = source_project.repository.
+      commit(source_branch_name).try(:sha)
 
     return unless source_sha
 
@@ -20,7 +21,7 @@ class CompareService
       compare(source_sha, target_project, target_branch, straight)
     else
       target_project.repository.with_tmp_ref(
-        source_project.repository, source_branch) do
+        source_project.repository, source_branch_name) do
         compare(source_sha, target_project, target_branch, straight)
       end
     end