From the documentation of git-clone
:
--depth depth
Create a shallow clone with a history truncated to the specified
number of commits. Implies --single-branch
unless --no-single-branch
is given to fetch the histories near the tips of all branches.
--[no-]single-branch
Clone only the history leading to the tip of a single branch,
either specified by the --branch
option or the primary branch
remote’s HEAD points at. When creating a shallow clone with the
--depth option, this is the default, unless --no-single-branch
is given to fetch the histories near the tips of all branches.
Further fetches into the resulting repository will only update the
remote-tracking branch for the branch this option was used for the
initial cloning. If the HEAD at the remote did not point at any
branch when --single-branch
clone was made, no remote-tracking
branch is created.
Thus, if git submodule add
performs the cloning with git clone
, then in your use case --single-branch
is implied. However, it will work correctly only if git submodule add
forwards the -b
option to git clone
.
A guaranteed way of achieving the desired result (without making any assumptions about inner workings of git submodule add
) is to git clone
the submodule repository on your own using the options of your choice and then add the existing directory as a submodule:
git clone -b myBranch --single-branch --depth=1 git@host.com:some/large/repo large_repo
git submodule add -b myBranch git@host.com:some/large/repo large_repo
git submodule add options repository [path]
...
path is the relative location for the cloned submodule to exist in the
superproject. If path does not exist, then the submodule is created by
cloning from the named URL. If path does exist and is already a valid
Git repository, then this is added to the changeset without cloning.