Code

git-svn: don't allow globs to match regular files
authorEric Wong <normalperson@yhbt.net>
Wed, 18 Apr 2007 07:17:33 +0000 (00:17 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 18 Apr 2007 19:39:04 +0000 (12:39 -0700)
git only tracks the histories of full directories, not
that of individual files.  Sometimes, SVN users will
place[1] a regular file in the directory designated
for subdirectories of branches or tags.

Thanks to jrockway on #git for pointing this out.

[1] mistakenly or otherwise, such as a README

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/RelNotes-1.5.1.1.txt
git-svn.perl

index 3054b5a3f003ad7a223d10910917a99ed4a76fd0..91471213bdec8d95209db256f594b0e1b3f3ec2a 100644 (file)
@@ -59,3 +59,7 @@ Fixes since v1.5.1
 
   - git-svn dcommit and rebase was confused by patches that were
     merged from another branch that is managed by git-svn.
+
+  - git-svn used to get confused when globbing remote branch/tag
+    spec (e.g. "branches = proj/branches/*:refs/remotes/origin/*")
+    is used and there was a plain file that matched the glob.
index 4d3c453bf2154f78f89d27b0526916808af1cddb..efc4c88a4ea158bd630a6f53a8346e344b360ed6 100755 (executable)
@@ -3162,6 +3162,8 @@ sub match_globs {
                        my $p = $1;
                        my $pathname = $g->{path}->full_path($p);
                        next if $exists->{$pathname};
+                       next if ($self->check_path($pathname, $r) !=
+                                $SVN::Node::dir);
                        $exists->{$pathname} = Git::SVN->init(
                                              $self->{url}, $pathname, undef,
                                              $g->{ref}->full_path($p), 1);