Browse Source

Merge branch 'kb/status-ignored-optim-2'

Fix 1.8.3 regressions in the .gitignore path exclusion logic.

* kb/status-ignored-optim-2:
  dir.c: fix ignore processing within not-ignored directories
maint
Junio C Hamano 12 years ago
parent
commit
3684101a65
  1. 3
      dir.c
  2. 18
      t/t3001-ls-files-others-exclude.sh

3
dir.c

@ -821,6 +821,9 @@ static void prep_exclude(struct dir_struct *dir, const char *base, int baselen) @@ -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;

18
t/t3001-ls-files-others-exclude.sh

@ -175,6 +175,24 @@ test_expect_success 'negated exclude matches can override previous ones' ' @@ -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 &&
(

Loading…
Cancel
Save