diff options
-rw-r--r-- | app/controllers/merge_requests_controller.rb | 5 | ||||
-rw-r--r-- | app/models/commit.rb | 4 | ||||
-rw-r--r-- | app/models/merge_request.rb | 10 |
3 files changed, 17 insertions, 2 deletions
diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index c83423edaa7..f3f082f71e2 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 0884e34225c..c97aec28c72 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 dc4c92a9c98..6f8b0cdfedd 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 |