summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2014-01-23 20:22:05 +0700
committerJunio C Hamano <gitster@pobox.com>2014-01-23 13:03:00 -0800
commit74b4f7f27736f3e196a4eb3db41c68e37a6e2160 (patch)
treeb2d5a0308b3d200eb5e869cc27a2b1f6ec321493
parent1649612a227eaa5af7cb0e2d059728c0148485d9 (diff)
downloadgit-nd/negative-pathspec.tar.gz
tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting()nd/negative-pathspec
We do ignore trailing slash on a directory, so pathspec "abc/" matches directory "abc". A submodule is also a directory. Apply the same logic to it. This makes "git log submodule-path" and "git log submodule-path/" produce the same output. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t4010-diff-pathspec.sh17
-rw-r--r--tree-walk.c2
2 files changed, 18 insertions, 1 deletions
diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh
index af5134b70c..15a491295e 100755
--- a/t/t4010-diff-pathspec.sh
+++ b/t/t4010-diff-pathspec.sh
@@ -110,4 +110,21 @@ test_expect_success 'diff-tree -r with wildcard' '
test_cmp expected result
'
+test_expect_success 'setup submodules' '
+ test_tick &&
+ git init submod &&
+ ( cd submod && test_commit first; ) &&
+ git add submod &&
+ git commit -m first &&
+ ( cd submod && test_commit second; ) &&
+ git add submod &&
+ git commit -m second
+'
+
+test_expect_success 'diff-tree ignores trailing slash on submodule path' '
+ git diff --name-only HEAD^ HEAD submod >expect &&
+ git diff --name-only HEAD^ HEAD submod/ >actual &&
+ test_cmp expect actual
+'
+
test_done
diff --git a/tree-walk.c b/tree-walk.c
index 680afda060..c29b6a3a56 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -543,7 +543,7 @@ static int match_entry(const struct pathspec_item *item,
if (matchlen > pathlen) {
if (match[pathlen] != '/')
return 0;
- if (!S_ISDIR(entry->mode))
+ if (!S_ISDIR(entry->mode) && !S_ISGITLINK(entry->mode))
return 0;
}