Fix 'git add' with .gitignore
authorJunio C Hamano <junkio@cox.net>
Fri, 29 Dec 2006 19:01:31 +0000 (11:01 -0800)
committerJunio C Hamano <junkio@cox.net>
Fri, 29 Dec 2006 19:01:31 +0000 (11:01 -0800)
commit4d06f8ac4389ed8bcd2d03b2dcab4b7e2a858402
tree4e3a5a96d5a74f7d9e3e93f7489b8a51fb2da779
parentc889763bf33e9b54843dc93ba3bb38803f86a6cf
Fix 'git add' with .gitignore

When '*.ig' is ignored, and you have two files f.ig and d.ig/foo
in the working tree,

$ git add .

correctly ignored f.ig but failed to ignore d.ig/foo.  This was
caused by a thinko in an earlier commit 4888c534, when we tried
to allow adding otherwise ignored files.

After reverting that commit, this takes a much simpler approach.
When we have an unmatched pathspec that talks about an existing
pathname, we know it is an ignored path the user tried to add,
so we include it in the set of paths directory walker returned.

This does not let you say "git add -f D" on an ignored directory
D and add everything under D.  People can submit a patch to
further allow it if they want to, but I think it is a saner
behaviour to require explicit paths to be spelled out in such a
case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-add.c
dir.c
dir.h
t/t3700-add.sh