git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/BUG] git-svn: add test for renamed directory fetch
@ 2008-04-03 13:47 Santhosh
  2008-04-03 13:59 ` Santhosh
  0 siblings, 1 reply; 3+ messages in thread
From: Santhosh @ 2008-04-03 13:47 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 2344 bytes --]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-git-svn-add-test-for-renamed-directory-fetch.patch --]
[-- Type: text/x-patch; name=0001-git-svn-add-test-for-renamed-directory-fetch.patch, Size: 2568 bytes --]

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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH/BUG] git-svn: add test for renamed directory fetch
  2008-04-03 13:47 [PATCH/BUG] git-svn: add test for renamed directory fetch Santhosh
@ 2008-04-03 13:59 ` Santhosh
  2008-04-07  7:08   ` [PATCH] git-svn: fix following renamed paths when tracking a single path Eric Wong
  0 siblings, 1 reply; 3+ messages in thread
From: Santhosh @ 2008-04-03 13:59 UTC (permalink / raw)
  To: git

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
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] git-svn: fix following renamed paths when tracking a single path
  2008-04-03 13:59 ` Santhosh
@ 2008-04-07  7:08   ` Eric Wong
  0 siblings, 0 replies; 3+ messages in thread
From: Eric Wong @ 2008-04-07  7:08 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Santhosh, git

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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-04-07  7:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-03 13:47 [PATCH/BUG] git-svn: add test for renamed directory fetch Santhosh
2008-04-03 13:59 ` Santhosh
2008-04-07  7:08   ` [PATCH] git-svn: fix following renamed paths when tracking a single path Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).