OSDN Git Service

fixed merge request diff
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Tue, 29 Nov 2011 18:06:37 +0000 (20:06 +0200)
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Tue, 29 Nov 2011 18:06:37 +0000 (20:06 +0200)
app/controllers/merge_requests_controller.rb
app/models/commit.rb
app/models/merge_request.rb

index c83423e..f3f082f 100644 (file)
@@ -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
 
index 0884e34..c97aec2 100644 (file)
@@ -36,4 +36,8 @@ class Commit
   def author_name
     encode(author.name)
   end
+
+  def prev_commit
+    parents.first
+  end
 end
index dc4c92a..6f8b0cd 100644 (file)
@@ -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