Skip to contentSkip to conversation

git-svn: don't allow globs to match regular files

PATCH In review Eric Wong 2 participants 3 messages Jun 15, 2016

lore
Share & tools
lore

Eric Wong

author
#0 lore raw

PATCH 1/1 git-svn: don't allow globs to match regular files

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

---

Junio: this can go in maint

 git-svn.perl |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
git-svn.perl +2 -0
index 4d3c453..efc4c88 100755
@@ -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);
Signature · 1 line
Eric Wong
#1 lore raw
Quoted 8 lines · Eric Wong

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

It is not clear what this "glob" means to me. Enlightenment?

My cursory reading of the code is that you are grabbing things under branches/ and tags/, expecting each of what you would find there is the whole-tree of a revision, and do not want to see any regular file immediately underneath branches/ and tags/.

Is that what is happening here?

author
#2 lore raw
Quoted 7 lines · Junio C Hamano
Quoted 5 lines · Eric Wong

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.

Quoted 5 lines
Quoted 3 lines

Thanks to jrockway on #git for pointing this out.

[1] mistakenly or otherwise, such as a README

It is not clear what this "glob" means to me. Enlightenment?

Basically I can define an [svn-remote] in the config much in the same way that a native git [remote] is defined:

[svn-remote "svn"]
url = svn://svn.debian.org/svn/pkg-glibc branches = glibc-package/branches/*:refs/remotes/* tags = glibc-package/tags/*:refs/remotes/tags/*

Quoted 6 lines

My cursory reading of the code is that you are grabbing things under branches/ and tags/, expecting each of what you would find there is the whole-tree of a revision, and do not want to see any regular file immediately underneath branches/ and tags/.

Is that what is happening here?

Yes.

Signature · 1 line
Eric Wong