summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb13
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