| ... | ... | @@ -80,35 +80,18 @@ class Project < ActiveRecord::Base |
|
|
|
def update_merge_requests(oldrev, newrev, ref, author_key_id)
|
|
|
|
return true unless ref =~ /heads/
|
|
|
|
branch_name = ref.gsub("refs/heads/", "")
|
|
|
|
|
|
|
|
key = Key.find_by_identifier(author_key_id)
|
|
|
|
user = key.user
|
|
|
|
|
|
|
|
user = Key.find_by_identifier(author_key_id).user
|
|
|
|
c_ids = self.commits_between(oldrev, newrev).map(&:id)
|
|
|
|
|
|
|
|
# update commits & diffs for existing MR
|
|
|
|
mrs = self.merge_requests.opened.where(:source_branch => branch_name).all
|
|
|
|
mrs.each do |merge_request|
|
|
|
|
merge_request.reloaded_commits
|
|
|
|
merge_request.reloaded_diffs
|
|
|
|
end
|
|
|
|
# Update code for merge requests
|
|
|
|
mrs = self.merge_requests.opened.find_all_by_branch(branch_name).all
|
|
|
|
mrs.each { |merge_request| merge_request.reload_code }
|
|
|
|
|
|
|
|
# Close merge requests
|
|
|
|
mrs = self.merge_requests.opened.where(:target_branch => branch_name).all
|
|
|
|
mrs.each do |merge_request|
|
|
|
|
next unless merge_request.last_commit
|
|
|
|
# Mark as merged & create event if merged
|
|
|
|
if c_ids.include?(merge_request.last_commit.id)
|
|
|
|
merge_request.mark_as_merged!
|
|
|
|
Event.create(
|
|
|
|
:project => self,
|
|
|
|
:action => Event::Merged,
|
|
|
|
:target_id => merge_request.id,
|
|
|
|
:target_type => "MergeRequest",
|
|
|
|
:author_id => user.id
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) }
|
|
|
|
mrs.each { |merge_request| merge_request.merge!(user.id) }
|
|
|
|
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
| ... | ... | |
| ... | ... | |