Browse Source

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>
maint
Eric Wong 17 years ago committed by Junio C Hamano
parent
commit
f61cc48d28
  1. 5
      git-svn.perl
  2. 20
      t/t9121-git-svn-fetch-renamed-dir.sh
  3. 90
      t/t9121/renamed-dir.dump

5
git-svn.perl

@ -2239,12 +2239,13 @@ sub find_parent_branch { @@ -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) {

20
t/t9121-git-svn-fetch-renamed-dir.sh

@ -0,0 +1,20 @@ @@ -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

@ -0,0 +1,90 @@ @@ -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


Loading…
Cancel
Save