summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkos Gyimesi <akos@gyim.hu>2018-01-18 00:12:08 +0100
committerNick Thomas <nick@gitlab.com>2018-12-06 17:20:08 +0000
commit4a31c6778decb3ea251b0943f1c8ebda0ad98800 (patch)
tree1eeca043a758c92bde542025db556d5d1b130e46
parent5fd5dad492a2918c10633996bb29d656a4e9137a (diff)
downloadgitlab-ce-4a31c6778decb3ea251b0943f1c8ebda0ad98800.tar.gz
Link to conflicting MR in reopening error message
Also, the error message became shorter.
-rw-r--r--app/controllers/projects/merge_requests_controller.rb11
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--spec/controllers/projects/merge_requests_controller_spec.rb2
3 files changed, 10 insertions, 5 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 9781d159540..ae30199f2fa 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -7,6 +7,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
include RendersCommits
include ToggleAwardEmoji
include IssuableCollections
+ include MarkupHelper
skip_before_action :merge_request, only: [:index, :bulk_update]
before_action :whitelist_query_limiting, only: [:assign_related_issues, :update]
@@ -122,9 +123,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
respond_to do |format|
format.html do
- if merge_request_params[:state_event] && @merge_request.errors.any?
- flash[:alert] = @merge_request.errors.values.flatten.to_sentence
- end
+ check_branch_conflict
if @merge_request.valid?
redirect_to([@merge_request.target_project.namespace.becomes(Namespace), @merge_request.target_project, @merge_request])
@@ -259,6 +258,12 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
@merge_request.check_if_can_be_merged
end
+ def check_branch_conflict
+ if @merge_request.errors[:validate_branches]
+ flash[:alert] = markdown(@merge_request.errors[:validate_branches].to_sentence, pipeline: :single_line)
+ end
+ end
+
def merge!
# Disable the CI check if merge_when_pipeline_succeeds is enabled since we have
# to wait until CI completes to know
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index b50cfa639e0..975dea08cee 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -547,7 +547,7 @@ class MergeRequest < ActiveRecord::Base
similar_mrs = similar_mrs.where('id not in (?)', self.id) if self.id
if similar_mrs.any?
errors.add :validate_branches,
- "Cannot open this Merge Request because another open Merge Request already exists for this source branch: #{similar_mrs.first.title}"
+ "Another open Merge Request already exists for this source branch: !#{similar_mrs.first.id}"
end
end
end
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index 9e8ec99e314..f64bda7154b 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -298,7 +298,7 @@ describe Projects::MergeRequestsController do
update_merge_request(state_event: 'reopen')
- expect(controller).to set_flash[:alert].to(/another open Merge Request already exists for this source branch/)
+ expect(controller).to set_flash[:alert].to(/Another open Merge Request already exists for this source branch/)
expect(merge_request.reload).to be_closed
end
end