diff options
| author | Sytse Sijbrandij <sytse@dosire.com> | 2012-08-21 23:07:11 +0200 |
|---|---|---|
| committer | Sytse Sijbrandij <sytse@dosire.com> | 2012-08-21 23:07:11 +0200 |
| commit | 9ec4c2d214b045f3fb207edd67055c4ccaebd381 (patch) | |
| tree | 824a24b4f8008260ad34b9237048d43461cc36ff /app/models/merge_request.rb | |
| parent | 64f3682feb90c3eb8dbd4f0cd16ad6057b302a6c (diff) | |
| download | gitlab-ce-9ec4c2d214b045f3fb207edd67055c4ccaebd381.tar.gz | |
Show only the commits that are newer in the merge request.
Diffstat (limited to 'app/models/merge_request.rb')
| -rw-r--r-- | app/models/merge_request.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 47966d669f6..542817b0eea 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -88,8 +88,11 @@ class MergeRequest < ActiveRecord::Base 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 [] + # Only show what is new in the source branch compared to the target branch, not the other way around. + # The linex below with merge_base is equivalent to diff with three dots (git diff branch1...branch2) + # From the git documentation: "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B" + common_commit = project.repo.git.native(:merge_base, {}, [target_branch, source_branch]).strip + diffs = project.repo.diff(common_commit, source_branch) end def last_commit |
