Skip to content

pr-git-695/Masmiseim36/dev/CloneWithSubmodule-v4

From: Markus Klein <masmiseim@gmx.de>

Simplify cloning repositories with submodules when the option
submodule.recurse is set by the user. This makes it transparent to the
user if submodules are used. The user doesn’t have to know if he has to add
an extra parameter to get the full project including the used submodules.
This makes clone behave identical to other commands like fetch, pull,
checkout, ... which include the submodules automatically if this option is
set.

It is implemented analog to the pull command by using an own config
function instead of using just the default config. In contrast to the pull
command, the submodule.recurse state is saved in addition as an array of
strings as it can take an optionally pathspec argument which describes
which submodules should be recursively initialized and cloned. To
recursively initialize and clone all submodules a pathspec of "." has to
be used.
The regression test is simplified compared to the test for "git clone
--recursive" as the general functionality is already checked there.

Signed-off-by: Markus Klein <masmiseim@gmx.de>

Submitted-As: https://lore.kernel.org/git/pull.695.v4.git.git.1588341280967.gitgitgadget@gmail.com
In-Reply-To: https://lore.kernel.org/git/pull.695.git.git.1580505092071.gitgitgadget@gmail.com
In-Reply-To: https://lore.kernel.org/git/pull.695.v2.git.git.1580851963616.gitgitgadget@gmail.com
In-Reply-To: https://lore.kernel.org/git/pull.695.v3.git.git.1582585595108.gitgitgadget@gmail.com
Assets 2