v3 builds upon v2 by adding 3 additional patches to add functionality to also propagate the remote and refspec down to children process's working to push submodules. The remote and refspec will only be propagated if the provided remote is configured. A remote provided in the form of a URL will cause the remote and refspec to not be propagated down to the submodules and instead the default remote and refspec will be used, preserving existing functionality. Currently the only supported LHS of a refspec must exactly match a single ref in the submodule (e.g. a branch name). Patches [1/5] and [2/5] remain unchanged from v2. Brandon Williams (5): push: unmark a local variable as static push: propagate push-options with --recurse-submodules remote: expose parse_push_refspec function submodule--helper: add push-check subcommand push: propagate remote and refspec with --recurse-submodules builtin/push.c | 5 +-- builtin/submodule--helper.c | 45 +++++++++++++++++++++++++ remote.c | 2 +- remote.h | 1 + submodule.c | 74 +++++++++++++++++++++++++++++++++++++++--- submodule.h | 5 ++- t/t5531-deep-submodule-push.sh | 52 +++++++++++++++++++++++++++++ t/t5545-push-options.sh | 40 +++++++++++++++++++++++ transport.c | 4 ++- 9 files changed, 219 insertions(+), 9 deletions(-) -- 2.12.2.715.g7642488e1d-goog