On Tue, Oct 04, 2016 at 11:08:33AM -0700, Stefan Beller wrote: > On Tue, Oct 4, 2016 at 11:04 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Jeff King <peff@xxxxxxxx> writes: > > > >> Actually, I like that a bit better. It would not cover the case where > >> you have not actually checked out any of the submodules (or at least not > >> called "submodule init", I guess?). But arguably that is a sign that the > >> auto-recurse behavior should not be kicking in anyway. > > > > Yeah, the "no init, no recursion" line of thought is very sensible. > > I like it. > > Bear in mind that "submodule init" only fuzzes around with .git/config. > It doesn't touch .git/modules (i.e. cloning/fetching), that is to be done > with the update command. > > So if we also want to cover the case of init'd submodules, but not > cloned/checked out submodules, we'd rather want to consult .git/config > whether there is any submodule.* option set, though that seems more > expensive than just checking for files inside the modules directory. Consulting .git/config is fine, I think. It's not like we don't read it (sometimes multiple times!) during the normal course of the program anyway. It's just a question of whether it makes more sense for the heuristic to kick in after "init", or only after "update". I don't know enough to have an opinion. -Peff