diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-09-15 12:41:13 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-09-15 12:41:13 -0700 |
commit | 2e1e96126f93653badaa0afd17204e417dfc8e7d (patch) | |
tree | 3362bf9a25af51705604515307bc87975f6952d0 | |
parent | 0c61c6de3497900616b66a65dc41b27544131ed5 (diff) | |
parent | b294ed637d3c13cd96ba6f0e464e02e170cc54a6 (diff) | |
download | git-2e1e96126f93653badaa0afd17204e417dfc8e7d.tar.gz git-2e1e96126f93653badaa0afd17204e417dfc8e7d.tar.xz |
Merge branch 'dr/maint-ls-tree-prefix-recursion-fix'
* dr/maint-ls-tree-prefix-recursion-fix:
ls-tree $di $dir: do not mistakenly recurse into directories
-rw-r--r-- | builtin/ls-tree.c | 2 | ||||
-rwxr-xr-x | t/t3100-ls-tree-restrict.sh | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c index dc86b0d9a..a8187568b 100644 --- a/builtin/ls-tree.c +++ b/builtin/ls-tree.c @@ -52,6 +52,8 @@ static int show_recursive(const char *base, int baselen, const char *pathname) speclen = strlen(spec); if (speclen <= len) continue; + if (spec[len] && spec[len] != '/') + continue; if (memcmp(pathname, spec, len)) continue; return 1; diff --git a/t/t3100-ls-tree-restrict.sh b/t/t3100-ls-tree-restrict.sh index eee0d344d..81d90b66c 100755 --- a/t/t3100-ls-tree-restrict.sh +++ b/t/t3100-ls-tree-restrict.sh @@ -165,4 +165,13 @@ test_expect_success \ EOF test_output' +test_expect_success \ + 'ls-tree with one path a prefix of the other' \ + 'git ls-tree $tree path2/baz path2/bazbo >current && + make_expected <<\EOF && +040000 tree X path2/baz +120000 blob X path2/bazbo +EOF + test_output' + test_done |