v2: * improved commit message to be proper English (Thanks, Philip!) * clarified why the patch 2 is so short (i.e. it doesn't matter if the submodule is initialized in the preparation repo, we care about the actual testing repo! Thanks, Brandon) * reworded patch 1 (Thanks Jonathan) Thanks, Stefan v1: https://public-inbox.org/git/20170411234923.1860-1-sbeller@xxxxxxxxxx/ Now that the BIG one has landed, e394fa01d6 (Merge branch 'sb/checkout-recurse-submodules', 2017-03-28), you would expect that teaching to recurse into submodules is easy for all the remaining working tree manipulations? It turns out it is. See the last patch how we teach git-reset to recurse into submodules. However when thinking more about what git-reset is expected to do, I added tests and some fixes for them (patch 2+3). patch 1 is a correctness thing, required for patch 3. Thanks, Stefan Stefan Beller (4): entry.c: submodule recursing: respect force flag correctly submodule.c: uninitialized submodules are ignored in recursive commands submodule.c: submodule_move_head works with broken submodules builtin/reset: add --recurse-submodules switch builtin/reset.c | 30 ++++++++++++++++++++++++++++++ entry.c | 8 ++++---- submodule.c | 31 +++++++++++++++++++++++++++---- t/lib-submodule-update.sh | 24 +++++++++++++++++++++--- t/t7112-reset-submodule.sh | 8 ++++++++ unpack-trees.c | 7 ++++++- 6 files changed, 96 insertions(+), 12 deletions(-)