From 7676d91a88161957f5226902c380823b2e36c911 Mon Sep 17 00:00:00 2001 From: Arthur Schreiber Date: Fri, 20 Apr 2012 22:56:32 +0200 Subject: [PATCH] Start the merge diff from the merge base. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This shows **correct** merge diffs, exactly in the way git will later handle merges. The previous method sometimes showed changes in the diff that were just wrong. (Basically, the diff shows now the output of `git diff target_branch…source_branch`). --- app/models/merge_request.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index edf073d4e88..3a7f11ff6ae 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -72,9 +72,12 @@ class MergeRequest < ActiveRecord::Base diffs end + def merge_base + project.repo.git.native(:merge_base, {}, [target_branch, source_branch]).strip + end + def unmerged_diffs - 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) rescue [] + project.repo.diff(merge_base, source_branch) end def last_commit -- GitLab