diff options
author | Rémy Coutable <remy@rymai.me> | 2016-09-15 16:30:27 +0200 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-09-15 16:30:27 +0200 |
commit | 0950d92df5d413f43ac6db53751589b597d4283c (patch) | |
tree | 36098c6a372991541abc421a0cddd51f739bf7d7 /app/services/commits/change_service.rb | |
parent | 00f002edf2f80266550d58d6233de2d07f5248ca (diff) | |
download | gitlab-ce-0950d92df5d413f43ac6db53751589b597d4283c.tar.gz |
Reduce duplication in Commits::{CherryPickService,RevertService}22203-reduce-duplication-in-commits-cherry_pick_service
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/services/commits/change_service.rb')
-rw-r--r-- | app/services/commits/change_service.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/app/services/commits/change_service.rb b/app/services/commits/change_service.rb index ed73d8cb8c2..1c82599c579 100644 --- a/app/services/commits/change_service.rb +++ b/app/services/commits/change_service.rb @@ -16,11 +16,29 @@ module Commits error(ex.message) end + private + def commit raise NotImplementedError end - private + def commit_change(action) + raise NotImplementedError unless repository.respond_to?(action) + + into = @create_merge_request ? @commit.public_send("#{action}_branch_name") : @target_branch + tree_id = repository.public_send("check_#{action}_content", @commit, @target_branch) + + if tree_id + create_target_branch(into) if @create_merge_request + + repository.public_send(action, current_user, @commit, into, tree_id) + success + else + error_msg = "Sorry, we cannot #{action.to_s.dasherize} this #{@commit.change_type_title} automatically. + It may have already been #{action.to_s.dasherize}, or a more recent commit may have updated some of its content." + raise ChangeError, error_msg + end + end def check_push_permissions allowed = ::Gitlab::UserAccess.new(current_user, project: project).can_push_to_branch?(@target_branch) |