diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2014-01-23 20:22:05 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-01-23 13:03:00 -0800 |
commit | 74b4f7f27736f3e196a4eb3db41c68e37a6e2160 (patch) | |
tree | b2d5a0308b3d200eb5e869cc27a2b1f6ec321493 | |
parent | 1649612a227eaa5af7cb0e2d059728c0148485d9 (diff) | |
download | git-74b4f7f27736f3e196a4eb3db41c68e37a6e2160.tar.gz git-74b4f7f27736f3e196a4eb3db41c68e37a6e2160.tar.xz |
tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting()
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-x | t/t4010-diff-pathspec.sh | 17 | ||||
-rw-r--r-- | tree-walk.c | 2 |
2 files changed, 18 insertions, 1 deletions
diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh index af5134b70..15a491295 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 680afda06..c29b6a3a5 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; } |