Commit b5d81174fb12296ade36ec1f52546b8527bbdcf1

Authored by Dmitriy Zaporozhets
1 parent 1ec106b8

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 &lt; ActiveRecord::Base @@ -390,18 +390,17 @@ class Project &lt; 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