From c7fb35af1a99d6cb21656d2abc8c871aa365c51c Mon Sep 17 00:00:00 2001 From: Jatin Ganhotra Date: Mon, 10 Nov 2014 00:03:58 -0600 Subject: [PATCH 1/2] Fix the encoding issue - 'split': invalid byte sequence in UTF-8 (ArgumentError) --- lib/git/diff.rb | 3 ++- lib/git/lib.rb | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/git/diff.rb b/lib/git/diff.rb index 52189ea8..dddaee02 100644 --- a/lib/git/diff.rb +++ b/lib/git/diff.rb @@ -118,7 +118,8 @@ def cache_stats def process_full_diff final = {} current_file = nil - @full_diff.split("\n").each do |line| + full_diff_utf8_encoded = @full_diff.encode("UTF-8", "binary", invalid: :replace, undef: :replace) + full_diff_utf8_encoded.split("\n").each do |line| if m = /diff --git a\/(.*?) b\/(.*?)/.match(line) current_file = m[1] final[current_file] = {:patch => line, :path => current_file, diff --git a/lib/git/lib.rb b/lib/git/lib.rb index 03b19995..580b3941 100644 --- a/lib/git/lib.rb +++ b/lib/git/lib.rb @@ -730,7 +730,9 @@ def meets_required_version? private def command_lines(cmd, opts = [], chdir = true, redirect = '') - command(cmd, opts, chdir).split("\n") + cmd_op = command(cmd, opts, chdir) + op = cmd_op.encode("UTF-8", "binary", invalid: :replace, undef: :replace) + op.split("\n") end def command(cmd, opts = [], chdir = true, redirect = '', &block) From c05431c60e57880bb627a13fc1483b6f61d426ab Mon Sep 17 00:00:00 2001 From: Jatin Ganhotra Date: Sun, 11 Jan 2015 14:15:12 -0600 Subject: [PATCH 2/2] Using the Ruby 1.8 hash rocket syntax --- lib/git/diff.rb | 2 +- lib/git/lib.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/git/diff.rb b/lib/git/diff.rb index dddaee02..12c3ef7f 100644 --- a/lib/git/diff.rb +++ b/lib/git/diff.rb @@ -118,7 +118,7 @@ def cache_stats def process_full_diff final = {} current_file = nil - full_diff_utf8_encoded = @full_diff.encode("UTF-8", "binary", invalid: :replace, undef: :replace) + full_diff_utf8_encoded = @full_diff.encode("UTF-8", "binary", :invalid => "replace", :undef => "replace") full_diff_utf8_encoded.split("\n").each do |line| if m = /diff --git a\/(.*?) b\/(.*?)/.match(line) current_file = m[1] diff --git a/lib/git/lib.rb b/lib/git/lib.rb index 580b3941..472a2a7e 100644 --- a/lib/git/lib.rb +++ b/lib/git/lib.rb @@ -731,7 +731,7 @@ def meets_required_version? def command_lines(cmd, opts = [], chdir = true, redirect = '') cmd_op = command(cmd, opts, chdir) - op = cmd_op.encode("UTF-8", "binary", invalid: :replace, undef: :replace) + op = cmd_op.encode("UTF-8", "binary", :invalid => "replace", :undef => "replace") op.split("\n") end