diff options
author | Jacob Vosmaer <contact@jacobvosmaer.nl> | 2016-02-01 11:33:36 +0100 |
---|---|---|
committer | Jacob Vosmaer <contact@jacobvosmaer.nl> | 2016-02-01 11:33:36 +0100 |
commit | 2679ec40667958aa01c8480978b13a5727cac231 (patch) | |
tree | c139ea7f3723c7f19de4b2bb9ff4cb1fb9133a1c /app/models/merge_request.rb | |
parent | 02afa6793cca042f8563b0e26472606c743d76f5 (diff) | |
parent | da8e0f86595299740a344309cb5963854b61c4a6 (diff) | |
download | gitlab-ce-2679ec40667958aa01c8480978b13a5727cac231.tar.gz |
Merge branch 'master' of https://gitlab.com/gitlab-org/gitlab-ce into git-raw-workhorse
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index c63d0c01653..0af60645545 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -180,6 +180,14 @@ class MergeRequest < ActiveRecord::Base merge_request_diff ? merge_request_diff.first_commit : compare_commits.first end + def diff_base_commit + if merge_request_diff + merge_request_diff.base_commit + elsif source_sha + self.target_project.merge_base_commit(self.source_sha, self.target_branch) + end + end + def last_commit_short_sha last_commit.short_id end @@ -254,7 +262,7 @@ class MergeRequest < ActiveRecord::Base end def mergeable? - return false unless open? && !work_in_progress? + return false unless open? && !work_in_progress? && !broken? check_if_can_be_merged @@ -477,12 +485,11 @@ class MergeRequest < ActiveRecord::Base end def target_sha - @target_sha ||= target_project. - repository.commit(target_branch).sha + @target_sha ||= target_project.repository.commit(target_branch).sha end def source_sha - commits.first.sha + last_commit.try(:sha) end def fetch_ref @@ -517,4 +524,10 @@ class MergeRequest < ActiveRecord::Base def ci_commit @ci_commit ||= source_project.ci_commit(last_commit.id) if last_commit && source_project end + + def diff_refs + return nil unless diff_base_commit + + [diff_base_commit, last_commit] + end end |