On 11/22, Brandon Williams wrote:
> On 11/22, Junio C Hamano wrote:
> > Brandon Williams <bmw...@google.com> writes:
> > 
> > > diff --git a/tree-walk.c b/tree-walk.c
> > > index 828f435..ff77605 100644
> > > --- a/tree-walk.c
> > > +++ b/tree-walk.c
> > > @@ -1004,6 +1004,19 @@ static enum interesting do_match(const struct 
> > > name_entry *entry,
> > >                            */
> > >                           if (ps->recursive && S_ISDIR(entry->mode))
> > >                                   return entry_interesting;
> > > +
> > > +                         /*
> > > +                          * When matching against submodules with
> > > +                          * wildcard characters, ensure that the entry
> > > +                          * at least matches up to the first wild
> > > +                          * character.  More accurate matching can then
> > > +                          * be performed in the submodule itself.
> > > +                          */
> > > +                         if (ps->recursive && S_ISGITLINK(entry->mode) &&
> > > +                             !ps_strncmp(item, match + baselen,
> > > +                                         entry->path,
> > > +                                         item->nowildcard_len - baselen))
> > > +                                 return entry_interesting;
> > >                   }
> > 
> > This one (and the other hunk) feels more correct than the previous
> > round.  One thing to keep in mind however is that ps->recursive is
> > about "do we show a tree as a tree aka 040000, or do we descend into
> > it to show its contents?", not about "do we recurse into submodules?",
> > AFAICT.
> > 
> > So this change may have an impact on "git ls-tree -r" with pathspec;
> > I offhand do not know if that impact is undesirable or not.  A test
> > or two may be in order to illustrate what happens?  With a submodule
> > at "sub/module", running "git ls-tree -r HEAD -- sub/module/*" or
> > something like that, perhaps?
> 
> Maybe unrelated, but it looks like wildcard characters are overridden in
> ls-tree.c per '170260ae'.  As such wildmatching just doesn't work with
> ls-tree.  so `git ls-tree -r HEAD -- "*"` results in no hits.

Wrong commit.  Its this one (f0096c06bcdeb7aa6ae8a749ddc9d6d4a2c381d1)
that disabled wildmatching since it is 'plumbing'

-- 
Brandon Williams

Reply via email to