summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-01-05 16:24:42 +0100
committerDouwe Maan <douwe@gitlab.com>2016-01-05 16:30:03 +0100
commit097faeb481db2a4956b41049c041d55f5da4e2c1 (patch)
tree8e08e2bc30a8e7df5783559388a0864b5ff4864c /app/models/merge_request.rb
parent7c3c901ada6fc4a6d2d3ce7a2cf8188cf6615008 (diff)
downloadgitlab-ce-097faeb481db2a4956b41049c041d55f5da4e2c1.tar.gz
Get "Merge when build succeeds" to work when commits were pushed to MR target branch while builds were running
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb16
1 files changed, 11 insertions, 5 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index ac25d38eb63..30d0c2b5961 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -229,6 +229,8 @@ class MergeRequest < ActiveRecord::Base
end
def check_if_can_be_merged
+ return unless unchecked?
+
can_be_merged =
project.repository.can_be_merged?(source_sha, target_branch)
@@ -252,7 +254,11 @@ class MergeRequest < ActiveRecord::Base
end
def mergeable?
- open? && !work_in_progress? && can_be_merged?
+ return false unless open? && !work_in_progress?
+
+ check_if_can_be_merged
+
+ can_be_merged?
end
def gitlab_merge_status
@@ -452,6 +458,10 @@ class MergeRequest < ActiveRecord::Base
!source_branch_exists? || !target_branch_exists?
end
+ def broken?
+ self.commits.blank? || branch_missing? || cannot_be_merged?
+ end
+
def can_be_merged_by?(user)
::Gitlab::GitAccess.new(user, project).can_push_to_branch?(target_branch)
end
@@ -507,8 +517,4 @@ class MergeRequest < ActiveRecord::Base
def ci_commit
@ci_commit ||= source_project.ci_commit(last_commit.id) if last_commit && source_project
end
-
- def broken?
- self.commits.blank? || branch_missing? || cannot_be_merged?
- end
end