tree_entry_interesting(): optimize wildcard matching when base is matched
[gitweb.git] / tree-walk.c
index ae7ac1a9f29a074bbd4a03d335510188e1f72452..7596716cf0dc9bdd7af28778d193b0fd42f20a11 100644 (file)
@@ -595,6 +595,20 @@ int tree_entry_interesting(const struct name_entry *entry,
                                        match + baselen, matchlen - baselen,
                                        &never_interesting))
                                return 1;
+
+                       if (ps->items[i].has_wildcard) {
+                               if (!fnmatch(match + baselen, entry->path, 0))
+                                       return 1;
+
+                               /*
+                                * Match all directories. We'll try to
+                                * match files later on.
+                                */
+                               if (ps->recursive && S_ISDIR(entry->mode))
+                                       return 1;
+                       }
+
+                       continue;
                }
 
 match_wildcards: