summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorJacob Vosmaer <contact@jacobvosmaer.nl>2016-02-01 13:51:05 +0100
committerJacob Vosmaer <contact@jacobvosmaer.nl>2016-02-01 13:51:05 +0100
commit51574d779cac5b97ffb7603db783a26bfd6da1e6 (patch)
treecd75ea27e009328a788abbaf0f60c6a4f46dfc44 /app/models/merge_request.rb
parent64c8ee47c96d9245081abdf1b9d4ec39cdfc5883 (diff)
parentda8e0f86595299740a344309cb5963854b61c4a6 (diff)
downloadgitlab-ce-51574d779cac5b97ffb7603db783a26bfd6da1e6.tar.gz
Merge branch 'master' of https://gitlab.com/gitlab-org/gitlab-ce into lazy-blobs
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb21
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