diff options
author | Jacob Vosmaer <jacob@gitlab.com> | 2017-10-10 14:15:21 +0200 |
---|---|---|
committer | Jacob Vosmaer <jacob@gitlab.com> | 2017-10-13 14:07:31 +0200 |
commit | 0aff29f96b54e8036fe46315adb45295bc6c9efd (patch) | |
tree | 23110ac96a9d0d8455aed256d5bdb05174af5919 /lib/gitlab/gitaly_client/operation_service.rb | |
parent | c08fea6fd3b69c5efad14cf39783ef71a7006fad (diff) | |
download | gitlab-ce-0aff29f96b54e8036fe46315adb45295bc6c9efd.tar.gz |
Merge Merge Requests via Gitaly
Diffstat (limited to 'lib/gitlab/gitaly_client/operation_service.rb')
-rw-r--r-- | lib/gitlab/gitaly_client/operation_service.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/gitlab/gitaly_client/operation_service.rb b/lib/gitlab/gitaly_client/operation_service.rb index 81ddaf13e10..91f34011f6e 100644 --- a/lib/gitlab/gitaly_client/operation_service.rb +++ b/lib/gitlab/gitaly_client/operation_service.rb @@ -74,6 +74,37 @@ module Gitlab raise Gitlab::Git::HooksService::PreReceiveError, pre_receive_error end end + + def user_merge_branch(user, source_sha, target_branch, message) + request_enum = QueueEnumerator.new + response_enum = GitalyClient.call( + @repository.storage, + :operation_service, + :user_merge_branch, + request_enum.each + ) + + request_enum.push( + Gitaly::UserMergeBranchRequest.new( + repository: @gitaly_repo, + user: Util.gitaly_user(user), + commit_id: source_sha, + branch: GitalyClient.encode(target_branch), + message: GitalyClient.encode(message) + ) + ) + + yield response_enum.next.commit_id + + request_enum.push(Gitaly::UserMergeBranchRequest.new(apply: true)) + + branch_update = response_enum.next.branch_update + raise Gitlab::Git::CommitError.new('failed to apply merge to branch') unless branch_update.commit_id.present? + + Gitlab::Git::OperationService::BranchUpdate.from_gitaly(branch_update) + ensure + request_enum.close + end end end end |