As you may know, I am trying to implement "git checkout --recurse-submodules" which recurses into submodules and update the submodules to the recorded state of the superproject. I realized that such a huge change is a big endeavor, and needs to be broken up into many series. Currently I plan to send about 4 series: * This one; teaching the superprefix to working tree operations. * structured tests, i.e. enhancing lib-submodule-update.sh to have a function to test for any corner case (File/Submodule conflict, Directory/Submodule conflict; non-existence of submodule commit; and such) * the actual internal implementation, mostly touching unpack-trees.c, entry.c and helper functions in submodule.c * Enabling commands to take advantage of the infrastructure provided. At that point we only need to add a --recurse-submodule flag in the respective command and add a line to its respective test "test_switch_submodule_recursing $cmd --recurse-submodule" -- This patch series is the first of the four series. It consists of 4 patches, the first 3 are refactoring to a modern style of Git, the last patch is the actual patch that allows read-tree to be used with the superprefix option. read-tree is already exposed there to make the super-prefix code tested. The series is based on master. Thanks, Stefan Stefan Beller (4): read-tree: use OPT_BOOL instead of OPT_SET_INT t1000: modernize style t1001: modernize style unpack-trees: support super-prefix option builtin/read-tree.c | 36 +-- git.c | 2 +- t/t1000-read-tree-m-3way.sh | 648 +++++++++++++++++++++---------------------- t/t1001-read-tree-m-2way.sh | 650 ++++++++++++++++++++++---------------------- unpack-trees.c | 39 ++- 5 files changed, 699 insertions(+), 676 deletions(-) -- 2.11.0.rc2.30.g7c4be45.dirty