git svn: the branch command no longer needs the full path
authorEric Wong <normalperson@yhbt.net>
Sat, 25 Jul 2009 08:36:06 +0000 (01:36 -0700)
committerEric Wong <normalperson@yhbt.net>
Sat, 25 Jul 2009 11:09:43 +0000 (04:09 -0700)
This was introduced in 0b2af457a49e3b00d47d556d5301934d27909db8
("Fix branch detection when repository root is inaccessible")
but reintroduced in the previous commit.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl
t/t9141-git-svn-multiple-branches.sh

index 10b77ad34c1103fc8dd390db9937496e41716fdf..9808597a1879a509eb9b896d46d0e69c252786f8 100755 (executable)
@@ -666,9 +666,22 @@ sub cmd_branch {
                        }
                }
                unless (defined $glob) {
-                       die "Unknown ",
-                           $_tag ? "tag" : "branch",
-                           " destination $_branch_dest\n";
+                       my $dest_re = qr/\b\Q$_branch_dest\E\b/;
+                       foreach my $g (@{$allglobs}) {
+                               $g->{path}->{left} =~ /$dest_re/ or next;
+                               if (defined $glob) {
+                                       die "Ambiguous destination: ",
+                                           $_branch_dest, "\nmatches both '",
+                                           $glob->{path}->{left}, "' and '",
+                                           $g->{path}->{left}, "'\n";
+                               }
+                               $glob = $g;
+                       }
+                       unless (defined $glob) {
+                               die "Unknown ",
+                                   $_tag ? "tag" : "branch",
+                                   " destination $_branch_dest\n";
+                       }
                }
        }
        my ($lft, $rgt) = @{ $glob->{path} }{qw/left right/};
index cb9a6d229d24a4f4af062642d07660c5701429f6..3cd06718eb552794e04afe0860d0fc1e187eed66 100755 (executable)
@@ -99,22 +99,22 @@ test_expect_success 'Multiple branch or tag paths require -d' '
 
 test_expect_success 'create new branches and tags' '
        ( cd git_project &&
-               git svn branch -m "New branch 1" -d project/b_one New1 ) &&
+               git svn branch -m "New branch 1" -d b_one New1 ) &&
        ( cd svn_project &&
                svn_cmd up && test -e b_one/New1/a.file ) &&
 
        ( cd git_project &&
-               git svn branch -m "New branch 2" -d project/b_two New2 ) &&
+               git svn branch -m "New branch 2" -d b_two New2 ) &&
        ( cd svn_project &&
                svn_cmd up && test -e b_two/New2/a.file ) &&
 
        ( cd git_project &&
-               git svn branch -t -m "New tag 1" -d project/tags_A Tag1 ) &&
+               git svn branch -t -m "New tag 1" -d tags_A Tag1 ) &&
        ( cd svn_project &&
                svn_cmd up && test -e tags_A/Tag1/a.file ) &&
 
        ( cd git_project &&
-               git svn tag -m "New tag 2" -d project/tags_B Tag2 ) &&
+               git svn tag -m "New tag 2" -d tags_B Tag2 ) &&
        ( cd svn_project &&
                svn_cmd up && test -e tags_B/Tag2/a.file )
 '