summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-04-21 09:40:48 +0000
committerSean McGivern <sean@mcgivern.me.uk>2017-04-21 09:40:48 +0000
commit38e30516e15826921dcd223fce88eb0e0fc5c578 (patch)
treeb1489b1b8c29ceaa2ac786d6b7bc8764bc544ace
parenta2e4e650bc19c969c02cae36e30d20a71d79130e (diff)
parent71b6a4ba85150c88414f50ac4965cab71021202d (diff)
downloadgitlab-ce-38e30516e15826921dcd223fce88eb0e0fc5c578.tar.gz
Merge branch 'fix/encoding-issue' into 'master'
Fix encoding issue exporting a project Closes #31186 See merge request !10824
-rw-r--r--changelogs/unreleased/fix-encoding-issue.yml4
-rw-r--r--lib/gitlab/git/encoding_helper.rb8
-rw-r--r--spec/lib/gitlab/git/encoding_helper_spec.rb4
3 files changed, 15 insertions, 1 deletions
diff --git a/changelogs/unreleased/fix-encoding-issue.yml b/changelogs/unreleased/fix-encoding-issue.yml
new file mode 100644
index 00000000000..5fa8ab46e72
--- /dev/null
+++ b/changelogs/unreleased/fix-encoding-issue.yml
@@ -0,0 +1,4 @@
+---
+title: Fix encoding issue exporting a project
+merge_request:
+author:
diff --git a/lib/gitlab/git/encoding_helper.rb b/lib/gitlab/git/encoding_helper.rb
index e57d228e688..f918074cb14 100644
--- a/lib/gitlab/git/encoding_helper.rb
+++ b/lib/gitlab/git/encoding_helper.rb
@@ -40,7 +40,13 @@ module Gitlab
def encode_utf8(message)
detect = CharlockHolmes::EncodingDetector.detect(message)
if detect
- CharlockHolmes::Converter.convert(message, detect[:encoding], 'UTF-8')
+ begin
+ CharlockHolmes::Converter.convert(message, detect[:encoding], 'UTF-8')
+ rescue ArgumentError => e
+ Rails.logger.warn("Ignoring error converting #{detect[:encoding]} into UTF8: #{e.message}")
+
+ ''
+ end
else
clean(message)
end
diff --git a/spec/lib/gitlab/git/encoding_helper_spec.rb b/spec/lib/gitlab/git/encoding_helper_spec.rb
index 27bcc241b82..f6ac7b23d1d 100644
--- a/spec/lib/gitlab/git/encoding_helper_spec.rb
+++ b/spec/lib/gitlab/git/encoding_helper_spec.rb
@@ -56,6 +56,10 @@ describe Gitlab::Git::EncodingHelper do
expect(r.encoding.name).to eq('UTF-8')
end
end
+
+ it 'returns empty string on conversion errors' do
+ expect { ext_class.encode_utf8('') }.not_to raise_error(ArgumentError)
+ end
end
describe '#clean' do