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
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/services/merge_requests/merge_strategies/from_source_branch.rb', line 38 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 33 34 35 36 |
# File 'app/services/merge_requests/merge_strategies/from_source_branch.rb', line 20 def validate! = if source_sha.blank? 'No source for merge' elsif merge_request.should_be_rebased? 'Only fast-forward merge is allowed for your project. Please update your source branch' elsif !merge_request.mergeable?( skip_discussions_check: @options[:skip_discussions_check], check_mergeability_retry_lease: @options[:check_mergeability_retry_lease] ) 'Merge request is not mergeable' elsif merge_request.missing_required_squash? 'This project requires squashing commits when merge requests are accepted.' end raise_error() if end |