diff options
author | Eric Wong <normalperson@yhbt.net> | 2007-07-15 21:53:50 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-15 22:35:09 -0700 |
commit | 29633bb91c7bcff31ff3bb59378709e3e3ef627d (patch) | |
tree | 7700524f5e9ec236d533e355f7e2ef712850fca1 /git-svn.perl | |
parent | 99c01de402b543647a6500ceeaca7f62e343b144 (diff) | |
download | git-29633bb91c7bcff31ff3bb59378709e3e3ef627d.tar.gz |
git-svn: fix commiting renames over DAV with funky file names
Renaming files with non-URI friendly characters caused
breakage when committing to DAV repositories (over http(s)).
Even if I try leaving out the $self->{url} from the return value
of url_path(), a partial (without host), unescaped path name
does not work.
Filenames for DAV repos need to be URI-encoded before being
passed to the library. Since this bug did not affect file://
and svn:// repos, the git-svn test library needed to be expanded
to include support for starting Apache with mod_dav_svn enabled.
This new test is not enabled by default, but can be enabled by
setting SVN_HTTPD_PORT to any available TCP/IP port on
127.0.0.1.
Additionally, for running this test, the following variables
(with defaults shown) can be changed for the suitable system.
The default values are set for Debian systems:
SVN_HTTPD_MODULE_PATH=/usr/lib/apache2/modules
SVN_HTTPD_PATH=/usr/sbin/apache2
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/git-svn.perl b/git-svn.perl index 299b40f938..01c3904271 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2724,6 +2724,9 @@ sub repo_path { sub url_path { my ($self, $path) = @_; + if ($self->{url} =~ m#^https?://#) { + $path =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg; + } $self->{url} . '/' . $self->repo_path($path); } |