La diferencia fundamental es regla de composición.
En una verdadera enfoque basado en componentes, se define una configuration, es decir:
La lista de etiquetas (de SHA1 se compromete a Git) que necesita para su proyecto de "trabajar" (es decir, "desarrollar "," compilar "," implementar ", ...).
Cada confirmación a la que se hace referencia en una configuración lo ayuda a obtener las versiones exactas de todos los árboles. No hay excepción Cada archivo de ese árbol está en la versión exacta especificada por la configuración que ha definido.
Nota para git1.8.2
"git submódulo" comenzado a aprender un nuevo modo de integrar con la punta de la rama remota (en oposición a la integración a la confirmación registrada en gitlink del SuperProject) .
Tan pronto (marzo de 2013), un submódulo podría hacer referencia a un HEAD cadena arriba, y no solo a un SHA1 fijo.
(Antes 1.8.2) Solo puede haber una etiqueta/SHA1 por módulo. A partir de un repositorio primario común, no puede definir un módulo dentro de un módulo.
(Pero un módulo, que es solo una referencia a un repositorio de Git externo, puede tener su propia definición de submódulos: el repositorio principal solo referirá el submódulo de primer nivel, que a su vez referenciará los submódulos que haya cometido dentro de sí mismo)
No se lo que en SVN external: puede definir los directorios externos, así como archivos externos, con o sin una revisión explícita en ella.
Puede componer varias propiedades externas.Por ejemplo:
$ svn propget svn:externals calc
third-party/sounds http://svn.example.com/repos/sounds
third-party/skins -r148 http://svn.example.com/skinproj
third-party/skins/toolkit -r21 http://svn.example.com/skin-maker
El resultado no es una configuración (una referencia para 'calc
'), pero una composición de reglas de selección que definen el 'mosaico' exacto que necesita en el directorio' calc
'
En resumen, no se puede "calcular" un SHA1 para un submódulo 'calc
' que sería el equivalente exacto de un grupo de svn:external
propiedades en un directorio 'calc
' SVN.
Tenga en cuenta que, como se detalla en http://stackoverflow.com/a/9189815/6309 y mencionado en mi respuesta actualizada a continuación, un submódulo ahora puede realizar un seguimiento de una rama más reciente. – VonC