You can find the first iteration of this series as part of this thread: http://public-inbox.org/git/%3C20160914173124.GA7613@sandbox%3E/ All mentioned issues should be fixed. I dropped the last patch which was the cause of the broken tests. This should optimize every part of this test to a nice speed if you are pushing to a remote. The only case that is still broken/slow as hell is when calling push with a direct url. I am thinking whether we should maybe error out with a "not implemented" message or something and mention that --recurse-submoules does not work with direct urls? But we might want to have another look at performance with this patch included. Maybe it is actually useable with the last patch included which was not yet on pu. Cheers Heiko Heiko Voigt (3): serialize collection of changed submodules serialize collection of refs that contain submodule changes batch check whether submodule needs pushing into one call submodule.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++-------------- submodule.h | 5 +-- transport.c | 29 ++++++++++----- 3 files changed, 114 insertions(+), 36 deletions(-) -- 2.10.1.637.g09b28c5