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:
~/.ssh/config
(solution de contournement de dernier recours plutôt que solution). git-daemon
et spécifiez son paramètre --base-path
(encore une solution de contournement …) 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.