Git: Submódulos. Sim, é como svn:externals , mas é diferente!

Submódulos permitem que repositórios externos sejam adicionados dentro de um subdiretório da arvore do nosso projeto, sempre apontando para um commit específico.

Sim, é como svn:externals , mas é diferente!

O diretório onde o submódulo fica tem sua arvore específica, inclusive a pasta .git com suas próprias configurações.

Quando adicionamos um submódulo a uma árvore de projeto, estamos adicionando um commit específico – atrelamos ele a uma versão (um SHA).

Toda vez que alguém baixar este projeto e pedir o submódulo ele vai receber esta versão mesmo que o repositório original esteja bem mais adiantado.

  1. git submodule add [URL do repositório] [pasta de destino]
  2. git submodule add http://github.com/gpupo/html5-boilerplate.git lib/vendor/html5-boilerplate

Com isso ele vai criar um repositório para o html5-boilerplate na pasta lib/vendor/html5-boilerplate.

Vale a pena dar uma olhada nesta pasta, dentro do diretório .git, e ver o que tem nos arquivos texto de configuração.

Os arquivos do repositório utilizado como submódulo, a princípio, não ficam dentro do nosso repositório, mas o SHA sim.

Temos então que adicionar o subdiretório criado à arvore original para que ele possa ser integrado ao nosso repositório:

  1. git add lib/vendor/html5-boilerplate
  2. git commit -m “Adicionado html5-boilerplate”

Quem clonar meu projeto vai baixar o submódulo?

Não. É necessário iniciar e atualizar os submódulos:

  1. git submodule init
  2. git submodule update

Com isso ele vai trazer o conteúdo do(s) submódulos de acordo com o SHA de cada um.

git submodule mostra os submódulos do projeto e também o SHA de cada um deles.

E você, como utiliza submodules? Fala aí!

 

Atualização:

Exemplos de uso

https://gist.github.com/1211230

CMUSphinx: Sistemas que interagirem com a voz

O CMUSphinx dá aos desenvolvedoresa capacidade de construir sistemas de fala, e interagirem com a voz,construindo algo único e útil:

[youtube http://www.youtube.com/watch?v=fQ59dXOo63o?wmode=transparent]

 

[youtube http://www.youtube.com/watch?v=3VA2Th121zQ?wmode=transparent]

ipython

Uma dica bacana se você, assim como eu, usa a shell interativa do python:
O ipython possui prompts coloridos e um autocompletar bem legal!

  1. sudo apt-get install ipython

Teste aí e me diga!