remove - git tag
¿Desea establecer el submódulo de Git en un clon superficial y en un pago disperso? (3)
Muchas bibliotecas de Objective-C (p. Ej., facebook-ios-sdk
) le facebook-ios-sdk
que copie un cierto subconjunto de los archivos / directorios de su repositorio en su proyecto de Xcode. Un problema con esto es que no sabe qué revisión del código de proveedor tiene. Otra es que si realiza cambios en el código del proveedor, no es fácil contribuir con sus cambios a través de Git.
Como solución, quiero agregar cada biblioteca de proveedores como un submódulo Git del repositorio de mi proyecto con algunas configuraciones adicionales (por ejemplo, en el archivo .gitmodules
). De esta manera, si otra persona clona mi proyecto y realiza la git submodule update --init
, sus repositorios y submódulos tendrán el mismo estado que el mío porque usarán la misma configuración predeterminada que establecí:
- Checkout disperso: solo echa un vistazo a ciertos archivos del submódulo.
- Clon superficial: solo clonar un SHA1 determinado del submódulo.
¿Cómo establezco las configuraciones anteriores para un submódulo Git?
Con git1.8.4 (julio de 2013) , además de git shallow update para submódulo ( git submodule update --depth 1
), ahora puede tener una actualización personalizada :
Además de la opción de "rebase, fusionar, o retirar-retirar", "actualización de submódulo" puede permitir que se use un comando personalizado para actualizar el árbol de trabajo de submódulos a través de la variable de configuración "
submodule.*.update
".
Consulte la confirmación 6cb5728c43f34a7348e128b44b80d00b9417cb19 :
Los usuarios pueden configurar el
submodule.$name.update
a ''!command
'' que hará que se ejecute ''command
'' en lugar de checkout / merge / rebase.
Esto permite al usuario un control más preciso sobre cómo se realiza la actualización.Firmado por: Chris Packham
<[email protected]>
Eso significa que puede versionar un '' command
'' que luego puede usar para cualquier actualización de submódulo (a través del submodule.$name.update
setting).
Ese script puede hacer un checkout escaso si lo desea.
Actualización agosto 2016 (3 años después)
Con Git 2.10 (Q3 2016), podrás hacer
git config -f .gitmodules submodule.<name>.shallow bool
Consulte " Git submódulo sin peso extra " para más.
Los submódulos no pueden hacer parte de un repositorio. Deberías revisar la fusión de subárbol en su lugar.
Puede realizar comprobaciones dispersas de submódulos de la misma manera que la comprobación dispersa normal . Solo recuerde que el archivo de sparse-checkout
para cada módulo va en .git/modules/<mymodule>/info/
. Pero, como se explicó en la función de pago escaso de git 1.7 , los pagos dispersos son exactamente eso: pagos. No puedes mover archivos o compartir la configuración.