Thread (3 messages) flat view 3 messages, 2 authors, 2016-09-20

Re: [PATCH v2] ls-files: add pathspec matching for submodules

From: Brandon Williams <hidden>
Date: 2016-09-20 21:03:11

quoted
quoted
+
+     if (item->flags & PATHSPEC_ONESTAR) {
+             return WM_MATCH;
+     } else if (item->magic & PATHSPEC_GLOB) {
+             return wildmatch(pattern, string,
+                              WM_PATHNAME |
+                              (item->magic & PATHSPEC_ICASE ?
+                               WM_CASEFOLD : 0),
+                              NULL);
Isn't this last one overly tight?  I am wondering about a scenario
where you have a submodule at "sub/" in the superproject, and "sub/"
has a "file" at the top of its working tree.  And you do:

        git ls-files --recurse-submodules ':(glob)??b/fi?e'

at the top of the superproject.  The "pattern" would be '??b/fi?e"
while string would be 'sub', and wildmatch() would not like it, but
there is no way for this caller to append anything to 'sub' before
making this call, as it hasn't looked into what paths appear in the
submodule repository (and it should not want to).  And I think we
would want it to recurse to find sub/file.  IOW, this looks like a
false negative we must avoid in this function.  As we cannot afford
to check if anything that matches 'fi?e' is in the index file of the
submodule repository, we shouldn't try to match 'fi?e' portion of
the given pathspec pattern.
good point.  Let me think about this some more.
On a similar but slightly different note.  In general do we want the
pathspec '??b' to
match against the sib/ directory and subsequently have ls-files print
all entries inside
of the sib/ directory?  (this is in the non-recursive case)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help