Como “git clone”, incluindo submódulos?

Estou tentando colocar um submódulo em um repository.

O problema é que, quando clona o repository pai, a pasta do submódulo fica totalmente vazia.

Existe alguma maneira de fazer com que ‘git clone parent’ realmente coloque dados na pasta submódulo?

exemplo: http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native está apontando para um git externo, mas quando eu sequelize projeto de sequelize , essa pasta está vazia …

Com a versão 2.13 do Git e mais tarde, --recursive foi descontinuado e --recurse-submodules devem ser utilizados:

 git clone --recurse-submodules -j8 git://github.com/foo/bar.git cd bar 

Nota do editor: -j8 é uma otimização de desempenho opcional que se tornou disponível na versão 2.8 e busca até 8 submódulos por vez em paralelo – veja man git-clone .

Com a versão 1.9 do Git até a versão 2.12 ( -j flag disponível somente na versão 2.8+):

 git clone --recursive -j8 git://github.com/foo/bar.git cd bar 

Com a versão 1.6.5 do Git e posterior, você pode usar:

 git clone --recursive git://github.com/foo/bar.git cd bar 

Para repos já clonados, ou versões mais antigas do Git, use:

 git clone git://github.com/foo/bar.git cd bar git submodule update --init --recursive 

Você precisa fazer duas coisas antes que um submódulo seja preenchido:

 git submodule init git submodule update 

Resposta original 2010

Como o joschi menciona nos comentários, o git submodule agora suporta a opção --recursive (Git1.6.5 e mais).

Se --recursive for especificado, esse comando irá recursar nos submódulos registrados e atualizar quaisquer submódulos nesteds dentro.

Veja Trabalhando com submódulos git recursivamente para a parte init.
Veja o git submodule explicado para mais.

Com a versão 1.6.5 do git e posterior, você pode fazer isso automaticamente clonando o superprojeto com a opção –-recursive :

 git clone --recursive git://github.com/mysociety/whatdotheyknow.git 

Atualização 2016, com git 2.8: veja ” Como acelerar / paralelizar downloads de submódulos git clone --recursive usando git clone --recursive ? ”

Você pode iniciar a busca do submódulo usando vários encadeamentos, em paralelo.
Para instâncias:

 git fetch --recurse-submodules -j2 

Você pode usar este comando para clonar seu repository com todos os submódulos:

 git clone --recursive YOUR-GIT-REPO-URL 

Ou se você já clonou o projeto, você pode usar:

 git submodule init git submodule update 

Se o seu submódulo foi adicionado em um ramo, certifique-se de incluí-lo no seu comando clone …

 git clone -b  --recursive   

Tente isto:

 git clone --recurse-submodules 

Ele automaticamente extrai os dados do submódulo, supondo que você já tenha adicionado os submódulos ao projeto pai.

Resposta atrasada

 // git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR 

Como passei uma hora inteira brincando com um amigo: mesmo que você tenha direitos de administrador no BitBucket, sempre clone o repository ORIGINAL e use a senha de quem possui o repository. Irritante para descobrir que você se deparou com esta minetrap: P

A busca paralela de submódulos visa reduzir o tempo necessário para buscar os repositorys e todos os seus submódulos relacionados, permitindo a busca de múltiplos repositorys de uma só vez. Isso pode ser feito usando a nova opção –jobs, por exemplo:

 git fetch --recurse-submodules --jobs=4 

De acordo com a equipe do Git, isso pode acelerar substancialmente a atualização de repositorys que contêm muitos submódulos. Ao usar –recurse-submodules sem a nova opção –jobs, o Git buscará submódulos um por um.

Fonte: http://www.infoq.com/news/2016/03/git28-released

Tente isto para include submódulos no repository git.

 git clone -b  --recursive   

ou

 git clone --recurse-submodules 

Tente isso.

 git clone -b  --recursive   

Se você adicionou o submódulo em um ramo, certifique-se de adicioná-lo ao comando clone.