# [PATCH/BUG] git-svn: add test for renamed directory fetch

3 messages from 2008-04-03 to 2008-04-07. Participants: Santhosh, Eric Wong.
Thread: https://gitlist.dev/t/12974

## Santhosh, 2008-04-03 13:47

Subject: [PATCH/BUG] git-svn: add test for renamed directory fetch
Message-ID: <3bc895b00804030647o652e432cqb5a90eafbac906b2@mail.gmail.com>
URL: https://gitlist.dev/e/3bc895b00804030647o652e432cqb5a90eafbac906b2%40mail.gmail.com

```
This test tries to fetch a directory which had renames in the history from a
SVN repository.
---
 t/t9121-git-svn-fetch-renamed-dir.sh |   23 +++++++++
 t/t9121/renamed-dir.dump             |   90 ++++++++++++++++++++++++++++++++++
 2 files changed, 113 insertions(+), 0 deletions(-)
 create mode 100755 t/t9121-git-svn-fetch-renamed-dir.sh
 create mode 100644 t/t9121/renamed-dir.dump

diff --git a/t/t9121-git-svn-fetch-renamed-dir.sh
b/t/t9121-git-svn-fetch-renamed-dir.sh
new file mode 100755
index 0000000..5cd65a6
--- /dev/null
+++ b/t/t9121-git-svn-fetch-renamed-dir.sh
@@ -0,0 +1,23 @@
+#!/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 &&
+	start_httpd
+	"
+
+test_expect_success 'init and fetch repository' "
+	git svn init $svnrepo/newname &&
+	git svn fetch
+	"
+
+stop_httpd
+
+test_done
+
diff --git a/t/t9121/renamed-dir.dump b/t/t9121/renamed-dir.dump
new file mode 100644
index 0000000..5f9127b
--- /dev/null
+++ b/t/t9121/renamed-dir.dump
@@ -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
+
+
-- 
1.5.5.rc3.dirty


From 30fa29a45be3b8c0f470c0ac55f820a48e53a938 Mon Sep 17 00:00:00 2001
From: Santhosh Kumar Mani <santhoshmani@gmail.com>
Date: Thu, 3 Apr 2008 15:40:15 +0530
Subject: [PATCH] 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.
---
 t/t9121-git-svn-fetch-renamed-dir.sh |   23 +++++++++
 t/t9121/renamed-dir.dump             |   90 ++++++++++++++++++++++++++++++++++
 2 files changed, 113 insertions(+), 0 deletions(-)
 create mode 100755 t/t9121-git-svn-fetch-renamed-dir.sh
 create mode 100644 t/t9121/renamed-dir.dump

diff --git a/t/t9121-git-svn-fetch-renamed-dir.sh b/t/t9121-git-svn-fetch-renamed-dir.sh
new file mode 100755
index 0000000..5cd65a6
--- /dev/null
+++ b/t/t9121-git-svn-fetch-renamed-dir.sh
@@ -0,0 +1,23 @@
+#!/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 &&
+	start_httpd
+	"
+
+test_expect_success 'init and fetch repository' "
+	git svn init $svnrepo/newname &&
+	git svn fetch
+	"
+
+stop_httpd
+
+test_done
+
diff --git a/t/t9121/renamed-dir.dump b/t/t9121/renamed-dir.dump
new file mode 100644
index 0000000..5f9127b
--- /dev/null
+++ b/t/t9121/renamed-dir.dump
@@ -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
+
+
-- 
1.5.5.rc3.dirty


```

## Santhosh, 2008-04-03 13:59

Subject: Re: [PATCH/BUG] git-svn: add test for renamed directory fetch
Message-ID: <3bc895b00804030659p21dcae2av2cad3db41935fa4e@mail.gmail.com>
URL: https://gitlist.dev/e/3bc895b00804030659p21dcae2av2cad3db41935fa4e%40mail.gmail.com
In-Reply-To: <3bc895b00804030647o652e432cqb5a90eafbac906b2@mail.gmail.com>

