Andrej Manduch <amanduch@xxxxxxxxx> wrote: > On 08/03/2014 02:22 PM, Andrej Manduch wrote: > > Nice touch, It works like charm. However unfortunatelly now I think you > > introduced new bug :) Good catch! > > On 08/03/2014 04:45 AM, Eric Wong wrote: > >> sub cmd_info { > >> - my $path = canonicalize_path(defined($_[0]) ? $_[0] : "."); > >> - my $fullpath = canonicalize_path($cmd_dir_prefix . $path); > >> + my $path_arg = defined($_[0]) ? $_[0] : '.'; > >> + my $path = $path_arg; > >> + if ($path =~ m!\A/!) { > >> + my $toplevel = eval { > >> + my @cmd = qw/rev-parse --show-toplevel/; > >> + command_oneline(\@cmd, STDERR => 0); > >> + }; > >> + $path =~ s!\A\Q$toplevel\E/?!!; > > I have problem with this line ^^^ > > > > Suppose your $toplevel is "/sometning" and you type in command line > > something like that: "git svn info /somethingsrc" and as you see this > > should end up with error. However "$path =~ s!\A\Q$toplevel\E/?!!;" > > will just cut "/sometning" from "/somethingsrc" and and up with same > > answer as for "svn git info src" which is not equivalent query. > > > > Second scenario is something which worries me more: If your query look > > like this: "git svn info /something//src" it will just end up with error > > because it will set $path to "/src" witch is outside of repository. > > > > Second scenario can be fixed with this: > > > > Actualy this will be even better: Thanks Andrej. I'll queue that on top of mine. Can you turn that into a proper commit message with Subject? Thanks. (The English-generating part of my brain is too tired) > Signed-off-by: Andrej Manduch <amanduch@xxxxxxxxx> > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -1483,6 +1483,7 @@ sub cmd_info { > my @cmd = qw/rev-parse --show-toplevel/; > command_oneline(\@cmd, STDERR => 0); > }; > + $path = canonicalize_path($path); > $path =~ s!\A\Q$toplevel\E/?!!; > $path = canonicalize_path($path); > } else { > Because this will have not problem with really weird query like: "git > svn info /media/../media/something//src" I've also started working on the following test cases, will squash: diff --git a/t/t9119-git-svn-info.sh b/t/t9119-git-svn-info.sh index 4f6e669..f16f323 100755 --- a/t/t9119-git-svn-info.sh +++ b/t/t9119-git-svn-info.sh @@ -84,6 +84,26 @@ test_expect_success 'info $(pwd)' ' "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" ' +test_expect_success 'info $(pwd)/../___wc' ' + (cd svnwc; svn info "$(pwd)/../svnwc") >expected.info-pwd && + (cd gitwc; git svn info "$(pwd)/../gitwc") >actual.info-pwd && + grep -v ^Path: <expected.info-pwd >expected.info-np && + grep -v ^Path: <actual.info-pwd >actual.info-np && + test_cmp_info expected.info-np actual.info-np && + test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ + "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" + ' + +test_expect_success 'info $(pwd)/../___wc//file' ' + (cd svnwc; svn info "$(pwd)/../svnwc//file") >expected.info-pwd && + (cd gitwc; git svn info "$(pwd)/../gitwc//file") >actual.info-pwd && + grep -v ^Path: <expected.info-pwd >expected.info-np && + grep -v ^Path: <actual.info-pwd >actual.info-np && + test_cmp_info expected.info-np actual.info-np && + test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ + "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" + ' + test_expect_success 'info --url .' ' test "$(cd gitwc; git svn info --url .)" = "$quoted_svnrepo" ' -- 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