dir: fix COLLECT_IGNORED on excluded prefixes
authorJeff King <peff@peff.net>
Thu, 11 Mar 2010 07:15:43 +0000 (02:15 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Mar 2010 07:23:08 +0000 (23:23 -0800)
commit29209cbe58e7a977ae7267b11da19250b6878028
tree9470bc7d55ace7fa7d876d8ff6ebee9e5edb053c
parent0d7c2430ab0e25ab973f4b3cf1fae1f22de82fb2
dir: fix COLLECT_IGNORED on excluded prefixes

As we walk the directory tree, if we see an ignored path, we
want to add it to the ignored list only if it matches any
pathspec that we were given. We used to check for the
pathspec to appear explicitly. E.g., if we see "subdir/file"
and it is excluded, we check to see if we have "subdir/file"
in our pathspec.

However, this interacts badly with the optimization to avoid
recursing into ignored subdirectories. If "subdir" as a
whole is ignored, then we never recurse, and consider only
whether "subdir" itself is in our pathspec.  It would not
match a pathspec of "subdir/file" explicitly, even though it
is the reason that subdir/file would be excluded.

This manifests itself to the user as "git add subdir/file"
failing to correctly note that the pathspec was ignored.

This patch extends the in_pathspec logic to include prefix
directory case.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
dir.c