```
git svn init svn://zzz/trunk/yyy (/some/path/with/rename/history)
git svn fetch

results in the following error if the "path" being fetched was renamed
in the past.

branch_from: /xxx => /xxx/trunk/yyy
Found possible branch point: svn://xxx/trunk/yyy => svn://zzz/trunk/yyy, 7
Initializing parent: git-svn@7
svn-remote.svn.url already set: svn://zzz/trunk/yyy
wanted to set to: svn://xxx/trunk/yyy

The above patch (testcase) exposes this bug. It seems to have been
introduced in the commit "c586879cdfa4f8181a14e953a9152a4639eef333".
Reverting this patch fixes this bug.

Regards,
Santhosh.

On Thu, Apr 3, 2008 at 7:17 PM, Santhosh <santhoshmani@gmail.com> wrote:
> This test tries to fetch a directory which had renames in the history from a
>  SVN repository.
>  ---
>   t/t9121-git-svn-fetch-renamed-dir.sh |   23 +++++++++
>   t/t9121/renamed-dir.dump             |   90 ++++++++++++++++++++++++++++++++++
>   2 files changed, 113 insertions(+), 0 deletions(-)
>   create mode 100755 t/t9121-git-svn-fetch-renamed-dir.sh
>   create mode 100644 t/t9121/renamed-dir.dump
>
>  diff --git a/t/t9121-git-svn-fetch-renamed-dir.sh
>  b/t/t9121-git-svn-fetch-renamed-dir.sh
>  new file mode 100755
>  index 0000000..5cd65a6
>  --- /dev/null
>  +++ b/t/t9121-git-svn-fetch-renamed-dir.sh
>  @@ -0,0 +1,23 @@
>  +#!/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 &&
>  +       start_httpd
>  +       "
>  +
>  +test_expect_success 'init and fetch repository' "
>  +       git svn init $svnrepo/newname &&
>  +       git svn fetch
>  +       "
>  +
>  +stop_httpd
>  +
>  +test_done
>  +
>  diff --git a/t/t9121/renamed-dir.dump b/t/t9121/renamed-dir.dump
>  new file mode 100644
>  index 0000000..5f9127b
>  --- /dev/null
>  +++ b/t/t9121/renamed-dir.dump
>  @@ -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
>  +
>  +
>  --
>  1.5.5.rc3.dirty
>

```

## Eric Wong, 2008-04-07 07:08

Subject: [PATCH] git-svn: fix following renamed paths when tracking a single path
Message-ID: <20080407070803.GA7736@soma>
URL: https://gitlist.dev/e/20080407070803.GA7736%40soma
In-Reply-To: <3bc895b00804030659p21dcae2av2cad3db41935fa4e@mail.gmail.com>

```
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
c586879cdfa4f8181a14e953a9152a4639eef333.

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>
---

 Thanks Santhosh!

 git-svn.perl                         |    5 +-
 t/t9121-git-svn-fetch-renamed-dir.sh |   20 ++++++++
 t/t9121/renamed-dir.dump             |   90 ++++++++++++++++++++++++++++++++++
 3 files changed, 113 insertions(+), 2 deletions(-)
 create mode 100755 t/t9121-git-svn-fetch-renamed-dir.sh
 create mode 100644 t/t9121/renamed-dir.dump

diff --git a/git-svn.perl b/git-svn.perl
index 1b44cbe..81afb5c 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -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) {
diff --git a/t/t9121-git-svn-fetch-renamed-dir.sh b/t/t9121-git-svn-fetch-renamed-dir.sh
new file mode 100755
index 0000000..5143ed6
--- /dev/null
+++ b/t/t9121-git-svn-fetch-renamed-dir.sh
@@ -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
+
diff --git a/t/t9121/renamed-dir.dump b/t/t9121/renamed-dir.dump
new file mode 100644
index 0000000..5f9127b
--- /dev/null
+++ b/t/t9121/renamed-dir.dump
@@ -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
+
+
-- 
Eric Wong

```
