Merge remote-tracking branch 'origin/merge_button'
Conflicts: app/assets/javascripts/merge_requests.js db/schema.rb
This commit is contained in:
commit
08994f3f60
13 changed files with 223 additions and 7 deletions
|
@ -48,6 +48,7 @@ class Ability
|
|||
:admin_team_member,
|
||||
:admin_merge_request,
|
||||
:admin_note,
|
||||
:accept_mr,
|
||||
:admin_wiki
|
||||
] if project.master_access_for?(user) || project.owner == user
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
require File.join(Rails.root, "app/models/commit")
|
||||
|
||||
class MergeRequest < ActiveRecord::Base
|
||||
UNCHECKED = 1
|
||||
CAN_BE_MERGED = 2
|
||||
CANNOT_BE_MERGED = 3
|
||||
|
||||
belongs_to :project
|
||||
belongs_to :author, :class_name => "User"
|
||||
belongs_to :assignee, :class_name => "User"
|
||||
|
@ -45,6 +49,15 @@ class MergeRequest < ActiveRecord::Base
|
|||
where("source_branch like :branch or target_branch like :branch", :branch => branch_name)
|
||||
end
|
||||
|
||||
def human_state
|
||||
states = {
|
||||
CAN_BE_MERGED => "can_be_merged",
|
||||
CANNOT_BE_MERGED => "cannot_be_merged",
|
||||
UNCHECKED => "unchecked"
|
||||
}
|
||||
states[self.state]
|
||||
end
|
||||
|
||||
def validate_branches
|
||||
if target_branch == source_branch
|
||||
errors.add :base, "You can not use same branch for source and target branches"
|
||||
|
@ -56,6 +69,27 @@ class MergeRequest < ActiveRecord::Base
|
|||
self.reloaded_diffs
|
||||
end
|
||||
|
||||
def unchecked?
|
||||
state == UNCHECKED
|
||||
end
|
||||
|
||||
def mark_as_unchecked
|
||||
self.update_attributes(:state => UNCHECKED)
|
||||
end
|
||||
|
||||
def can_be_merged?
|
||||
state == CAN_BE_MERGED
|
||||
end
|
||||
|
||||
def check_if_can_be_merged
|
||||
self.state = if GitlabMerge.new(self, self.author).can_be_merged?
|
||||
CAN_BE_MERGED
|
||||
else
|
||||
CANNOT_BE_MERGED
|
||||
end
|
||||
self.save
|
||||
end
|
||||
|
||||
def new?
|
||||
today? && created_at == updated_at
|
||||
end
|
||||
|
@ -118,6 +152,10 @@ class MergeRequest < ActiveRecord::Base
|
|||
save
|
||||
end
|
||||
|
||||
def mark_as_unmergable
|
||||
self.update_attributes :state => CANNOT_BE_MERGED
|
||||
end
|
||||
|
||||
def reloaded_commits
|
||||
if open? && unmerged_commits.any?
|
||||
self.st_commits = unmerged_commits
|
||||
|
@ -144,6 +182,16 @@ class MergeRequest < ActiveRecord::Base
|
|||
:author_id => user_id
|
||||
)
|
||||
end
|
||||
|
||||
def automerge!(current_user)
|
||||
if GitlabMerge.new(self, current_user).merge
|
||||
self.merge!(current_user.id)
|
||||
true
|
||||
end
|
||||
rescue
|
||||
self.mark_as_unmergable
|
||||
false
|
||||
end
|
||||
end
|
||||
# == Schema Information
|
||||
#
|
||||
|
|
|
@ -18,7 +18,7 @@ module Project::HooksTrait
|
|||
|
||||
# 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 }
|
||||
mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked }
|
||||
|
||||
# Close merge requests
|
||||
mrs = self.merge_requests.opened.where(:target_branch => branch_name).all
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue