diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index c83423edaa7f7b8555dd5ed16901718f4d1561be..f3f082f71e2855350364ced93ed29e954940f095 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -34,8 +34,9 @@ class MergeRequestsController < ApplicationController
   end
 
   def diffs
-    @commit = @project.commit(@merge_request.source_branch)
-    @diffs = @project.repo.diff(@merge_request.target_branch, @merge_request.source_branch)
+    @diffs = @merge_request.diffs
+    @commit = @merge_request.last_commit
+
     render :template => "merge_requests/_diffs", :layout => false
   end
 
diff --git a/app/models/commit.rb b/app/models/commit.rb
index 0884e34225cd0d58a0d2787877c6e443459436ec..c97aec28c72caaa5837b94519a252499341f04a4 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -36,4 +36,8 @@ class Commit
   def author_name
     encode(author.name)
   end
+
+  def prev_commit
+    parents.first
+  end
 end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index dc4c92a9c9856b952ee1c6cbea477ad0c6fea65d..6f8b0cdfedd43bf417904741d42210c408569b78 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -33,4 +33,14 @@ class MergeRequest < ActiveRecord::Base
   def new?
     today? && created_at == updated_at
   end
+
+  def diffs
+    commit = project.commit(source_branch)
+    commits = project.repo.commits_between(target_branch, source_branch).map {|c| Commit.new(c)}
+    diffs = project.repo.diff(commits.first.prev_commit.id, commits.last.id)
+  end
+
+  def last_commit
+    project.commit(source_branch)
+  end
 end