On Fri, Jan 20, 2017 at 12:00 PM, Jeff King <peff@xxxxxxxx> wrote: > On Fri, Jan 20, 2017 at 11:53:01AM -0800, Stefan Beller wrote: > >> > One alternative would be to make the check cheaper. Could we reliably >> > tell from the submodule.foo.* block in the config that path "foo" is a >> > submodule? I think that would work after "submodule init" but not right >> > after "git clone". So the index really is the source of truth there. >> >> Well we can check if there is a .gitmodules file that has a >> submodule.*.path equal to the last part of $CWD, no need to look >> at the git config. >> >> And that would also work right after git clone (in an >> unpopulated/uninitialized submodule as I call it). >> >> And in my current understanding of submodules the check in >> .gitmodules ought to be enough, too. > > Yeah, that probably makes sense. You can have a gitlink without a > .gitmodules file, but I don't quite know what that would mean in terms > of submodules (I guess it's not a submodule but "something else"). yeah, I agree it could be git series[1] at work, or as you said "something else", and we have no idea what to do. I think this could actually be implemented top-down, because the check is cheap as we're beginning with lstat(.gitmodules), and no further pursue checking this corner case in case the .gitmodules is not found. I'll see if I can make a patch that passes the test suite. [1] https://github.com/git-series/git-series/blob/master/INTERNALS.md > > -Peff