2011-05-18 14 views
18

He iniciado sesión como usuario A en mi máquina, pero mi repositorio es accesible a través del nombre de usuario B en el servidor desde el que procedo. El archivo .gitmodules tiene url = ssh://domain.com/abc/def.git.Actualización del submódulo de Git con otro usuario

¿Cómo puedo configurar git para usar un nombre de usuario B en lugar de A cuando hago git submodule update?

Respuesta

28

Supongo que el submódulo ya se ha inicializado, por lo que git config --list | grep ^submodule muestra algo así como submodule.my-submodule.url=ssh://domain.com/abc/def.git.

Si aún no ha ejecutado git submodule update por primera vez, puede simplemente cambiar esa opción de configuración, p. con:

git config submodule.my-submodule.url ssh://[email protected]/abc/def.git 

Por otro lado, si el submódulo ya se ha actualizado una vez, luego origin en el submódulo se han establecido a lo que la opción de configuración especificado. En ese caso, usted tiene que hacer:

cd my-submodule 
git config remote.origin.url ssh://[email protected]/abc/def.git 

Es sólo un poco confuso, me temo, pero submódulos son muy flexibles. Intenté explicar algunos de estos detalles en a blog post.

1

La respuesta corta es 'comprobar si se podía utilizar rutas relativas para los submódulos'

El detalle es, Tenemos sub-módulo que está siendo utilizado por múltiples aplicaciones. Hemos mantenido el submódulo en el mismo repositorio.

La estructura es así, repo

 
|-app1 
|-app2 
|-submod 

Cuando clonar la aplicación de la aplicación/.git/config consigue url con el usuario actual como '[email protected]' En los .gitmodules de aplicaciones que damos url como '../submod' De esta manera, cuando hacemos 'submódulo init', git genera una url absoluta para el submódulo desde la URL relativa que dimos en .gitmodules.

10

Si bien la solución anterior funciona, encontré una solución diferente que se adapta mejor a mis necesidades, y tal vez a la del solicitante original. Quería una forma de especificar el nombre de usuario predeterminado para todas las operaciones de git en un servidor remoto en lugar de tener que modificar las configuraciones de git para cada proyecto. La solución realmente no tiene nada que ver con git en absoluto, pero ssh.

Basta con añadir estas líneas a su ~/.ssh/config:

Host domain.com 
User B 

(domain.com reemplazar con el dominio de su servidor git.) Ahora, incluso si se ha iniciado sesión en el equipo local como usuario A, SSH usará B como el nombre de usuario cuando se conecta al servidor.

Ahora puede ejecutar git submodule update sin tener que agregar un nombre de usuario en la configuración de git.

+0

Esa es una solución mejor, especialmente si tiene un proyecto con múltiples submódulos. ¡Gracias! – MaciekS

Cuestiones relacionadas