Michael Lai <myllai@xxxxxxxxx> wrote: > I did some additional hacking and may have found a slightly cleaner > way of at least fixing the problems with "git svn fetch". The problem > with the wrong paths being initialized for branches and tags is fairly > minor (since you can just edit the config by hand), so I'll probably > address that later, if I have time. Here's the patch (I hope I'm > doing this right): Hi Michael, Your patch was whitespace damaged and lacked a proposed commit message. Please read Documentation/SubmittingPatches next time. Anyhow, I fixed your patch up a bit. Can you sign-off on it if its right to you or let me know if it's broken? Thanks. >From cddc7e5bde060eb963534156ae0daaf41c87c21a Mon Sep 17 00:00:00 2001 From: Eric Wong <normalperson@xxxxxxxx> Date: Sat, 7 Mar 2009 20:22:29 -0800 Subject: [PATCH] git-svn: support intermediate paths when matching tags/branches MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit For repositories laid out like the following: > [svn-remote "svn"] > url = http://foo.com/svn/repos/bar > fetch = myproject/trunk:refs/remotes/trunk > branches = bar/myproject/branches/*:refs/remotes/* > tags = bar/myproject/tags/*:refs/remotes/tags/* The "bar" component above is considered the intermediate path and was not handled correctly. This patch was originally by Michael Lai (without a commit message) with some minor fixes: * extraneous slash removed from $intermediate_path, this was causing tests to fail. * fixed a case where $intermediate_path could be "0" and considered false by Perl, preventing the necessary slash from being appended. Signed-off-by: Eric Wong <normalperson@xxxxxxxx> --- git-svn.perl | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/git-svn.perl b/git-svn.perl index 959eb52..745dd03 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2351,7 +2351,11 @@ sub match_paths { if (my $path = $paths->{"/$self->{path}"}) { return ($path->{action} eq 'D') ? 0 : 1; } - $self->{path_regex} ||= qr/^\/\Q$self->{path}\E\//; + my $repos_root = $self->ra->{repos_root}; + my $intermediate_path = $self->{url}; + $intermediate_path =~ s#^\Q$repos_root\E(/|$)##; + $intermediate_path .= '/' if length($intermediate_path) > 0; + $self->{path_regex} ||= qr/^\/\Q$intermediate_path$self->{path}\E\//; if (grep /$self->{path_regex}/, keys %$paths) { return 1; } -- Eric Wong -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html