Make sure we're passing ASCII-8BIT to Gitaly
when counting commit count.
This commit is contained in:
parent
b472411efb
commit
b33e7281ff
3 changed files with 30 additions and 2 deletions
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Fix encoding issue when counting commit count
|
||||||
|
merge_request: 16637
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -125,11 +125,11 @@ module Gitlab
|
||||||
def commit_count(ref, options = {})
|
def commit_count(ref, options = {})
|
||||||
request = Gitaly::CountCommitsRequest.new(
|
request = Gitaly::CountCommitsRequest.new(
|
||||||
repository: @gitaly_repo,
|
repository: @gitaly_repo,
|
||||||
revision: ref
|
revision: encode_binary(ref)
|
||||||
)
|
)
|
||||||
request.after = Google::Protobuf::Timestamp.new(seconds: options[:after].to_i) if options[:after].present?
|
request.after = Google::Protobuf::Timestamp.new(seconds: options[:after].to_i) if options[:after].present?
|
||||||
request.before = Google::Protobuf::Timestamp.new(seconds: options[:before].to_i) if options[:before].present?
|
request.before = Google::Protobuf::Timestamp.new(seconds: options[:before].to_i) if options[:before].present?
|
||||||
request.path = options[:path] if options[:path].present?
|
request.path = encode_binary(options[:path]) if options[:path].present?
|
||||||
request.max_count = options[:max_count] if options[:max_count].present?
|
request.max_count = options[:max_count] if options[:max_count].present?
|
||||||
|
|
||||||
GitalyClient.call(@repository.storage, :commit_service, :count_commits, request, timeout: GitalyClient.medium_timeout).count
|
GitalyClient.call(@repository.storage, :commit_service, :count_commits, request, timeout: GitalyClient.medium_timeout).count
|
||||||
|
|
|
@ -131,6 +131,29 @@ describe Gitlab::GitalyClient::CommitService do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#commit_count' do
|
||||||
|
before do
|
||||||
|
expect_any_instance_of(Gitaly::CommitService::Stub)
|
||||||
|
.to receive(:count_commits)
|
||||||
|
.with(gitaly_request_with_path(storage_name, relative_path),
|
||||||
|
kind_of(Hash))
|
||||||
|
.and_return([])
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sends a commit_count message' do
|
||||||
|
client.commit_count(revision)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with UTF-8 params strings' do
|
||||||
|
let(:revision) { "branch\u011F" }
|
||||||
|
let(:path) { "foo/\u011F.txt" }
|
||||||
|
|
||||||
|
it 'handles string encodings correctly' do
|
||||||
|
client.commit_count(revision, path: path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#find_commit' do
|
describe '#find_commit' do
|
||||||
let(:revision) { '4b825dc642cb6eb9a060e54bf8d69288fbee4904' }
|
let(:revision) { '4b825dc642cb6eb9a060e54bf8d69288fbee4904' }
|
||||||
it 'sends an RPC request' do
|
it 'sends an RPC request' do
|
||||||
|
|
Loading…
Reference in a new issue