Skip to content
Snippets Groups Projects
Commit 28fed086 authored by Valery Sizov's avatar Valery Sizov
Browse files

Merge request, better error handling

parent 2e8a3e39
No related branches found
No related tags found
1 merge request!1460Improve error message when merging fails
Pipeline #
Loading
Loading
@@ -16,6 +16,7 @@ v 8.1.0 (unreleased)
- Move CI runners page to project settings area
- Move CI variables page to project settings area
- Move CI triggers page to project settings area
- Improve error message when merging fails
 
v 8.0.3
- Fix URL shown in Slack notifications
Loading
Loading
Loading
Loading
@@ -18,6 +18,8 @@ class @MergeRequestWidget
switch data.state
when 'merged'
location.reload()
when 'opened'
$('.mr-widget-body').html("<h4>Something went wrong during merging</h4>")
else
setTimeout(merge_request_widget.mergeInProgress, 2000)
dataType: 'json'
Loading
Loading
Loading
Loading
@@ -150,6 +150,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
return access_denied! unless @merge_request.can_be_merged_by?(current_user)
 
if @merge_request.mergeable?
@merge_request.merging
MergeWorker.perform_async(@merge_request.id, current_user.id, params)
@status = true
else
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
@@ -86,6 +94,7 @@ class MergeRequest < ActiveRecord::Base
state :reopened
state :closed
state :merged
state :in_progress
state :locked
end
 
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -21,6 +21,7 @@ module MergeRequests
after_merge
success
else
@merge_request.merging_fail
error('Can not merge changes')
end
end
Loading
Loading
Loading
Loading
@@ -9,6 +9,8 @@
= render 'projects/merge_requests/widget/open/missing_branch'
- elsif @merge_request.unchecked?
= render 'projects/merge_requests/widget/open/check'
- elsif @merge_request.in_progress?
= render 'projects/merge_requests/widget/open/in_progress'
- elsif @merge_request.cannot_be_merged?
= render 'projects/merge_requests/widget/open/conflicts'
- elsif @merge_request.work_in_progress?
Loading
Loading
@@ -18,6 +20,7 @@
- elsif @merge_request.can_be_merged?
= render 'projects/merge_requests/widget/open/accept'
 
- if @closes_issues.present?
.mr-widget-footer
%span
Loading
Loading
- if @merge_request.open?
- if @merge_request.open? || @merge_request.in_progress?
= render 'projects/merge_requests/widget/open'
- elsif @merge_request.merged?
= render 'projects/merge_requests/widget/merged'
Loading
Loading
.accept-merge-holder.clearfix.js-toggle-container
%i.fa.fa-spinner.fa-spin
Merge in progress
:coffeescript
$ ->
merge_request_widget.mergeInProgress()
Loading
Loading
@@ -12,9 +12,9 @@ describe MergeRequests::MergeService do
end
 
describe :execute do
context 'valid params' do
let(:service) { MergeRequests::MergeService.new(project, user, {}) }
let(:service) { MergeRequests::MergeService.new(project, user, {}) }
 
context 'valid params' do
before do
allow(service).to receive(:execute_hooks)
 
Loading
Loading
@@ -35,5 +35,14 @@ describe MergeRequests::MergeService do
expect(note.note).to include 'Status changed to merged'
end
end
context "something goes wrong" do
it "mark merge request as open" do
allow(service).to receive(:commit).and_return(false)
merge_request.merging
service.execute(merge_request, 'Awesome message')
expect(merge_request.state).to eq("opened")
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment