Merge branch 'gitaly-commit-patch' into 'master'
Incorporate DiffService.CommitPatch Gitaly RPC Closes gitaly#463 See merge request !13441
This commit is contained in:
commit
d546f7d36e
5 changed files with 45 additions and 4 deletions
2
Gemfile
2
Gemfile
|
@ -401,7 +401,7 @@ group :ed25519 do
|
|||
end
|
||||
|
||||
# Gitaly GRPC client
|
||||
gem 'gitaly', '~> 0.29.0'
|
||||
gem 'gitaly', '~> 0.30.0'
|
||||
|
||||
gem 'toml-rb', '~> 0.3.15', require: false
|
||||
|
||||
|
|
|
@ -275,7 +275,7 @@ GEM
|
|||
po_to_json (>= 1.0.0)
|
||||
rails (>= 3.2.0)
|
||||
gherkin-ruby (0.3.2)
|
||||
gitaly (0.29.0)
|
||||
gitaly (0.30.0)
|
||||
google-protobuf (~> 3.1)
|
||||
grpc (~> 1.0)
|
||||
github-linguist (4.7.6)
|
||||
|
@ -1019,7 +1019,7 @@ DEPENDENCIES
|
|||
gettext (~> 3.2.2)
|
||||
gettext_i18n_rails (~> 1.8.0)
|
||||
gettext_i18n_rails_js (~> 1.2.0)
|
||||
gitaly (~> 0.29.0)
|
||||
gitaly (~> 0.30.0)
|
||||
github-linguist (~> 4.7.0)
|
||||
gitlab-flowdock-git-hook (~> 1.0.1)
|
||||
gitlab-markup (~> 1.5.1)
|
||||
|
|
|
@ -271,7 +271,13 @@ module Gitlab
|
|||
#
|
||||
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/324
|
||||
def to_diff
|
||||
rugged_diff_from_parent.patch
|
||||
Gitlab::GitalyClient.migrate(:commit_patch) do |is_enabled|
|
||||
if is_enabled
|
||||
@repository.gitaly_commit_client.patch(id)
|
||||
else
|
||||
rugged_diff_from_parent.patch
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Returns a diff object for the changes from this commit's first parent.
|
||||
|
|
|
@ -194,6 +194,16 @@ module Gitlab
|
|||
response.commit
|
||||
end
|
||||
|
||||
def patch(revision)
|
||||
request = Gitaly::CommitPatchRequest.new(
|
||||
repository: @gitaly_repo,
|
||||
revision: GitalyClient.encode(revision)
|
||||
)
|
||||
response = GitalyClient.call(@repository.storage, :diff_service, :commit_patch, request)
|
||||
|
||||
response.sum(&:data)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def commit_diff_request_params(commit, options = {})
|
||||
|
|
|
@ -140,4 +140,29 @@ describe Gitlab::GitalyClient::CommitService do
|
|||
described_class.new(repository).find_commit(revision)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#patch' do
|
||||
let(:request) do
|
||||
Gitaly::CommitPatchRequest.new(
|
||||
repository: repository_message, revision: revision
|
||||
)
|
||||
end
|
||||
let(:response) { [double(data: "my "), double(data: "diff")] }
|
||||
|
||||
subject { described_class.new(repository).patch(revision) }
|
||||
|
||||
it 'sends an RPC request' do
|
||||
expect_any_instance_of(Gitaly::DiffService::Stub).to receive(:commit_patch)
|
||||
.with(request, kind_of(Hash)).and_return([])
|
||||
|
||||
subject
|
||||
end
|
||||
|
||||
it 'concatenates the responses data' do
|
||||
allow_any_instance_of(Gitaly::DiffService::Stub).to receive(:commit_patch)
|
||||
.with(request, kind_of(Hash)).and_return(response)
|
||||
|
||||
expect(subject).to eq("my diff")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue