URL del repository Git – syntax SSH sin ruta absoluta

Estoy ejecutando un server de repository git accesible a través de SSH, en un puerto personalizado (digamos 12345). He encontrado que en este caso las URL del repository deben especificarse usando la syntax SSH:

git clone ssh://[email protected]:12345/absolute/path/to/repository 

Me gustaría configurarlo de tal forma que los usuarios puedan clonar repositorys sin especificar la ruta absoluta .

 git clone ssh://[email protected]:12345/repository.git 

Investigué el tema y encontré las siguientes opciones:

  1. Elimine el puerto personalizado de la URL y haga que los usuarios lo agreguen a su file ~/.ssh/config (una solución de último recurso en lugar de una solución).
  2. Elimine SSH y use git-daemon y especifique su parámetro --base-path (sigue siendo una solución …)
  3. Use una utilidad como gitosis o gitolite , pero ¿no sería excesivo usarla solo para este propósito? La gitosis se descontinúa, la gitolita es una pieza de software bastante grande …

Todo lo que quiero es una URL SSH "más bonita" con puerto personalizado (para poder distribuir todo el command git clone y no requerir nada más del usuario remoto). ¿Cuál de las soluciones anteriores sería la más viable en mi caso?

Si usa la forma alternativa de URL ssh , no necesita una ruta absoluta. Por ejemplo…

 git clone [email protected]:repos/myrepo.git 

repos/myrepo.git repository de repository repos/myrepo.git relativo a mi directory personal, aunque esto no permite el uso de un puerto alternativo. Sin embargo, también puede usar ~ en cualquier forma para indicar el directory de inicio del usuario, por ejemplo:

 git clone ssh://[email protected]:12345/~/repository.git 

Por cierto, a pesar de que se descontinúa, la gitosis funciona bastante bien, y el código es pequeño y fácil de entender. Ofrece un útil set de controles de acceso y administración de repositorys de autoservice. No lo descartaría por completo.

Hago esto, no exactamente lo que pediste, pero cerca y con enlaces más bonitos:

crear un path como

 /srv/git 

donde colocas tus proyectos git

a continuación, haga un enlace simbólico a casa:

 ln -s /srv/git $HOME 

A continuación puedes tener enlaces más cortos

 git clone [email protected]:git/myproject.git 

si tienes un solo proyecto puedes deshacerte del git / parte en la url

 ln -s /srv/git/myproject.git $HOME 

siguiente

 git clone [email protected]:myproject.git 

trabajará. Por supuesto, el .git al final de la URL proviene solo de la creación de lo simple con .git en el nombre. Tenga en count también que ssh: // parte no es necesaria: el @ implica que es una URL ssh para git.

Actualizado: permítanme agregar una nota al margen: siguiendo el más reciente Estándar de jerarquía del sistema de files , uso now /srv/git como location del repository.