Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-11-10 17:55:39 +0300
committerOswaldo Ferreira <oswaldo@gitlab.com>2017-11-10 22:25:22 +0300
commit98baa929de998869095660474da0a89345d70993 (patch)
tree0255284124bcb20d612c85a6d12a8c6f4ecc8a78 /app
parent2758c79e198b87024b1e857f64e76709aceb4bd2 (diff)
Merge branch 'issue_39773_be' into 'master'
Prevent fast forward merge when rebase is required Closes #39773 See merge request gitlab-org/gitlab-ce!15296 (cherry picked from commit f7537ce03a29b1af85461b2883c33bb41b2382d5) bddbb90f Prevent fast forward merge when rebase is required
Diffstat (limited to 'app')
-rw-r--r--app/services/merge_requests/merge_service.rb27
1 files changed, 16 insertions, 11 deletions
diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb
index 156e7b2f078..1da4dbd9e96 100644
--- a/app/services/merge_requests/merge_service.rb
+++ b/app/services/merge_requests/merge_service.rb
@@ -18,15 +18,7 @@ module MergeRequests
@merge_request = merge_request
- unless @merge_request.mergeable?
- return handle_merge_error(log_message: 'Merge request is not mergeable', save_message_on_model: true)
- end
-
- @source = find_merge_source
-
- unless @source
- return handle_merge_error(log_message: 'No source for merge', save_message_on_model: true)
- end
+ error_check!
merge_request.in_locked_state do
if commit
@@ -41,6 +33,19 @@ module MergeRequests
private
+ def error_check!
+ error =
+ if @merge_request.should_be_rebased?
+ 'Only fast-forward merge is allowed for your project. Please update your source branch'
+ elsif !@merge_request.mergeable?
+ 'Merge request is not mergeable'
+ elsif !source
+ 'No source for merge'
+ end
+
+ raise MergeError, error if error
+ end
+
def commit
message = params[:commit_message] || merge_request.merge_commit_message
@@ -91,8 +96,8 @@ module MergeRequests
merge_request.to_reference(full: true)
end
- def find_merge_source
- merge_request.diff_head_sha
+ def source
+ @source ||= @merge_request.diff_head_sha
end
end
end