"git svn fetch" causes Perl 5.18 or newer to emit "Wide character in setenv" warnings when used in combination with svn.authorsfile with non-ASCII names: Wide character in setenv at /usr/lib64/perl5/vendor_perl/5.20.1/Git/SVN.pm line 969. Wide character in setenv at /usr/lib64/perl5/vendor_perl/5.20.1/Git/SVN.pm line 973. I have no taste of Perl so I do not propose this patch for inclusion, but it fixes this for me.
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm index d9a52a5..2ffebfe 100644 --- a/perl/Git/SVN.pm +++ b/perl/Git/SVN.pm @@ -957,6 +957,17 @@ sub full_pushurl { } } +sub utf8_encode { + my ($s) = @_; + utf8::encode($s); + return $s; +} + +sub UENV { + my ($var, $val) = @_; + $ENV{$var} = utf8_encode($val); +} + sub set_commit_header_env { my ($log_entry) = @_; my %env; @@ -966,13 +977,13 @@ sub set_commit_header_env { } } - $ENV{GIT_AUTHOR_NAME} = $log_entry->{name}; + UENV("GIT_AUTHOR_NAME", $log_entry->{name}); $ENV{GIT_AUTHOR_EMAIL} = $log_entry->{email}; $ENV{GIT_AUTHOR_DATE} = $ENV{GIT_COMMITTER_DATE} = $log_entry->{date}; - $ENV{GIT_COMMITTER_NAME} = (defined $log_entry->{commit_name}) + UENV("GIT_COMMITTER_NAME", (defined $log_entry->{commit_name}) ? $log_entry->{commit_name} - : $log_entry->{name}; + : $log_entry->{name}); $ENV{GIT_COMMITTER_EMAIL} = (defined $log_entry->{commit_email}) ? $log_entry->{commit_email} : $log_entry->{email};