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 directoriesmaint
commit
3684101a65
3
dir.c
3
dir.c
|
@ -821,6 +821,9 @@ static void prep_exclude(struct dir_struct *dir, const char *base, int baselen)
|
||||||
dir->basebuf, stk->baselen - 1,
|
dir->basebuf, stk->baselen - 1,
|
||||||
dir->basebuf + current, &dt);
|
dir->basebuf + current, &dt);
|
||||||
dir->basebuf[stk->baselen - 1] = '/';
|
dir->basebuf[stk->baselen - 1] = '/';
|
||||||
|
if (dir->exclude &&
|
||||||
|
dir->exclude->flags & EXC_FLAG_NEGATIVE)
|
||||||
|
dir->exclude = NULL;
|
||||||
if (dir->exclude) {
|
if (dir->exclude) {
|
||||||
dir->basebuf[stk->baselen] = 0;
|
dir->basebuf[stk->baselen] = 0;
|
||||||
dir->exclude_stack = stk;
|
dir->exclude_stack = stk;
|
||||||
|
|
|
@ -175,6 +175,24 @@ test_expect_success 'negated exclude matches can override previous ones' '
|
||||||
grep "^a.1" output
|
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)' '
|
test_expect_success 'subdirectory ignore (setup)' '
|
||||||
mkdir -p top/l1/l2 &&
|
mkdir -p top/l1/l2 &&
|
||||||
(
|
(
|
||||||
|
|
Loading…
Reference in New Issue