[PATCH] git svn: add an option to recode pathnames
- From
- Dmitry Statyvka <dstatyvka@tmsoft-ltd.kiev.ua>
- Date
- Jul 29, 2009, 09:16 UTC
- Message-ID
- <ylnfxcfdeyq.fsf@tmsoft-ltd.kiev.ua>
Introduce new option 'svn.pathnameenc' that instructs git svn to recode pathnames to given encoding. It's useful for windows users and for those who works in non-utf8 locales, since otherwise they'll have corrupted file names with non-ascii characters.
Signed-off-by: Dmitry Statyvka <dstatyvka@tmsoft-ltd.kiev.ua> --- git-svn.perl | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl index ef1d30d..bdd9af0 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -3343,6 +3343,7 @@ sub new { $self->{absent_dir} = {}; $self->{absent_file} = {}; $self->{gii} = $git_svn->tmp_index_do(sub { Git::IndexInfo->new }); + $self->{pathnameencoding} = Git::config('svn.pathnameenc'); $self; } @@ -3426,6 +3427,10 @@ sub open_directory { sub git_path { my ($self, $path) = @_; + if (my $enc = $self->{pathnameencoding}) { + require Encode; + Encode::from_to($path, 'UTF-8', $enc); + } if ($self->{path_strip}) { $path =~ s!$self->{path_strip}!! or die "Failed to strip path '$path' ($self->{path_strip})\n"; @@ -3814,6 +3819,10 @@ sub split_path { sub repo_path { my ($self, $path) = @_; + if (my $enc = $self->{pathnameencoding}) { + require Encode; + Encode::from_to($path, $enc, 'UTF-8'); + } $self->{path_prefix}.(defined $path ? $path : ''); }
-- 1.6.3.2.1299.gee46c