Nota: Isso é de 2009 e pode ter sido bom, mas agora existem opções melhores.
Nós usamos isso. É chamado git-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
Basta colocá-lo em um diretório bin adequado (/ usr / local / bin). Se estiver no Windows, pode ser necessário modificar a sintaxe para que funcione :)
Atualizar:
Em resposta ao comentário do autor original sobre puxar todas as HEADs de todos os submódulos - essa é uma boa pergunta.
Tenho certeza de que git
não tem um comando para isso internamente. Para fazer isso, você precisaria identificar o que realmente é um HEAD para um submódulo. Isso pode ser tão simples quanto dizer que master
é o ramo mais atualizado, etc ...
Depois disso, crie um script simples que faça o seguinte:
- verifique se
git submodule status
há repositórios "modificados". O primeiro caractere das linhas de saída indica isso. Se um sub-repo for modificado, você NÃO poderá continuar.
- para cada repo listado, cd no diretório e execute
git checkout master && git pull
. Verifique se há erros.
- No final, sugiro que você imprima uma tela para o usuário para indicar o status atual dos submódulos - talvez solicite que eles adicionem tudo e confirmem?
Eu gostaria de mencionar que esse estilo não é realmente o que os sub-módulos git foram projetados. Normalmente, você quer dizer que "LibraryX" está na versão "2.32" e permanecerá assim até que eu diga para "atualizar".
Isso é, de certa forma, o que você está fazendo com o script descrito, mas apenas mais automaticamente. É necessário cuidado!
Atualização 2:
Se você estiver em uma plataforma Windows, pode querer usar o Python para implementar o script, pois ele é muito capaz nessas áreas. Se você estiver no unix / linux, sugiro apenas um script bash.
Precisa de algum esclarecimento? Basta postar um comentário.