* [BUG] git-svn fails to rename files with %20 in filename
@ 2011-02-21 10:12 Will Palmer
2011-02-21 12:31 ` Jeff King
2011-02-21 15:26 ` Steven Scott
0 siblings, 2 replies; 6+ messages in thread
From: Will Palmer @ 2011-02-21 10:12 UTC (permalink / raw)
To: git
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:
#!/bin/bash
temp="$(mktemp -t -d 'git-svn.XXXXXXXXXX')"
[ -n "$temp" ] || { echo "Failed to create temporary directory" >&2;
exit 1; }
function _cleanup(){
rm -rf "$temp"
}
trap _cleanup INT EXIT
cd "$temp" || exit 1
set -x
svnadmin create svn-repos &&
svn co file://$PWD/svn-repos svn-wc &&
cd svn-wc &&
touch 'foo%20bar' &&
svn add 'foo%20bar' &&
svn ci -m 'add foo%20bar' &&
cd .. &&
git svn clone file://$PWD/svn-repos git-wc &&
cd git-wc &&
git mv 'foo%20bar' 'foo-bar' &&
git commit -m 's/%20/-/ in filename' &&
git svn dcommit # BUG HERE
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [BUG] git-svn fails to rename files with %20 in filename
2011-02-21 10:12 [BUG] git-svn fails to rename files with %20 in filename Will Palmer
@ 2011-02-21 12:31 ` Jeff King
2011-02-22 16:50 ` Will Palmer
2011-02-21 15:26 ` Steven Scott
1 sibling, 1 reply; 6+ messages in thread
From: Jeff King @ 2011-02-21 12:31 UTC (permalink / raw)
To: Will Palmer; +Cc: Eric Wong, git
On Mon, Feb 21, 2011 at 10:12:24AM +0000, Will Palmer wrote:
> 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
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [BUG] git-svn fails to rename files with %20 in filename
2011-02-21 10:12 [BUG] git-svn fails to rename files with %20 in filename Will Palmer
2011-02-21 12:31 ` Jeff King
@ 2011-02-21 15:26 ` Steven Scott
1 sibling, 0 replies; 6+ messages in thread
From: Steven Scott @ 2011-02-21 15:26 UTC (permalink / raw)
To: Will Palmer; +Cc: git
On Mon, Feb 21, 2011 at 5:12 AM, Will Palmer <wmpalmer@gmail.com> wrote:
> 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
This is the same issue I've been seeing (except that the %20 is in a
parent directory on the SVN server). It makes using git-svn fraught
with danger, since I never know when I'm going to be unable to checkin
days' worth of git commits.
--
Steven Scott
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [BUG] git-svn fails to rename files with %20 in filename
2011-02-21 12:31 ` Jeff King
@ 2011-02-22 16:50 ` Will Palmer
2011-02-23 10:04 ` Jeff King
0 siblings, 1 reply; 6+ messages in thread
From: Will Palmer @ 2011-02-22 16:50 UTC (permalink / raw)
To: Jeff King; +Cc: Eric Wong, git
On Mon, 2011-02-21 at 07:31 -0500, Jeff King wrote:
> On Mon, Feb 21, 2011 at 10:12:24AM +0000, Will Palmer wrote:
>
> > 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
Unless I've got my line-numbers mixed up, the commit which introduced
the https-specific encoding behaviour,
29633bb91c git-svn: fix commiting renames over DAV with funky file names
seems to be of the opinion that the bug did not effect file:// and
svn:// URLs. Has something changed?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [BUG] git-svn fails to rename files with %20 in filename
2011-02-22 16:50 ` Will Palmer
@ 2011-02-23 10:04 ` Jeff King
2011-03-02 15:27 ` Steven Scott
0 siblings, 1 reply; 6+ messages in thread
From: Jeff King @ 2011-02-23 10:04 UTC (permalink / raw)
To: Will Palmer; +Cc: Eric Wong, git
On Tue, Feb 22, 2011 at 04:50:15PM +0000, Will Palmer wrote:
> > 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. :)
> >
>
> Unless I've got my line-numbers mixed up, the commit which introduced
> the https-specific encoding behaviour,
> 29633bb91c git-svn: fix commiting renames over DAV with funky file names
>
> seems to be of the opinion that the bug did not effect file:// and
> svn:// URLs. Has something changed?
Yeah, what we are seeing definitely contradicts that commit. It's been
3.5 years; maybe something was tweaked in the subversion library? I
tried reading the code, but I got lost amidst all of the nasty perl
bindings. I couldn't find anything relevant in svn's changelog or in
google, either.
-Peff
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [BUG] git-svn fails to rename files with %20 in filename
2011-02-23 10:04 ` Jeff King
@ 2011-03-02 15:27 ` Steven Scott
0 siblings, 0 replies; 6+ messages in thread
From: Steven Scott @ 2011-03-02 15:27 UTC (permalink / raw)
To: Jeff King; +Cc: Will Palmer, Eric Wong, git
On Wed, Feb 23, 2011 at 5:04 AM, Jeff King <peff@peff.net> wrote:
>
> On Tue, Feb 22, 2011 at 04:50:15PM +0000, Will Palmer wrote:
>
> > > 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. :)
> > >
> >
> > Unless I've got my line-numbers mixed up, the commit which introduced
> > the https-specific encoding behaviour,
> > 29633bb91c git-svn: fix commiting renames over DAV with funky file names
> >
> > seems to be of the opinion that the bug did not effect file:// and
> > svn:// URLs. Has something changed?
>
> Yeah, what we are seeing definitely contradicts that commit. It's been
> 3.5 years; maybe something was tweaked in the subversion library? I
> tried reading the code, but I got lost amidst all of the nasty perl
> bindings. I couldn't find anything relevant in svn's changelog or in
> google, either.
>
In my case, I *was* using http://, and applying that patch (to remove
the HTTP check) didn't work. Same error as earlier in the thread. I
thought it worked once, but I eventually saw it fail again. git-svn is
definitely broken if the URL has a %20 in it, and it's quite useless
when you never know when you'll be unable to dcommit and manually have
to generate patches and apply them to a svn repository.
Thankfully I got my team to switch to git, so best of luck to the rest
of you trying to use git-svn when a doofus put a space in the URL :)
--
Steven Scott
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-03-02 15:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-21 10:12 [BUG] git-svn fails to rename files with %20 in filename Will Palmer
2011-02-21 12:31 ` Jeff King
2011-02-22 16:50 ` Will Palmer
2011-02-23 10:04 ` Jeff King
2011-03-02 15:27 ` Steven Scott
2011-02-21 15:26 ` Steven Scott
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).