summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-02-22 16:51:04 +0000
committerDouwe Maan <douwe@gitlab.com>2016-02-22 16:51:04 +0000
commitdf1cdefe88b96c6ce19ddf2cde7824d602e39577 (patch)
treea59ce5c28a73ba07ad770109b2ddb766b2b59faa /app
parent8c4cfb1fee508a0ef33232740131a5f03e819941 (diff)
parent7c288c07f12bad7047cc2c7c0d4eee8c1c8f2733 (diff)
downloadgitlab-ce-df1cdefe88b96c6ce19ddf2cde7824d602e39577.tar.gz
Merge branch 'improve-merge-when-succeeded' into 'master'
Check the HEAD of branch when doing Merge When Succeeded Implements https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/2894#note_3845158 cc @DouweM @grzesiek See merge request !2907
Diffstat (limited to 'app')
-rw-r--r--app/services/merge_requests/merge_when_build_succeeds_service.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/app/services/merge_requests/merge_when_build_succeeds_service.rb b/app/services/merge_requests/merge_when_build_succeeds_service.rb
index 531bbc9b067..d6af12f9739 100644
--- a/app/services/merge_requests/merge_when_build_succeeds_service.rb
+++ b/app/services/merge_requests/merge_when_build_succeeds_service.rb
@@ -24,10 +24,14 @@ module MergeRequests
merge_requests.each do |merge_request|
next unless merge_request.merge_when_build_succeeds?
+ next unless merge_request.mergeable?
- if merge_request.ci_commit && merge_request.ci_commit.success? && merge_request.mergeable?
- MergeWorker.perform_async(merge_request.id, merge_request.merge_user_id, merge_request.merge_params)
- end
+ ci_commit = merge_request.ci_commit
+ next unless ci_commit
+ next unless ci_commit.sha == commit_status.sha
+ next unless ci_commit.success?
+
+ MergeWorker.perform_async(merge_request.id, merge_request.merge_user_id, merge_request.merge_params)
end
end
@@ -51,6 +55,8 @@ module MergeRequests
# This is for ref-less builds
branches ||= @project.repository.branch_names_contains(commit_status.sha)
+ return [] if branches.blank?
+
merge_requests = @project.origin_merge_requests.opened.where(source_branch: branches).to_a
merge_requests += @project.fork_merge_requests.opened.where(source_branch: branches).to_a