Accede automáticamente a los submódulos de git a través de ssh o https
gitlab git-submodules (1)
Finalmente resolví este problema especificando los submódulos url como una ruta relativa :
Así que digamos que se puede llegar a su repositorio principal de git
- ya sea a través de
https://gitlabserver.com/my/path/main.git
- o vía
[email protected]:my/path/main.git
Y el archivo .gitmodules
ve así:
[submodule "utils"]
path = libs/utils
url = https://gitlabserver.com/my/path/utils.git
Eso significaría que incluso cuando verifique la aplicación principal a través de ssh, a los utils de submódulos se seguirá accediendo a través de https.
Sin embargo, puede reemplazar la ruta absoluta por una relativa como esta:
[submodule "utils"]
path = libs/utils
url = ../utils.git
y desde ahora en uso
- ya sea
git clone --recursive https://gitlabserver.com/my/path/main.git
- o
git clone --recursive [email protected]:my/path/main.git
para obtener toda la estructura del repositorio como quieras. Obviamente, eso no funciona en los casos en que las rutas ssh relativas y https no son las mismas, pero al menos para los repositorios alojados en gitlab, este es el caso.
Esto también es útil si (por cualquier razón) duplica la estructura de su repositorio en dos sitios remotos diferentes.
Pregunta:
¿Hay alguna forma de verificar automáticamente los submódulos de git a través del mismo método (ssh o https) que el repositorio principal?
Fondo:
Tenemos un repositorio de gitlab no público ( main
) que tiene un submódulo ( utils
) que también está alojado como un repositorio de gitlab no público en el mismo servidor. Se puede acceder a esos repositorios a través de ssh o https:
-
[email protected]:my/path/repo.git
-
https://gitlabserver.com/my/path/repo.git
Obviamente, ambas variantes requieren diferentes formas de autenticación y, dependiendo de la computadora cliente y del usuario, se prefiere una u otra.
Para el repositorio de nivel superior ( main
) eso no es un problema, ya que cualquiera puede elegir el método que prefiera, pero para el módulo secundario depende del archivo .gitmodules
y, por lo tanto, es (inicialmente) el mismo para todos.
Ahora, en lugar de que todos tengan que adaptar el archivo .gitmodules a lo que prefieran y asegurarse de que no cometan esos cambios accidentalmente, sería bueno, si hubiera una manera de especificar el servidor y la ruta de repo, y git elige la opción El mismo método que se usa para el repositorio principal, o algo que se puede configurar en gitconfig.