2011-08-30 6 views
15

Suponiendo que la siguiente distribución del proyecto: -entendimiento submódulo git y "congelación" que a una determinada comprometerse de hash o la versión

mainrepo_git 
    |____ .git 
    |____ .gitmodules 
    |____ proj   <------- directory containing the code files for mainrepo 
      |____ 3rdpartysourcecode <-- directory containing upstream open source code 
      |  |____ .git 
      |  |____ 3rdpartyfiles 
      | 
      |____ mainrepofilesanddirectories 

mainrepo_git contiene el código fuente Soy el responsable directo. Tengo acceso de lectura/escritura y puedo empujar y tirar directamente a un repositorio de git remoto que administro.

anidado dentro mainrepo_git es un directorio que llamé 3rdpartysourcecode. Este directorio 3rdpartysysourcecode es de hecho otro git repo (también conocido como un "submódulo git") que apunta a un repositorio git de terceros de código abierto gestionado por otros desarrolladores. Solo he leído el acceso a él. Sin acceso de escritura.

¿Hay alguna forma de "congelar" un hash de confirmación específico del submódulo de git en relación con una confirmación realizada en mi repositorio principal?

Por ejemplo, si estoy en (o puedo volver a) comprometerse a12ucak en mi mainrepo, mi git submódulo también se invirtió a una versión específica que ato a cometer a12ucak? Y cuando cambio a commit b349jdsak, mi submódulo git también se revierte a una versión que ato a b349jdsak?

Así que mi pregunta es: hay una manera de crear un enlace entre una confirmación específica en el repositorio principal con una confirmación correspondiente en el submódulo git? De tal forma que cuando pago esa confirmación específica en el repositorio git principal, la confirmación correspondiente en el submódulo git también será retirada.

Respuesta

11

La congelación es el objetivo de los submódulos. Realmente deberías leer un tutorial sobre eso. En pocas palabras, git add 3rdpartysourcecode (importante barra diagonal no finalizada) seguido de un compromiso bloquea el compromiso del submódulo seleccionado en la confirmación del supermódulo. Luego, más tarde, usa git submodule update para verificar esa revisión.

+2

Correcto. Ver también http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC

Cuestiones relacionadas