Re: [BUG] git-svn fails to rename files with %20 in filename
- From
Jeff King <peff@peff.net>
- Date
- Feb 21, 2011, 12:31 UTC
- Message-ID
- <20110221123115.GB23033@sigill.intra.peff.net>
- In-Reply-To
- <1298283144.2772.7.camel@wpalmer.simply-domain>
On Mon, Feb 21, 2011 at 10:12:24AM +0000, Will Palmer wrote:
Show 11 quoted lines
> Someone accidentally checked some files containing "%20" in their names > into our svn repository, which is accessed with either svn or git-svn > depending on the developer. > When I attempted to correct this by renaming the file, I received (on > dcommit): > Filesystem has no item: File not found: revision 1, path > '/theBeginningOfTheOriginalFileName theRestOfTheOriginalFilename' > at /home/wpalmer/libexec/git-core/git-svn line 576 > > A recipe for reproducing this bug is as follows: > [...]
Thanks for the thorough test case. It seems to pass for me if with this applied:
diff --git a/git-svn.perl b/git-svn.perl index 177dd25..7daf63c 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -4556,9 +4556,7 @@ 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; - } + $path =~ s!([^~a-zA-Z0-9_./-])!uc sprintf("%%%02x",ord($1))!eg; $self->{url} . '/' . $self->repo_path($path); } IOW, it looks like the path we hand to svn needs url-encoding even for the local case (which make sense, as it is a file:// url). But I know nothing about svn, so probably I am breaking some other weird non-url local case. :) -Peff