Commit b5d81174fb12296ade36ec1f52546b8527bbdcf1
1 parent
1ec106b8
Exists in
spb-stable
and in
3 other branches
Fix mr process order on push.
First close merge requests that being merged. Then update code of open mr. This fixes bug when MR merged via command line lose their diff because code reload was before MR close. Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
1 changed file
with
5 additions
and
6 deletions
Show diff stats
app/models/project.rb
@@ -390,18 +390,17 @@ class Project < ActiveRecord::Base | @@ -390,18 +390,17 @@ class Project < ActiveRecord::Base | ||
390 | branch_name = ref.gsub("refs/heads/", "") | 390 | branch_name = ref.gsub("refs/heads/", "") |
391 | c_ids = self.repository.commits_between(oldrev, newrev).map(&:id) | 391 | c_ids = self.repository.commits_between(oldrev, newrev).map(&:id) |
392 | 392 | ||
393 | + # Close merge requests | ||
394 | + mrs = self.merge_requests.opened.where(target_branch: branch_name).to_a | ||
395 | + mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) } | ||
396 | + mrs.each { |merge_request| MergeRequests::MergeService.new.execute(merge_request, user, nil) } | ||
397 | + | ||
393 | # Update code for merge requests into project between project branches | 398 | # Update code for merge requests into project between project branches |
394 | mrs = self.merge_requests.opened.by_branch(branch_name).to_a | 399 | mrs = self.merge_requests.opened.by_branch(branch_name).to_a |
395 | # Update code for merge requests between project and project fork | 400 | # Update code for merge requests between project and project fork |
396 | mrs += self.fork_merge_requests.opened.by_branch(branch_name).to_a | 401 | mrs += self.fork_merge_requests.opened.by_branch(branch_name).to_a |
397 | - | ||
398 | mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked } | 402 | mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked } |
399 | 403 | ||
400 | - # Close merge requests | ||
401 | - mrs = self.merge_requests.opened.where(target_branch: branch_name).to_a | ||
402 | - mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) } | ||
403 | - mrs.each { |merge_request| MergeRequests::MergeService.new.execute(merge_request, user, nil) } | ||
404 | - | ||
405 | true | 404 | true |
406 | end | 405 | end |
407 | 406 |