threads / patch / 12974

patchgit-svn: add test for renamed directory fetch

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

## tl;dr

3 messages between Apr 3, 2008 and Apr 7, 2008. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Santhosh· Apr 3, 2008, 13:47 UTC · lore
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
Show changes to 2 files +113 −0

t/t9121-git-svn-fetch-renamed-dir.sh, 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· Apr 3, 2008, 13:59 UTC · re: Santhosh · lore

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

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:
Show 138 quoted lines
> 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· Apr 7, 2008, 07:08 UTC · re: Santhosh · lore

[PATCH] 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 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
Show changes to 3 files +113 −2

git-svn.perl, t/t9121-git-svn-fetch-renamed-dir.sh, 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

← back to recent threads