Browse Source

git-svn: Always create a new RA when calling do_switch for svn://

Not doing so caused the "Malformed network data" error when a directoy
was deleted and replaced with a copy from an older version.

Signed-off-by: Alec Berryman <alec@thened.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Alec Berryman 17 years ago committed by Junio C Hamano
parent
commit
ad0a82bae0
  1. 25
      git-svn.perl
  2. 22
      t/t9126-git-svn-follow-deleted-readded-directory.sh
  3. 201
      t/t9126/follow-deleted-readded.dump

25
git-svn.perl

@ -3969,20 +3969,19 @@ sub gs_do_switch { @@ -3969,20 +3969,19 @@ sub gs_do_switch {
my $old_url = $full_url;
$full_url .= '/' . escape_uri_only($path) if length $path;
my ($ra, $reparented);
if ($old_url ne $full_url) {
if ($old_url !~ m#^svn(\+ssh)?://#) {
SVN::_Ra::svn_ra_reparent($self->{session}, $full_url,
$pool);
$self->{url} = $full_url;
$reparented = 1;
} else {
$_[0] = undef;
$self = undef;
$RA = undef;
$ra = Git::SVN::Ra->new($full_url);
$ra_invalid = 1;
}

if ($old_url =~ m#^svn(\+ssh)?://#) {
$_[0] = undef;
$self = undef;
$RA = undef;
$ra = Git::SVN::Ra->new($full_url);
$ra_invalid = 1;
} elsif ($old_url ne $full_url) {
SVN::_Ra::svn_ra_reparent($self->{session}, $full_url, $pool);
$self->{url} = $full_url;
$reparented = 1;
}

$ra ||= $self;
my $reporter = $ra->do_switch($rev_b, '', 1, $url_b, $editor, $pool);
my @lock = $SVN::Core::VERSION ge '1.2.0' ? (undef) : ();

22
t/t9126-git-svn-follow-deleted-readded-directory.sh

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
#!/bin/sh
#
# Copyright (c) 2008 Alec Berryman

test_description='git svn fetch repository with deleted and readded directory'

. ./lib-git-svn.sh

# Don't run this by default; it opens up a port.
require_svnserve

test_expect_success 'load repository' '
svnadmin load -q "$rawsvnrepo" < "$TEST_DIRECTORY"/t9126/follow-deleted-readded.dump
'

test_expect_success 'fetch repository' '
start_svnserve &&
git svn init svn://127.0.0.1:$SVNSERVE_PORT &&
git svn fetch
'

test_done

201
t/t9126/follow-deleted-readded.dump

@ -0,0 +1,201 @@ @@ -0,0 +1,201 @@
SVN-fs-dump-format-version: 2

UUID: 1807dc6f-c693-4cda-9710-00e1be8c1f21

Revision-number: 0
Prop-content-length: 56
Content-length: 56

K 8
svn:date
V 27
2008-09-14T19:53:13.006748Z
PROPS-END

Revision-number: 1
Prop-content-length: 111
Content-length: 111

K 7
svn:log
V 12
Create trunk
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:13.239689Z
PROPS-END

Node-path: trunk
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10

PROPS-END


Revision-number: 2
Prop-content-length: 119
Content-length: 119

K 7
svn:log
V 20
Create trunk/project
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:13.548860Z
PROPS-END

Node-path: trunk/project
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10

PROPS-END


Revision-number: 3
Prop-content-length: 111
Content-length: 111

K 7
svn:log
V 12
add new file
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:15.433630Z
PROPS-END

Node-path: trunk/project/foo
Node-kind: file
Node-action: add
Prop-content-length: 10
Text-content-length: 4
Text-content-md5: d3b07384d113edec49eaa6238ad5ff00
Content-length: 14

PROPS-END
foo


Revision-number: 4
Prop-content-length: 116
Content-length: 116

K 7
svn:log
V 17
change foo to bar
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:17.339884Z
PROPS-END

Node-path: trunk/project/foo
Node-kind: file
Node-action: change
Text-content-length: 4
Text-content-md5: c157a79031e1c40f85931829bc5fc552
Content-length: 4

bar


Revision-number: 5
Prop-content-length: 114
Content-length: 114

K 7
svn:log
V 15
don't like that
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:19.335001Z
PROPS-END

Node-path: trunk/project
Node-action: delete


Revision-number: 6
Prop-content-length: 110
Content-length: 110

K 7
svn:log
V 11
reset trunk
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:19.845897Z
PROPS-END

Node-path: trunk/project
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 4
Node-copyfrom-path: trunk/project


Revision-number: 7
Prop-content-length: 113
Content-length: 113

K 7
svn:log
V 14
change to quux
K 10
svn:author
V 4
alec
K 8
svn:date
V 27
2008-09-14T19:53:21.367947Z
PROPS-END

Node-path: trunk/project/foo
Node-kind: file
Node-action: change
Text-content-length: 5
Text-content-md5: d3b07a382ec010c01889250fce66fb13
Content-length: 5

quux


Loading…
Cancel
Save