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 390 branch_name = ref.gsub("refs/heads/", "")
391 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 398 # Update code for merge requests into project between project branches
394 399 mrs = self.merge_requests.opened.by_branch(branch_name).to_a
395 400 # Update code for merge requests between project and project fork
396 401 mrs += self.fork_merge_requests.opened.by_branch(branch_name).to_a
397   -
398 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 404 true
406 405 end
407 406  
... ...