Subject: Bug? push --recurse-submodules=on-demandd not really recursive

From: Pedro Rodrigues <[email-masked]>
Date: Sat, 05 Sep 2015 09:31:03 +0100

Yesterday I was discussing this in on G+, which lead me to conclude 
this is actually a bug (or, at least, a very good improvement).

When you run push --recurse-submodules=on-demand, according to the push 
manpage you would expect any submodule commit missing on it's default 
remote to be pushed aswell. But this only works for the submodules of 
the repo you run it in, it does not work in nested submodules (hence 
not being recursive at all).

I could (with my very little understanding of C) confirm this in the 
source code, and the boils down to the function push_submodule on file 
transport.c explicitly calling push without any params, where I would 
expect it to call with --recurse-submodules=on-demand when done so on 
the parent repo (and then it will actually be trully recursive).

Any thoughts?