git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/5] git-svn: make test for SVK mirror path import

From
EWEric Wong <normalperson@yhbt.net>
Date
Dec 5, 2006, 08:40 UTC
Message-ID
<20061205084005.GA27236@soma>
In-Reply-To
<20061205051738.16552.8987.stgit@localhost>
Sam Vilain <sam@vilain.net> wrote:
Show 36 quoted lines
> From:  <sam@vilain.net>
> 
> A manual test that sets up a repository that looks like an SVK depot,
> and then imports it to check that it looks like we mirrored the
> 'original' source.
> 
> There is also a minor modification to the git-svn test library shell
> file which sets a variable for the subversion repository's filesystem
> path.
> ---
> 
>  t/lib-git-svn.sh                   |    3 -
>  t/t9107-git-svn-svk-mirrorpaths.sh |   92 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 93 insertions(+), 2 deletions(-)
> 
> diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
> index 63c6703..dffd1fb 100644
> --- a/t/lib-git-svn.sh
> +++ b/t/lib-git-svn.sh
> @@ -45,6 +45,5 @@ else
>  	svnadmin create "$svnrepo"
>  fi
>  
> +rawsvnrepo="$svnrepo"
>  svnrepo="file://$svnrepo"
> -
> -
> diff --git a/t/t9107-git-svn-svk-mirrorpaths.sh b/t/t9107-git-svn-svk-mirrorpaths.sh
> new file mode 100755
> index 0000000..130e786
> --- /dev/null
> +++ b/t/t9107-git-svn-svk-mirrorpaths.sh
> @@ -0,0 +1,92 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2006 Eric Wong
Huh? I didn't write this test.
Show 20 quoted lines
> +test_description='git-svn on SVK mirror paths'
> +. ./lib-git-svn.sh
> +
> +if test -n "$GIT_SVN_NO_LIB" && test "$GIT_SVN_NO_LIB" -ne 0
> +then
> +	echo 'Skipping: only implemented with SVN libraries'
> +	test_done
> +	exit 0
> +fi
> +
> +# ok, people who don't have SVK installed probably don't care about
> +# this test.
> +
> +# we set up the repository manually, because even if SVK is installed
> +# it is difficult to use it in a way that is idempotent.
> +
> +# we are not yet testing merge tickets..
> +
> +uuid=b00bface-b1ff-c0ff-f0ff-b0bafe775e1e 
> +url=https://really.slow.server.com/foobar 
I had to use --whitespace=strip with git-am above.
> +test_expect_success 'multi-fetch an SVK mirror path' "git-svn multi-fetch"

I had to use the following patch to get the multi-fetch test to pass with GIT_SVN_DELTA_FETCH=1. (I discovered it while running make -C t full-svn-test)

Is it safe to assume that svk-mirrored URLs will _always_ be file://? If so, then the delta fetching code should never be needed.

--- a/git-svn.perl
+++ b/git-svn.perl
@@ -3017,8 +3017,7 @@ sub libsvn_fetch_delta {
 	my $ed = SVN::Git::Fetcher->new({ c => $last_commit, q => $_q });
 	my $reporter = $SVN->do_update($rev, '', 1, $ed, $pool);
 	my @lock = $SVN::Core::VERSION ge '1.2.0' ? (undef) : ();
-	my (undef, $last_rev, undef) = cmt_metadata($last_commit);
-	$reporter->set_path('', $last_rev, 0, @lock, $pool);
+	$reporter->set_path('', ($rev - 1), 0, @lock, $pool);
 	$reporter->finish_report($pool);
 	$pool->clear;
 	unless ($ed->{git_commit_ok}) {

Also, unconditionally setting ($rev - 1) in the above patch disables the
ability to do squashed history[1] imports (not sure if anybody cares about
them, though).

[1] - like shallow clone, but shallow in the middle of history

> +test_expect_success 'got tag history OK' "test \`git-log --pretty=oneline remotes/tags/blah-1.0 | wc -l \` = 3"

But the above test breaks this one...
Previous: Sam VilainNext: Jakub Narebski
Message 10 of 11 in “git-svn: make test for SVK mirror path import”
  1. 1/5 git-svn: make test for SVK mirror path importSam Vilain, Dec 5, 2006
  2. 4/5 git-svn: collect revision properties when fetchingSam Vilain, Dec 5, 2006
  3. 5/5 git-svn: re-map repository URLs and UUIDs on SVK mirror pathsSam Vilain, Dec 5, 2006
  4. Eric WongDec 5, 2006
  5. Sam VilainDec 7, 2006
  6. Eric WongDec 7, 2006
  7. git-svn: use do_switch for --follow-parent if the SVN library supports itEric Wong, Dec 8, 2006
  8. 2/5 git-svn: let libsvn_ls_fullurl return properties tooSam Vilain, Dec 5, 2006
  9. 3/5 git-svn: collect SVK source URL on mirror pathsSam Vilain, Dec 5, 2006
  10. Eric WongDec 5, 2006
  11. Jakub NarebskiDec 5, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.