Impoved merge requests show page. Minor style improvements across project
This commit is contained in:
parent
e2b3951700
commit
2ec12c9bb8
13 changed files with 101 additions and 70 deletions
|
@ -41,12 +41,21 @@ class MergeRequest < ActiveRecord::Base
|
|||
where("title like :query", :query => "%#{query}%")
|
||||
end
|
||||
|
||||
def self.find_all_by_branch(branch_name)
|
||||
where("source_branch like :branch or target_branch like :branch", :branch => branch_name)
|
||||
end
|
||||
|
||||
def validate_branches
|
||||
if target_branch == source_branch
|
||||
errors.add :base, "You can not use same branch for source and target branches"
|
||||
end
|
||||
end
|
||||
|
||||
def reload_code
|
||||
self.reloaded_commits
|
||||
self.reloaded_diffs
|
||||
end
|
||||
|
||||
def new?
|
||||
today? && created_at == updated_at
|
||||
end
|
||||
|
@ -72,10 +81,19 @@ class MergeRequest < ActiveRecord::Base
|
|||
commits.first
|
||||
end
|
||||
|
||||
def merged?
|
||||
merged && merge_event
|
||||
end
|
||||
|
||||
def merge_event
|
||||
self.project.events.where(:target_id => self.id, :target_type => "MergeRequest", :action => Event::Merged).last
|
||||
end
|
||||
|
||||
def closed_event
|
||||
self.project.events.where(:target_id => self.id, :target_type => "MergeRequest", :action => Event::Closed).last
|
||||
end
|
||||
|
||||
|
||||
# Return the number of +1 comments (upvotes)
|
||||
def upvotes
|
||||
notes.select(&:upvote?).size
|
||||
|
@ -115,6 +133,17 @@ class MergeRequest < ActiveRecord::Base
|
|||
sort_by(&:created_at).
|
||||
reverse
|
||||
end
|
||||
|
||||
def merge!(user_id)
|
||||
self.mark_as_merged!
|
||||
Event.create(
|
||||
:project => self.project,
|
||||
:action => Event::Merged,
|
||||
:target_id => self.id,
|
||||
:target_type => "MergeRequest",
|
||||
:author_id => user_id
|
||||
)
|
||||
end
|
||||
end
|
||||
# == Schema Information
|
||||
#
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue