From: Stefan Date: Mon, 24 Feb 2020 07:03:15 GMT Subject: Bug: 'git ls-files' doesn't work on submodule in post-commit hook Message-ID: Hey there, I think I found a bug in git: I want to use 'git ls-files' onto a git submodule, called in a post-commit hook of main repository, which doesn’t work. The same call in a post-checkout hook works perfectly. Example setup to try it out, use a empty (temporary) folder: --- snipp --- mkdir git-submodulerepo cd git-submodulerepo git init git config user.email "you@example.com" git config user.name "Your Name" echo "nothing" > submodule_file.txt git add submodule_file.txt git commit submodule_file.txt -m "Add my file" cd ..   mkdir git-repo cd git-repo git init git config user.email "you@example.com" git config user.name "Your Name" echo "nothing" > rubbish.txt git add rubbish.txt git commit rubbish.txt -m "Add my rubbish"   git submodule add ../git-submodulerepo   printf '#!/bin/bash\ncd git-submodulerepo\necho Git says my files are:\ngit ls-files\necho ---------------\necho Filesystem says my files are:\nls -w1\necho ---------------\n' > .git/hooks/post-commit chmod +x .git/hooks/post-commit cp .git/hooks/post-commit .git/hooks/post-checkout chmod +x .git/hooks/post-checkout --- snapp --- So 'git ls-files' call in post-checkout hook works: $ git checkout HEAD A       .gitmodules A       git-submodulerepo Git says my files are: submodule_file.txt --------------- Filesystem says my files are: submodule_file.txt ---------------   A 'git ls-files' in post-commit doesn’t work: $  echo nothing >> rubbish.txt && git commit rubbish.txt -m "Add just rubbish" Git says my files are: --------------- Filesystem says my files are: submodule_file.txt --------------- [master e05efb1] just rubbish 1 file changed, 1 insertion(+)   This was tested using git version 2.25.0.windows.1 With git version 2.21.0 (cygwin) git ls-files outputs "fatal: .git/index: index file open failed: Not a directory" I didn’t test other hooks. Calling "git ls-files" in hook for your main repository (and not a submodule) works for both cases. I checked for basic things (I'm in submodule directory in both hooks), so I guess this is a bug in git. Any questions? Thanks in advance! Stefan