Currently when git-fetch is asked to recurse into submodules, it dispatches
a plain "git-fetch -C <submodule-dir>" (and some submodule related options
such as prefix and recusing strategy, but) without any information of the
remote or the tip that should be fetched.
This works surprisingly well in some workflows, not so well in others,
which this series aims to fix.
The first patches provide new basic functionality and do some refactoring;
the interesting part is in the two last patches.
Thanks,
Stefan
Stefan Beller (10):
string_list: print_string_list to use trace_printf
string-list.h: add string_list_pop function.
sha1-array: provide oid_array_remove_if
submodule.c: convert submodule_move_head new argument to object id
submodule.c: fix indentation
submodule.c: sort changed_submodule_names before searching it
submodule: move global changed_submodule_names into fetch submodule
struct
submodule.c: do not copy around submodule list
submodule: fetch in submodules git directory instead of in worktree
fetch: retry fetching submodules if sha1 were not fetched
builtin/fetch.c | 9 +-
entry.c | 6 +-
sha1-array.c | 39 ++++++++
sha1-array.h | 3 +
string-list.c | 12 ++-
string-list.h | 6 ++
submodule.c | 194 +++++++++++++++++++++++++++---------
submodule.h | 2 +-
t/t5526-fetch-submodules.sh | 23 ++++-
unpack-trees.c | 13 +--
10 files changed, 241 insertions(+), 66 deletions(-)
--
2.18.0.597.ga71716f1ad-goog