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