Search code examples
gitgithubgit-submodules

git --recursive doesn't clone submodule


I learned that to download submodules with main repository we can use --recursive option when cloning main repository.

I did the same git clone --recursive git@github.com:passion/academy.git

I found that it only create a empty directory of submodule but not downloaded its code.

Do we need to do extra stuff like git submodule update --init --recursive ? If yes then what is the use of --recursive flag when cloning main repository ?


Solution

  • If you are using a recent enough git, and it still does not clone submodules, that means those empty folders are not submodules but nested git repo.

    A nested repo is recorded in its parent repo as a gitlink, but there would not be any .gitmodules files associated to it.

    health-check seem to be a nested git but not sure when cloning give me No submodule mapping found in .gitmodules for path for health-check .. is it necessary for nested git repos to have entry in .gitmodules ?

    If you want your nested git repo to be recognized and managed as a submodule, yes.

    As illustrated by your next question, it is possible that the lack of path entry in .gitmodules for health-check prevents hellospawn (which seems to be a legit submodule) to be checked out.