init, clone: support --separate-git-dir for .git file
[gitweb.git] / builtin / grep.c
index c3af8760cc778b4eb835d4fb543f45aa333b214c..eaf8560a520bd8aac4fa62394378b444116d6226 100644 (file)
@@ -40,8 +40,7 @@ enum work_type {WORK_SHA1, WORK_FILE};
  * threads. The producer adds struct work_items to 'todo' and the
  * consumers pick work items from the same array.
  */
-struct work_item
-{
+struct work_item {
        enum work_type type;
        char *name;
 
@@ -626,6 +625,10 @@ static int grep_directory(struct grep_opt *opt, const struct pathspec *pathspec)
 
        fill_directory(&dir, pathspec->raw);
        for (i = 0; i < dir.nr; i++) {
+               const char *name = dir.entries[i]->name;
+               int namelen = strlen(name);
+               if (!match_pathspec_depth(pathspec, name, namelen, 0, NULL))
+                       continue;
                hit |= grep_file(opt, dir.entries[i]->name);
                if (hit && opt->status_only)
                        break;