Si es posible, lo mejor es asegurarse de que el archivo .gitmodules
contiene una URL del repositorio que se pueden clonar por cualquier persona, por lo general, ya sea una URL o git://
http://
. A continuación, los usuarios que tienen acceso SSH a sí mismos pueden cambiar en el submódulo después de la clonación y cambiar la dirección URL en remote.origin.url
para que apunte a una dirección URL SSH con su nombre de usuario, por ejemplo:
cd my-submodule
git remote set-url origin [email protected]:/pathtorepos
El otro usuario debería ser capaz de hacer que incluso en la situación actual. Actualización: Chris Johnsen señala a continuación que también es razonable usar una URL SSH en .gitmodules
si omite el nombre de usuario y todos los usuarios del repositorio tendrán acceso SSH; deberán agregar su nombre de usuario de manera similar a la anterior si difiere local y remotamente.
Tenga en cuenta que las URL en .gitmodules
solo se usan cuando inicializa el submódulo. La inicialización del submódulo establece el valor de configuración submodule.<SUBMODULE-NAME>.url
en el proyecto principal a lo que se haya comprometido en .gitmodules
- este es el valor que se utilizará en la primera actualización del submódulo. Entre inicializar y actualizar el sub-módulo, también puede cambiar esta dirección URL que se utiliza para la primera actualización que con un comando como:
git config submodule.my-submodule.url [email protected]:/pathtorepos
De hecho, es posible que tenga que hacer esto si la primera actualización falla. Una vez que el submódulo se ha actualizado por primera vez, la URL que necesita cambiar es la definida para origin
dentro del submódulo; en ese punto, solo es útil establecer el valor de configuración submodule.my-submodule.url
en el proyecto principal si es probable que esté eliminando y actualizando el submódulo.
Es razonable usar URL basados en SSH en '.gitmodules' ** si ** no incluyen un nombre de usuario (cada uno el usuario final puede configurar '.ssh/config' para proporcionar su propio nombre de usuario del servidor, si difiere de su nombre de usuario local). En segundo lugar, 'git submodule init' copia las entradas del submódulo de' .gitmodules' a '.git/config', por lo que hay un punto (después de' init', pero antes del primer uso de 'git submodule update'), donde puede reconfigurar la URL de un submódulo antes de que se haya clonado. Si los submódulos ya han sido clonados, su '(cd sub && git config remote.origin.url ...)' es (también) necesario. –
@Chris Johnsen: He agregado una nota sobre su primer punto, gracias. Soy bastante consciente del último punto, pero he tratado de hacer un esfuerzo para mantener simples las respuestas en los submódulos, por lo que no todos se convierten en [publicaciones de blog rambling] (http://longair.net/blog)/2010/06/02/git-submodules-explained /) sobre todos los diferentes estados en los que pueden estar sus submódulos ... De todos modos, actualizaré esta respuesta para describir también esa situación :( –
OK, espero que haya mejorado ahora. –