2012-05-04 11 views
16

Probablemente es una pregunta muy tonta, pero he estado especificando los submódulos hasta ahora en el archivo .gitmodules. Recientemente me di cuenta de que tal vez solo sea posible usar .git/config por la misma razón, así que no tendré que guardar archivos extraños en el directorio de trabajo.diferencia entre .gitmodules y especificando submódulos en .git/config?

.git/config:

[submodule "path/to/repo"] 
    url = [email protected]:username/repo.git 

.gitmodules

[submodule "path/to/repo"] 
    path = path/to/repo 
    url = [email protected]:username/repo.git 

Son estos básicamente las mismas cosas?

Respuesta

17

La misma respuesta que .git/info/exclude y .gitignore.

El archivo .gitmodules puede ser incluido en el repositorio y compartir con todo el mundo (es decir, que se pueden añadir y comprometido como cualquier archivo normal), mientras que nada en .git (como .git/config) es privado (no se puede añadir que en el repositorio).

+3

¿Qué sucede si tengo repos diferentes especificados en .git/config y .gitmodules? ¿Cuál de ellos tendría prioridad? – Stann

9

El git submodule sync actualizará su archivo de configuración con los detalles del archivo .gitmodules, por lo que este último se debe considerar el 'maestro' - se pasa entre los repos como lo indica @ Artefact2.

Esto es útil cuando las URL de los submódulos cambian en sentido ascendente y necesita actualizar sus repositorios locales en consecuencia.

+0

¿cuál prevalecería si tienen diferentes repos especificados? – Stann

+3

para el sub-comando 'sync' son los .gitmodules los que tienen prioridad, pero vea el manual para conocer las condiciones adicionales acerca de los que no están listados en config. –