Class: MergeRequests::MergeStrategies::FromSourceBranch
- Inherits:
-
Object
- Object
- MergeRequests::MergeStrategies::FromSourceBranch
- Includes:
- Gitlab::Utils::StrongMemoize
- Defined in:
- app/services/merge_requests/merge_strategies/from_source_branch.rb
Overview
FromSourceBranch performs a git merge from a merge request’s source branch to the target branch, including a squash if needed.
Instance Method Summary collapse
- #execute_git_merge! ⇒ Object
-
#initialize(merge_request, current_user, merge_params: {}, options: {}) ⇒ FromSourceBranch
constructor
A new instance of FromSourceBranch.
- #validate! ⇒ Object
Constructor Details
#initialize(merge_request, current_user, merge_params: {}, options: {}) ⇒ FromSourceBranch
Returns a new instance of FromSourceBranch.
12 13 14 15 16 17 18 |
# File 'app/services/merge_requests/merge_strategies/from_source_branch.rb', line 12 def initialize(merge_request, current_user, merge_params: {}, options: {}) @merge_request = merge_request @current_user = current_user @project = merge_request.project @merge_params = merge_params @options = end |
Instance Method Details
#execute_git_merge! ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/services/merge_requests/merge_strategies/from_source_branch.rb', line 34 def execute_git_merge! result = if project.merge_requests_ff_only_enabled fast_forward! else merge_commit! end result[:squash_commit_sha] = source_sha if merge_request.squash_on_merge? result end |
#validate! ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/services/merge_requests/merge_strategies/from_source_branch.rb', line 20 def validate! raise_error('No source for merge') if source_sha.blank? if merge_request.should_be_rebased? raise_error('Only fast-forward merge is allowed for your project. Please update your source branch') end raise_error('Merge request is not mergeable') unless mergeable? return unless merge_request.missing_required_squash? raise_error('This project requires squashing commits when merge requests are accepted.') end |