summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmad Sherif <me@ahmadsherif.com>2017-09-19 13:35:21 +0200
committerAhmad Sherif <me@ahmadsherif.com>2017-09-19 13:35:22 +0200
commit28d95e10a40cd07b4f81148e10bbba73bcf3e69d (patch)
treea9b9a46305ab8ff8cd688a38c932e75a2e5550a8
parent706426d527f682efb56d5bff14419b0572875a33 (diff)
downloadgitlab-ce-fix/gitaly-commit-diff-rpc-encoding-error.tar.gz
Encode paths properly for Gitaly Commit{Diff,Delta}fix/gitaly-commit-diff-rpc-encoding-error
Fixes gitaly#589
-rw-r--r--lib/gitlab/gitaly_client/commit_service.rb2
-rw-r--r--spec/lib/gitlab/gitaly_client/commit_service_spec.rb4
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/gitlab/gitaly_client/commit_service.rb b/lib/gitlab/gitaly_client/commit_service.rb
index 1ba1a7830a4..b536eb1868c 100644
--- a/lib/gitlab/gitaly_client/commit_service.rb
+++ b/lib/gitlab/gitaly_client/commit_service.rb
@@ -221,7 +221,7 @@ module Gitlab
repository: @gitaly_repo,
left_commit_id: parent_id,
right_commit_id: commit.id,
- paths: options.fetch(:paths, [])
+ paths: options.fetch(:paths, []).map { |path| GitalyClient.encode(path) }
}
end
diff --git a/spec/lib/gitlab/gitaly_client/commit_service_spec.rb b/spec/lib/gitlab/gitaly_client/commit_service_spec.rb
index ec3abcb0953..1ef3e2e3a5d 100644
--- a/spec/lib/gitlab/gitaly_client/commit_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/commit_service_spec.rb
@@ -51,6 +51,10 @@ describe Gitlab::GitalyClient::CommitService do
expect(ret).to be_kind_of(Gitlab::GitalyClient::DiffStitcher)
end
+
+ it 'encodes paths correctly' do
+ expect { client.diff_from_parent(commit, paths: ['encoding/test.txt', 'encoding/ใƒ†ใ‚นใƒˆ.txt']) }.not_to raise_error
+ end
end
describe '#commit_deltas' do