¿Hay alguna manera de hacer que git pull actualice automáticamente los submódulos?
¿Hay alguna manera de tenerlo automáticamente git submodule update
(o preferiblemente git submodule update --init
llamarlo cada vez que git pull
se hace)?
Buscando una configuración de git o un alias de git para ayudar con esto.
A partir de Git 2.14 , puedes usarlo git pull --recurse-submodules
(y ponerle un alias como quieras).
A partir de Git 2.15 , puede establecerlo submodule.recurse
en verdadero para habilitar el comportamiento deseado.
Puedes hacer esto globalmente ejecutando:
git config --global submodule.recurse true
git config --global alias.pullall '!git pull && git submodule update --init --recursive'
Si desea que se pasen argumentos a git pull, utilice esto en su lugar:
git config --global alias.pullall '!f(){ git pull "$@" && git submodule update --init --recursive; }; f'
A partir de Git 1.7.5, debería actualizar los submódulos automáticamente de forma predeterminada como usted desea.
[EDITAR : según comentarios: el nuevo comportamiento 1.7.5 es buscar automáticamente las últimas confirmaciones para los submódulos, pero no actualizarlas (en el sentido). Entonces, la información contenida en esta respuesta es relevante como antecedente, pero no es una respuesta completa en sí misma. Aún necesita un alias para extraer y actualizar submódulos con un solo comando.]git submodule update
El comportamiento predeterminado, "bajo demanda", es actualizar los submódulos cada vez que recupera una confirmación que actualiza la confirmación del submódulo, y esta confirmación aún no está ubicada en su clon local.
También puede actualizarlo cada vez que se recupera o nunca (supongo que es un comportamiento anterior a 1.7.5).
La opción de configuración para cambiar este comportamiento es fetch.recurseSubmodules
.
Esta opción se puede establecer en un valor booleano o en
on-demand
.
Establecerlo en un valor booleano cambia el comportamiento de los submódulosfetch
ypull
se recurre incondicionalmente a ellos cuando se establece en verdadero o no se repite en absoluto cuando se establece en falso.Cuando se establece en
on-demand
(el valor predeterminado),fetch
solopull
se repetirá en un submódulo poblado cuando su superproyecto recupere una confirmación que actualice la referencia del submódulo .
Ver:
git config
página de manual (1.7.5) (o la últimagit config
página de manual )git fetch
página de manual (1.7.5) (o la última página de manual de git fetch )
para más información.
git fetch --recurse-submodules[=yes|on-demand|no]