tipos tag repositorio origin example etiquetas eliminar crear git git-submodules git-track

tag - git submódulo de seguimiento más reciente



git push tag (1)

Estamos trasladando nuestro (enorme) proyecto a git y estamos pensando en usar submódulos. Nuestro plan es tener tres cabezas diferentes en el superproyecto: lanzamiento, estable, más reciente. Los líderes del proyecto manejarán el lanzamiento y las sucursales estables. Moverán los submódulos según sea necesario.

El problema es la "última" cabeza. Nos gustaría que el superproyecto "último" cabeza rastree las ramas principales de todos los submódulos (automáticamente). Y también sería genial si mostrara el historial de todas las confirmaciones del submódulo.

He visto gitslave, pero no es exactamente lo que queremos. ¿Alguna sugerencia?


Actualización de marzo de 2013

Git 1.8.2 agregó la posibilidad de rastrear sucursales.

El " git submodule " comenzó a aprender un nuevo modo para integrarse con la punta de la rama remota (en lugar de integrarse con la confirmación registrada en el gitlink del superproyecto).

# add submodule to track master branch git submodule add -b master [URL to Git repo]; # update your submodule git submodule update --remote

Ver también el tutorial del Vogella sobre los submódulos .

Consulte " Cómo hacer que un submódulo existente rastree una bifurcación " (si ya tenía un submódulo presente, deseaba rastrear una bifurcación)

Nota:

git submodule add -b . [URL to Git repo]; ^^^

Ver la página man del git submodule :

Un valor especial de . se usa para indicar que el nombre de la rama en el submódulo debe ser del mismo nombre que la rama actual en el repositorio actual .

Consulte la confirmación b928922727d6691a3bdc28160f93f25712c565f6 :

--branch submodule add : Si se da --branch , .gitmodules en .gitmodules

Esto le permite grabar fácilmente una opción de submodule.<name>.branch en .gitmodules cuando agrega un nuevo submódulo. Con este parche,

$ git submodule add -b <branch> <repository> [<path>] $ git config -f .gitmodules submodule.<path>.branch <branch>

reduce a

$ git submodule add -b <branch> <repository> [<path>]

Esto significa que futuras llamadas a

$ git submodule update --remote ...

obtendrá actualizaciones de la misma rama que utilizó para inicializar el submódulo, que generalmente es lo que desea.

Firmado por: W. Trevor King

Respuesta original (febrero de 2012):

Un submódulo es una única confirmación a la que hace referencia un repositorio principal.
Dado que se trata de un repositorio de Git en sí mismo, se puede acceder al "historial de todas las confirmaciones" a través de un git log dentro de ese submódulo.

Entonces, para que un padre rastree automáticamente la última confirmación de una rama determinada de un submódulo, debería:

  • cd en el submódulo
  • git fetch / pull para asegurarse de que tiene los últimos commits en la rama derecha
  • CD de nuevo en el repositorio padre
  • agregar y confirmar para registrar la nueva confirmación del submódulo.

gitslave (que ya has visto) parece ser el más adecuado, incluso para la operación de confirmación .

Es un poco molesto hacer cambios en el submódulo debido a la necesidad de verificar en la rama correcta del submódulo, hacer el cambio, confirmar y luego ingresar al superproyecto y confirmar el compromiso (o al menos registrar la nueva ubicación del submódulo).

Otras alternativas se detallan aquí .