diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-02-26 17:02:41 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-02-26 17:02:41 +0300 |
commit | c1d8f8a41042ac7abb2916206e8a411e82af442e (patch) | |
tree | 653195a7a2508e17bb64bb9baa865471ed18d715 /lib | |
parent | a8a02387a7ea5c5a4a6f733a043adf2b1f907e3c (diff) | |
parent | 16011886be00247d98c49e1727867767085e4398 (diff) |
Merge branch 'osw-create-and-store-merge-ref-for-mrs' into 'master'
Support merge ref writing (without merging to target branch)
Closes #47110
See merge request gitlab-org/gitlab-ce!24692
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/repository.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/operation_service.rb | 19 |
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index 593a3676519..aea132a3dd9 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -556,6 +556,12 @@ module Gitlab tags.find { |tag| tag.name == name } end + def merge_to_ref(user, source_sha, branch, target_ref, message) + wrapped_gitaly_errors do + gitaly_operation_client.user_merge_to_ref(user, source_sha, branch, target_ref, message) + end + end + def merge(user, source_sha, target_branch, message, &block) wrapped_gitaly_errors do gitaly_operation_client.user_merge_branch(user, source_sha, target_branch, message, &block) diff --git a/lib/gitlab/gitaly_client/operation_service.rb b/lib/gitlab/gitaly_client/operation_service.rb index 22d2d149e65..d172c798da2 100644 --- a/lib/gitlab/gitaly_client/operation_service.rb +++ b/lib/gitlab/gitaly_client/operation_service.rb @@ -100,6 +100,25 @@ module Gitlab end end + def user_merge_to_ref(user, source_sha, branch, target_ref, message) + request = Gitaly::UserMergeToRefRequest.new( + repository: @gitaly_repo, + source_sha: source_sha, + branch: encode_binary(branch), + target_ref: encode_binary(target_ref), + user: Gitlab::Git::User.from_gitlab(user).to_gitaly, + message: message + ) + + response = GitalyClient.call(@repository.storage, :operation_service, :user_merge_to_ref, request) + + if pre_receive_error = response.pre_receive_error.presence + raise Gitlab::Git::PreReceiveError, pre_receive_error + end + + response.commit_id + end + def user_merge_branch(user, source_sha, target_branch, message) request_enum = QueueEnumerator.new response_enum = GitalyClient.call( |