URL du référentiel Git – Syntaxe SSH sans chemin absolu

Je lance un serveur de repository git accessible via SSH, sur un port personnalisé (disons 12345). J’ai trouvé que dans ce cas, les URL du référentiel doivent être spécifiées en utilisant la syntaxe SSH:

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

Je voudrais le configurer de telle sorte que les utilisateurs puissent cloner des référentiels sans spécifier le chemin absolu .

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

J’ai étudié le sujet et trouvé les options suivantes:

  1. Supprimez le port personnalisé de l’URL et faites en sorte que les utilisateurs l’ajoutent à leur fichier ~/.ssh/config (solution de contournement de dernier recours plutôt que solution).
  2. Supprimez SSH et utilisez git-daemon et spécifiez son paramètre --base-path (encore une solution de contournement …)
  3. Utilisez une utilité comme la gitosis ou la gitolite – mais ne serait-il pas exagéré de l’utiliser uniquement à cette fin? La gitose est interrompue, la gitolite est un très gros logiciel …

Tout ce que je veux, c’est une URL SSH “plus jolie” avec un port personnalisé (pour que je puisse dissortingbuer toute la commande git clone et ne rien demander de plus à l’utilisateur distant). Laquelle des solutions ci-dessus serait la plus viable dans mon cas?

Si vous utilisez l’autre forme d’URL ssh vous n’avez pas besoin d’un chemin absolu. Par exemple…

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

… va cloner les repos/myrepo.git rapport à mon répertoire personnel, bien que cela n’autorise pas l’utilisation d’un autre port. Cependant, vous pouvez également utiliser ~ sous l’une ou l’autre forme pour indiquer le répertoire de base de l’utilisateur, par exemple:

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

Incidemment, malgré son abandon, la gitosis fonctionne assez bien et le code est à la fois petit et facile à comprendre. Il offre un ensemble utile de contrôles d’access et de gestion en libre-service des référentiels. Je ne l’escompte pas complètement.

Je le fais, pas exactement ce que vous avez demandé, mais avec des liens plus jolis:

créer un chemin comme

 /srv/git 

où vous placez-vous des projets git

faites ensuite un lien symbolique vers votre domicile:

 ln -s /srv/git $HOME 

Ensuite, vous pouvez avoir des liens plus courts

 git clone user@server:git/myproject.git 

Si vous avez un seul projet, vous pouvez vous débarrasser de git / part dans l’url

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

prochain

 git clone user@server:myproject.git 

marchera. Bien sûr, le .git à la fin de l’URL ne provient que de la création du fichier avec .git dans le nom. Notez également que la partie ssh: // n’est pas nécessaire: le @ implique qu’il s’agit d’une URL ssh pour git.

Mise à jour: permettez-moi d’append une note de bas de page: en suivant le plus récent standard de hiérarchie du système de fichiers, j’utilise maintenant /srv/git comme emplacement du référentiel.