¿Hay alguna manera de hacer que git pull actualice automáticamente los submódulos?

Resuelto philfreo asked hace 13 años • 9 respuestas

¿Hay alguna manera de tenerlo automáticamente git submodule update(o preferiblemente git submodule update --initllamarlo cada vez que git pullse hace)?

Buscando una configuración de git o un alias de git para ayudar con esto.

philfreo avatar Jan 06 '11 10:01 philfreo
Aceptado

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.recurseen verdadero para habilitar el comportamiento deseado.

Puedes hacer esto globalmente ejecutando:

git config --global submodule.recurse true
Kane avatar Mar 22 '2018 11:03 Kane

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'
Lily Ballard avatar Jan 06 '2011 03:01 Lily Ballard

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ódulos fetchy pullse 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), fetchsolo pull se repetirá en un submódulo poblado cuando su superproyecto recupere una confirmación que actualice la referencia del submódulo .

Ver:

  • git configpágina de manual (1.7.5) (o la última git configpágina de manual )
  • git fetchpá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]
Christopher Rogers avatar Apr 27 '2011 10:04 Christopher Rogers