threads / patch / 7723

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

Subject: [PATCH] git-svn: don't allow globs to match regular files

## tl;dr

3 messages between Apr 18, 2007 and Apr 18, 2007. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Eric Wong· Apr 18, 2007, 07:17 UTC · lore

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>
---
 Junio: this can go in maint
 git-svn.perl |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Show changes to git-svn.perl +2 −0
diff --git a/git-svn.perl b/git-svn.perl
index 4d3c453..efc4c88 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -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);
-- 
Eric Wong
Junio C Hamano· Apr 18, 2007, 07:45 UTC · re: Eric Wong · lore

Re: [PATCH] git-svn: don't allow globs to match regular files

Eric Wong <normalperson@yhbt.net> writes:
Show 8 quoted lines
> 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?
Eric Wong· Apr 18, 2007, 07:53 UTC · re: Junio C Hamano · lore

Re: [PATCH] git-svn: don't allow globs to match regular files

Junio C Hamano <junkio@cox.net> wrote:
Show 12 quoted lines
> Eric Wong <normalperson@yhbt.net> writes:
> 
> > 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?

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/*
Show 6 quoted 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. 
-- 
Eric Wong

← back to recent threads