diff --git a/lib/git/diff.rb b/lib/git/diff.rb index d7c0d535..4f3119b8 100644 --- a/lib/git/diff.rb +++ b/lib/git/diff.rb @@ -124,7 +124,8 @@ 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] = defaults.merge({:patch => line, :path => current_file}) diff --git a/lib/git/lib.rb b/lib/git/lib.rb index a0c25de6..c8c106ab 100644 --- a/lib/git/lib.rb +++ b/lib/git/lib.rb @@ -843,7 +843,9 @@ def meets_required_version? ENV_VARIABLE_NAMES = ['GIT_DIR', 'GIT_WORK_TREE', 'GIT_INDEX_FILE', 'GIT_SSH'] 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 # Takes the current git's system ENV variables and store them.