Nota: Esto es de 2009 y puede haber sido bueno entonces, pero ahora hay mejores opciones.
Usamos esto Se llama 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
Simplemente colóquelo en un directorio bin adecuado (/ usr / local / bin). Si está en Windows, es posible que deba modificar la sintaxis para que funcione :)
Actualizar:
En respuesta al comentario del autor original acerca de extraer todos los HEAD de todos los submódulos, esa es una buena pregunta.
Estoy bastante seguro de que git
no tiene un comando para esto internamente. Para hacerlo, necesitaría identificar qué es realmente HEAD para un submódulo. Eso podría ser tan simple como decir que master
es la rama más actualizada, etc.
Después de esto, cree un script simple que haga lo siguiente:
- busque
git submodule status
repositorios "modificados". El primer carácter de las líneas de salida indica esto. Si se modifica un repositorio secundario, es posible que NO desee continuar.
- para cada repositorio listado, cd en su directorio y ejecutar
git checkout master && git pull
. Verificar errores.
- Al final, le sugiero que imprima una pantalla al usuario para indicar el estado actual de los submódulos, ¿tal vez le pida que agregue todo y se comprometa?
Me gustaría mencionar que este estilo no es realmente para lo que se diseñaron los submódulos git. Por lo general, desea decir que "LibraryX" está en la versión "2.32" y permanecerá así hasta que le diga que "actualice".
Eso es, en cierto sentido, lo que está haciendo con el script descrito, pero de manera más automática. Se requiere cuidado!
Actualización 2:
Si está en una plataforma de Windows, es posible que desee ver el uso de Python para implementar el script, ya que es muy capaz en estas áreas. Si estás en Unix / Linux, entonces sugiero solo un script bash.
¿Necesita alguna aclaración? Solo publica un comentario.