2012-10-01 22 views
20

He leído mucho sobre lo horrible que se supone que es el submódulo git, pero no estoy seguro de si eso es solo el gemido de personas que sienten límites o si tiene problemas serios (especialmente con respecto a mi caso de uso).Git usando subárbol o submódulo para administrar recursos externos

sólo quiero incluir diferentes repositorios en mi repo como esto

website/ 
libs/ 
    js/ 
    fs-slides [external] 
    fs-dialog [external] 

y que la posibilidad de actualizar los repositorios fácilmente. Por lo que yo entiendo, no hay una posibilidad fácil de incluir solo un archivo de un repositorio, ¿verdad? (Pero está bien.)

¿Debo usar submódulos para esto?
¿O hay algún problema con él? ¿O es el subárbol mucho más fácil?

Respuesta

11

El submódulo es muy adecuado para su caso, especialmente porque no le molesta incluir esos subrepos en su propio subdirectorio.

El principal problema grave que podría haber usando submódulos es la hora de actualizar ellos, mientras que las actualizaciones en curso, como se describe en "how exactly does git submodule work":

Si se olvida de establecer una sucursal al hacer comete en un submódulos, dijo confirmaciones se realizará en un HEAD separado, y los cambios en curso se perderán en el próximo git submodule update (puede recuperarlos a través del reflog, si está activado para su repositorio de submódulos).

Entonces, como Michaelcomments, y como detalle en el enlace anterior, es necesario empujar el submódulo de su propia corriente arriba antes de comprometerse y empujando la cesión temporal de los padres (para evitar empujar submódulo despublicación comete)

+1

Cuando haciendo confirmaciones en un submódulo, también debes recordar 'git push'. Porque si no tienes un 'git commit && git push' en tu repositorio principal, estás presionando una referencia a una confirmación de submódulo que no existe en ningún otro lado. – Michael

+0

@Michael buen punto. Lo he incluido en la respuesta para una mayor visibilidad. – VonC

Cuestiones relacionadas