¿Qué funciones puedo usar para sincronizar / iniciar / actualizar todos los submodules (repository local) a la versión en una twig remota?
La "synchronization" (llamémoslo así, no me refiero a git sync!) También debe funcionar cuando:
Esencialmente, quiero que el repository local siempre esté exactamente en la misma versión que la twig remota. Sin mucho tiddling cada vez que cambio algo en los submodules. Así que no hay instrucciones manuales para el server para iniciar un nuevo submodule, solo para que el script de implementación funcione …
¿Se puede lograr esto sin clonar (es decir, transferir) todo el repository? Elegí git para tener una forma segura y rápida de implementar mis fonts. Pero la única opción que puedo pensar es hacer un git clone --recursive
completo de git clone --recursive
y verificar los submodules en sus respectivas tags a continuación. En ese caso, rsync probablemente haría un mejor trabajo de synchronization de files.
¿Qué pasa con la git submodule update --init --recursive
? Actualizará el submodule a la confirmación correcta, lo inicializará si es necesario y lo hará para todos los submodules, incluso cuando se encuentren dentro de otros submodules. Si eso no descarta los cambios, intente con git submodule foreach --recursive git reset --hard
primero.
Primero, agregue y revise manualmente los submodules necesarios en la location y versión que desee. Para actualizar todos los submodules, pero mantener su respectiva versión que está desprotegida en el repository que los contiene , se puede usar
git submodule update --init --recursive --rebase --force
La --rebase
hará que git compruebe la confirmación exacta, que el submodule está desprotegido en el repository contenedor.
Esto fallará si el repository local tiene cambios realizados en los files del submodule, por lo que debemos restablecer todos los submodules primero. Para el uso de scripts:
git submodule foreach 'git reset --hard && git checkout . && git clean -fdx' git submodule update --init --recursive --rebase --force
Los commands de reinicio se tomaron directamente de git deshacer todos los cambios no confirmados . Avíseme si algo más es más apropiado para este uso.
No se requieren configuraciones adicionales, solo revisa el submodule @ commit o label deseada e inserta ese cambio en el contenedor repo.
Estos commands satisfacen mis primeros 2 requisitos iniciales: siempre que git rastree el submodule, todos los cambios están completamente sincronizados con los "clientes" que ejecutan los commands. Si se elimina un submodule, git clean
se puede ejecutar en el repository que contiene los submodules para eliminar los files del submodule orohaned.