summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2018-02-27 10:33:56 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-02-27 10:33:56 -0800
commit796a788a1c1a2f6a93763312a840d7ed67a8e32f (patch)
tree6cdb37210290324be042c9aa63c62313e3abe52b
parentMerge branch 'rj/sparse-updates' (diff)
parentcheck-ignore: fix mix of directories and other file types (diff)
downloadtgif-796a788a1c1a2f6a93763312a840d7ed67a8e32f.tar.xz
Merge branch 'rs/check-ignore-multi'
"git check-ignore" with multiple paths got confused when one is a file and the other is a directory, which has been fixed. * rs/check-ignore-multi: check-ignore: fix mix of directories and other file types
-rw-r--r--builtin/check-ignore.c3
-rwxr-xr-xt/t0008-ignores.sh20
2 files changed, 22 insertions, 1 deletions
diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c
index 3e280b9c7a..ec9a959e08 100644
--- a/builtin/check-ignore.c
+++ b/builtin/check-ignore.c
@@ -72,7 +72,7 @@ static int check_ignore(struct dir_struct *dir,
{
const char *full_path;
char *seen;
- int num_ignored = 0, dtype = DT_UNKNOWN, i;
+ int num_ignored = 0, i;
struct exclude *exclude;
struct pathspec pathspec;
@@ -104,6 +104,7 @@ static int check_ignore(struct dir_struct *dir,
full_path = pathspec.items[i].match;
exclude = NULL;
if (!seen[i]) {
+ int dtype = DT_UNKNOWN;
exclude = last_exclude_matching(dir, &the_index,
full_path, &dtype);
}
diff --git a/t/t0008-ignores.sh b/t/t0008-ignores.sh
index d27f438bf4..54a4703ef1 100755
--- a/t/t0008-ignores.sh
+++ b/t/t0008-ignores.sh
@@ -775,6 +775,26 @@ test_expect_success PIPE 'streaming support for --stdin' '
echo "$response" | grep "^:: two"
'
+test_expect_success 'existing file and directory' '
+ test_when_finished "rm one" &&
+ test_when_finished "rmdir top-level-dir" &&
+ >one &&
+ mkdir top-level-dir &&
+ git check-ignore one top-level-dir >actual &&
+ grep one actual &&
+ grep top-level-dir actual
+'
+
+test_expect_success 'existing directory and file' '
+ test_when_finished "rm one" &&
+ test_when_finished "rmdir top-level-dir" &&
+ >one &&
+ mkdir top-level-dir &&
+ git check-ignore top-level-dir one >actual &&
+ grep one actual &&
+ grep top-level-dir actual
+'
+
############################################################################
#
# test whitespace handling