Skip to content

Commit

Permalink
Merge branch 'kb/status-ignored-optim-2' into maint
Browse files Browse the repository at this point in the history
Fix recent regression of .gitignore files that list !directory to
mark it not-ignored.

* kb/status-ignored-optim-2:
  dir.c: fix ignore processing within not-ignored directories
  • Loading branch information
Junio C Hamano committed Jun 10, 2013
2 parents 467b8fe + c3c327d commit fd50030
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
3 changes: 3 additions & 0 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,9 @@ static void prep_exclude(struct dir_struct *dir, const char *base, int baselen)
dir->basebuf, stk->baselen - 1,
dir->basebuf + current, &dt);
dir->basebuf[stk->baselen - 1] = '/';
if (dir->exclude &&
dir->exclude->flags & EXC_FLAG_NEGATIVE)
dir->exclude = NULL;
if (dir->exclude) {
dir->basebuf[stk->baselen] = 0;
dir->exclude_stack = stk;
Expand Down
18 changes: 18 additions & 0 deletions t/t3001-ls-files-others-exclude.sh
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,24 @@ test_expect_success 'negated exclude matches can override previous ones' '
grep "^a.1" output
'

test_expect_success 'excluded directory overrides content patterns' '
git ls-files --others --exclude="one" --exclude="!one/a.1" >output &&
if grep "^one/a.1" output
then
false
fi
'

test_expect_success 'negated directory doesn'\''t affect content patterns' '
git ls-files --others --exclude="!one" --exclude="one/a.1" >output &&
if grep "^one/a.1" output
then
false
fi
'

test_expect_success 'subdirectory ignore (setup)' '
mkdir -p top/l1/l2 &&
(
Expand Down

0 comments on commit fd50030

Please sign in to comment.