Persist Merge Request diff. Auto merge request close on push
This commit is contained in:
parent
27e3699814
commit
5a3f23f395
10 changed files with 121 additions and 28 deletions
|
@ -73,6 +73,40 @@ class Project < ActiveRecord::Base
|
|||
)
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
# 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,
|
||||
:data => {:merge_request_id => merge_request.id},
|
||||
:author_id => user.id
|
||||
)
|
||||
end
|
||||
end
|
||||
true
|
||||
end
|
||||
|
||||
def execute_web_hooks(oldrev, newrev, ref, author_key_id)
|
||||
ref_parts = ref.split('/')
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue