> Quite honestly, if repo_submodule_init() can only work with the > "absorbed" form, isn't it simply a bug? > > Two independent (i.e. we can do either or both) things may improve > the situation: > > - allow repo_submodule_init() to work on both forms (in place---no > cheating by calling "absorb" behind user's back). > > - teach "git submodule add" to transition an old-style submodule > into the "absorbed" form (either with an option, or do so by > default with an escape hatch to disable). > > The latter indirectly attacks the "repo_submodule_init() can only > work with absorbed form" issue by making it harder to create a > non-absorbed submodule to begin with. Thanks for taking a look. I took a further look and it doesn't look too difficult to teach repo_submodule_init() to work on both forms (without calling "absorbgitdirs") - I'll send an updated patch set soon. As for "git submodule add" transitioning it into the absorbed form, I'll leave that for someone else to do - although if repo_submodule_init() supports the unabsorbed form now, that is not so urgent to do, I think.