Skip to content

Commit

Permalink
tree-walk.c: ignore trailing slash on submodule in tree_entry_interes…
Browse files Browse the repository at this point in the history
…ting()

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>
  • Loading branch information
Nguyễn Thái Ngọc Duy authored and Junio C Hamano committed Jan 23, 2014
1 parent 1649612 commit 74b4f7f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
17 changes: 17 additions & 0 deletions t/t4010-diff-pathspec.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion tree-walk.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit 74b4f7f

Please sign in to comment.