diff options
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index eb468c6cd53..5a364ac05f2 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -65,13 +65,21 @@ class MergeRequest < ActiveRecord::Base end event :lock_mr do - transition [:reopened, :opened] => :locked + transition [:reopened, :opened, :in_progress] => :locked end event :unlock_mr do transition locked: :reopened end + event :merging do + transition [:opened, :reopened] => :in_progress + end + + event :merging_fail do + transition [:in_progress, :locked] => :opened + end + after_transition any => :locked do |merge_request, transition| merge_request.locked_at = Time.now merge_request.save @@ -86,6 +94,7 @@ class MergeRequest < ActiveRecord::Base state :reopened state :closed state :merged + state :in_progress state :locked end @@ -231,7 +240,7 @@ class MergeRequest < ActiveRecord::Base end def mergeable? - open? && !work_in_progress? && can_be_merged? + (open? || in_progress?) && !work_in_progress? && can_be_merged? end def gitlab_merge_status |