Browse Source
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>maint
Eric Wong
18 years ago
committed by
Junio C Hamano
4 changed files with 194 additions and 0 deletions
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2007 Eric Wong |
||||
|
||||
|
||||
test_description='git-svn dcommit can commit renames of files with ugly names' |
||||
|
||||
. ./lib-git-svn.sh |
||||
|
||||
test_expect_success 'load repository with strange names' " |
||||
svnadmin load -q $rawsvnrepo < ../t9115/funky-names.dump && |
||||
start_httpd |
||||
" |
||||
|
||||
test_expect_success 'init and fetch repository' " |
||||
git svn init $svnrepo && |
||||
git svn fetch && |
||||
git reset --hard git-svn |
||||
" |
||||
|
||||
test_expect_success 'create file in existing ugly and empty dir' ' |
||||
mkdir "#{bad_directory_name}" && |
||||
echo hi > "#{bad_directory_name}/ foo" && |
||||
git update-index --add "#{bad_directory_name}/ foo" && |
||||
git commit -m "new file in ugly parent" && |
||||
git svn dcommit |
||||
' |
||||
|
||||
test_expect_success 'rename ugly file' ' |
||||
git mv "#{bad_directory_name}/ foo" "file name with feces" && |
||||
git commit -m "rename ugly file" && |
||||
git svn dcommit |
||||
' |
||||
|
||||
test_expect_success 'rename pretty file' ' |
||||
echo :x > pretty && |
||||
git update-index --add pretty && |
||||
git commit -m "pretty :x" && |
||||
git svn dcommit && |
||||
mkdir regular_dir_name && |
||||
git mv pretty regular_dir_name/pretty && |
||||
git commit -m "moved pretty file" && |
||||
git svn dcommit |
||||
' |
||||
|
||||
test_expect_success 'rename pretty file into ugly one' ' |
||||
git mv regular_dir_name/pretty "#{bad_directory_name}/ booboo" && |
||||
git commit -m booboo && |
||||
git svn dcommit |
||||
' |
||||
|
||||
stop_httpd |
||||
|
||||
test_done |
@ -0,0 +1,103 @@
@@ -0,0 +1,103 @@
|
||||
SVN-fs-dump-format-version: 2 |
||||
|
||||
UUID: 819c44fe-2bcc-4066-88e4-985e2bc0b418 |
||||
|
||||
Revision-number: 0 |
||||
Prop-content-length: 56 |
||||
Content-length: 56 |
||||
|
||||
K 8 |
||||
svn:date |
||||
V 27 |
||||
2007-07-12T07:54:26.062914Z |
||||
PROPS-END |
||||
|
||||
Revision-number: 1 |
||||
Prop-content-length: 152 |
||||
Content-length: 152 |
||||
|
||||
K 7 |
||||
svn:log |
||||
V 44 |
||||
what will those wacky people think of next? |
||||
|
||||
K 10 |
||||
svn:author |
||||
V 12 |
||||
normalperson |
||||
K 8 |
||||
svn:date |
||||
V 27 |
||||
2007-07-12T08:00:05.011573Z |
||||
PROPS-END |
||||
|
||||
Node-path: leading space |
||||
Node-kind: dir |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Content-length: 10 |
||||
|
||||
PROPS-END |
||||
|
||||
|
||||
Node-path: leading space file |
||||
Node-kind: file |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Text-content-length: 5 |
||||
Text-content-md5: e4fa20c67542cdc21271e08d329397ab |
||||
Content-length: 15 |
||||
|
||||
PROPS-END |
||||
ugly |
||||
|
||||
|
||||
Node-path: #{bad_directory_name} |
||||
Node-kind: dir |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Content-length: 10 |
||||
|
||||
PROPS-END |
||||
|
||||
|
||||
Node-path: #{cool_name} |
||||
Node-kind: file |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Text-content-length: 18 |
||||
Text-content-md5: 87dac40ca337dfa3dcc8911388c3ddda |
||||
Content-length: 28 |
||||
|
||||
PROPS-END |
||||
strange name here |
||||
|
||||
|
||||
Node-path: dir name with spaces |
||||
Node-kind: dir |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Content-length: 10 |
||||
|
||||
PROPS-END |
||||
|
||||
|
||||
Node-path: file name with spaces |
||||
Node-kind: file |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Text-content-length: 7 |
||||
Text-content-md5: c1f10cfd640618484a2a475c11410fd3 |
||||
Content-length: 17 |
||||
|
||||
PROPS-END |
||||
spaces |
||||
|
||||
|
||||
Node-path: regular_dir_name |
||||
Node-kind: dir |
||||
Node-action: add |
||||
Prop-content-length: 10 |
||||
Content-length: 10 |
||||
|
||||
PROPS-END |
Loading…
Reference in new issue