ls-files: fix path used when recursing into submodules
commit2cfe66a8ee57fb3da18c262db8e6df95e263510b
authorJacob Keller <jacob.keller@gmail.com>
Thu, 13 Apr 2017 17:12:24 +0000 (13 10:12 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Apr 2017 01:01:41 +0000 (18 18:01 -0700)
tree0012929e62af8eee6a24e0795f46333d38a6d72f
parent2e5d6503bdc92260eae9c58b9fd1add7014bb853
ls-files: fix path used when recursing into submodules

Don't assume that the current working directory is the root of the
repository. Correctly generate the path for the recursing child
processes by building it from the work_tree() root instead. Otherwise if
we run ls-files using --git-dir or --work-tree it will not work
correctly as it attempts to change directory into a potentially invalid
location. Best case, it doesn't exist and we produce an error. Worst
case we cd into the wrong location and unknown behavior occurs.

Add a new test which highlights this possibility.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/ls-files.c
t/t3007-ls-files-recurse-submodules.sh