diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-01-05 16:24:42 +0100 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-01-05 16:30:03 +0100 |
commit | 097faeb481db2a4956b41049c041d55f5da4e2c1 (patch) | |
tree | 8e08e2bc30a8e7df5783559388a0864b5ff4864c /app/models/merge_request.rb | |
parent | 7c3c901ada6fc4a6d2d3ce7a2cf8188cf6615008 (diff) | |
download | gitlab-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.rb | 16 |
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 |