Just a few brief comments, before reading the patches carefully.
* It is somewhat surprising that [1/5] is even needed (in other
words, I would have expected something like this to be already
there, and my knee-jerk reaction was "Heh, how does 'git status'
know how to show submodules that are and are not initialized
differently without this?"
The implementation that reads from the config of the current
repository may be OK, but I actually would have expected that a
check would be "given a $path, check to see if $path/.git is
there and is a valid repository". In a repository where the
submodules originate, there may not even be submodule.$name.url
entries there yet.
* It is somewhat surprising that [4/5] does not even use the
previous ls-files to find out the paths. Also it is a bit
disappointing to see that the way processes are spawned and
managed does not share much with Stefan's earlier work, i.e.
run_processes_parallel(). I was somehow hoping that it can be
extended to support this use case, but apparently there aren't
much to be shared.
Thanks.