git-svn: fix following renamed paths when tracking a single path

When using git-svn to follow only a single (empty) path per
svn-remote (i.e. not using --stdlayout), following the history
of a renamed path was broken in
c586879cdf.

This reverts the regression for the single (emtpy) path per
svn-remote case.

To avoid breaking the tests in a committed revision, this is an
addendum to a patch originally submitted by

  Santhosh Kumar Mani <santhoshmani@gmail.com>:
  > git-svn: add test for renamed directory fetch
  >
  > This test tries to fetch a directory which had renames in the
  > history from a SVN repository.

  [ew: unneccesary dependency on the starting an HTTP server
   removed from Santhosh's original test.]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Eric Wong 2008-04-07 00:08:03 -07:00 committed by Junio C Hamano
parent a1c0dca43a
commit f61cc48d28
3 changed files with 113 additions and 2 deletions

View File

@ -2239,12 +2239,13 @@ sub find_parent_branch {
# just grow a tail if we're not unique enough :x
$ref_id .= '-' while find_ref($ref_id);
print STDERR "Initializing parent: $ref_id\n";
my ($u, $p) = ($new_url, '');
my ($u, $p, $repo_id) = ($new_url, '', $ref_id);
if ($u =~ s#^\Q$url\E(/|$)##) {
$p = $u;
$u = $url;
$repo_id = $self->{repo_id};
}
$gs = Git::SVN->init($u, $p, $self->{repo_id}, $ref_id, 1);
$gs = Git::SVN->init($u, $p, $repo_id, $ref_id, 1);
}
my ($r0, $parent) = $gs->find_rev_before($r, 1);
if (!defined $r0 || !defined $parent) {

View File

@ -0,0 +1,20 @@
#!/bin/sh
#
# Copyright (c) 2008 Santhosh Kumar Mani
test_description='git-svn can fetch renamed directories'
. ./lib-git-svn.sh
test_expect_success 'load repository with renamed directory' "
svnadmin load -q $rawsvnrepo < ../t9121/renamed-dir.dump
"
test_expect_success 'init and fetch repository' "
git svn init $svnrepo/newname &&
git svn fetch
"
test_done

90
t/t9121/renamed-dir.dump Normal file
View File

@ -0,0 +1,90 @@
SVN-fs-dump-format-version: 2
UUID: 06b9b3ad-f546-4fbe-8328-fcb4e6ef5c3f
Revision-number: 0
Prop-content-length: 56
Content-length: 56
K 8
svn:date
V 27
2008-04-02T09:11:59.778557Z
PROPS-END
Revision-number: 1
Prop-content-length: 117
Content-length: 117
K 7
svn:log
V 14
initial import
K 10
svn:author
V 8
santhosh
K 8
svn:date
V 27
2008-04-02T09:13:03.170863Z
PROPS-END
Node-path: name
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10
PROPS-END
Node-path: name/a.txt
Node-kind: file
Node-action: add
Prop-content-length: 71
Text-content-length: 6
Text-content-md5: b1946ac92492d2347c6235b4d2611184
Content-length: 77
K 13
svn:mime-type
V 10
text/plain
K 13
svn:eol-style
V 2
LF
PROPS-END
hello
Revision-number: 2
Prop-content-length: 109
Content-length: 109
K 7
svn:log
V 7
renamed
K 10
svn:author
V 8
santhosh
K 8
svn:date
V 27
2008-04-02T09:14:22.952186Z
PROPS-END
Node-path: newname
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 1
Node-copyfrom-path: name
Node-path: name
Node-action: delete