[PATCH 1/1] Tried to fix git-svn's handling of filenames with embedded '@'.
- From
Seth Falcon <sethfalcon@gmail.com>
- Date
- May 28, 2006, 18:15 UTC
- Message-ID
- <m2verqkobr.fsf@ziti.fhcrc.org>
- In-Reply-To
- <m21wuem2xj.fsf@ziti.fhcrc.org>
svn has trouble parsing files with embedded '@' characters. For example,
svn propget svn:keywords foo@bar.c svn: Syntax error parsing revision 'bar.c'
I asked about this on #svn and the workaround suggested was to append an explicit revision specifier:
svn propget svn:keywords foo@bar.c@BASE
This patch appends '@BASE' to the filename in all calls to 'svn propget'. --- contrib/git-svn/git-svn.perl | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/contrib/git-svn/git-svn.perl b/contrib/git-svn/git-svn.perl index b3e0684..498ffe0 100755 --- a/contrib/git-svn/git-svn.perl +++ b/contrib/git-svn/git-svn.perl @@ -336,7 +336,7 @@ sub show_ignore { my %ign; File::Find::find({wanted=>sub{if(lstat $_ && -d _ && -d "$_/.svn"){ s#^\./##; - @{$ign{$_}} = safe_qx(qw(svn propget svn:ignore),$_); + @{$ign{$_}} = safe_qx(qw(svn propget svn:ignore),$_ . "\@BASE"); }}, no_chdir=>1},'.'); print "\n# /\n"; @@ -860,7 +860,7 @@ sub sys { system(@_) == 0 or croak $? } sub eol_cp { my ($from, $to) = @_; - my $es = safe_qx(qw/svn propget svn:eol-style/, $to); + my $es = safe_qx(qw/svn propget svn:eol-style/, $to . "\@BASE"); open my $rfd, '<', $from or croak $!; binmode $rfd or croak $!; open my $wfd, '>', $to or croak $!; @@ -898,7 +898,8 @@ sub do_update_index { while (my $x = <$p>) { chomp $x; if (!$no_text_base && lstat $x && ! -l _ && - safe_qx(qw/svn propget svn:keywords/,$x)) { + safe_qx(qw/svn propget svn:keywords/, + $x . "\@BASE")) { my $mode = -x _ ? 0755 : 0644; my ($v,$d,$f) = File::Spec->splitpath($x); my $tb = File::Spec->catfile($d, '.svn', 'tmp',
-- 1.3.3.gb931