diff options
author | Dmitry Statyvka <dstatyvka@tmsoft-ltd.kiev.ua> | 2010-07-30 04:30:13 +0200 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2010-07-30 07:49:21 +0000 |
commit | 3713e2226bcda64513efd537f370ce4d7f767a1e (patch) | |
tree | 7bbdb6d27c5bbea17cfbe6ab0d585b06da543f5b /git-svn.perl | |
parent | 61bf126ecb24977b883079942b71ff96174c19fb (diff) | |
download | git-3713e2226bcda64513efd537f370ce4d7f767a1e.tar.gz |
git svn: add an option to recode pathnames
Introduce a new option 'svn.pathnameencoding' that instructs git svn to
recode pathnames to a given encoding. It can be used by windows users
and by those who work in non-utf8 locales to avoid corrupted file names
with non-ascii characters.
[rp: renamed the option and added manpage documentation]
Signed-off-by: Dmitry Statyvka <dstatyvka@tmsoft-ltd.kiev.ua>
Signed-off-by: Robert Pollak <robert.pollak@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/git-svn.perl b/git-svn.perl index c4163584a9..c92238ece2 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -4050,6 +4050,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.pathnameencoding'); $self; } @@ -4133,6 +4134,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"; @@ -4521,6 +4526,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 : ''); } |