Em um projeto Rails, é comum trabalharmos com submódulos do git em plugins. Principalmente se você vai mexer muito nesses plugins e commitar para seu repositório.
Mas é preciso tomar cuidado com a sintaxe do ‘git submodule add’.
Por exemplo, fui incluir um submódulo em um projeto rails já existente (e versionado com git):
$ git submodule add git@github.com:georgeguimaraes/typus.git vendor/plugins/typus
Obs.: Lembrando que a url acima é a minha url privada, porque eu queria commitar a partir do projeto-pai.
Isso cria o arquivo .gitmodules com as informações dos módulos:
$ git status ... # Untracked files: # (use "git add ..." to include in what will be committed) # # .gitmodules # vendor/plugins/typus
Aqui é preciso tomar cuidado.
Se você for digitar ‘git add vendor/plugins/typus’ e for completando os diretórios com TAB (ou seja, digitando apenas as primerias letras e apertando TAB), você vai acabar tendo essa linha:
$ git add vendor/plugins/typus/
Note a barra (/) no final. Aí é que mora o perigo. Se você der ENTER, o git vai entender que você quer adicionar todos os arquivos dentro desse diretório. Mas não é isso o que você quer!! Você quer adicionar o diretório como um submódulo.
Para isso, certifique-se que você está executando:
$ git add vendor/plugins/typus ... $ git status # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # new file: vendor/plugins/typus
Obs.: Claro que um simples ‘git add .’ vai adicionar tanto o .gitmodules quanto o diretório da maneira correta. Sem perigo de erros. Mas às vezes você quer adicionar coisas uma a uma (vai que existem outras modificações que você não quer commitar).
No tag for this post.