J'exécute un serveur de référentiel git accessible via SSH, sur un port personnalisé (par exemple, 12345). J'ai constaté que dans ce cas, les URL du référentiel doivent être spécifiées à l'aide de la syntaxe SSH:
git clone ssh://[email protected]:12345/absolute/path/to/repository
Je souhaite le configurer de telle sorte qu'il soit possible aux utilisateurs de cloner des référentiels sans spécifier le chemin absolute.
git clone ssh://[email protected]:12345/repository.git
J'ai étudié le sujet et trouvé les options suivantes:
~/.ssh/config
fichier (solution de dernier recours plutôt qu'une solution).git-daemon
et spécifier son --base-path
paramètre (toujours une solution de contournement ...)gitosis
ou gitolite
- mais ne serait-il pas excessif de l'utiliser uniquement à cette fin? La gitose est abandonnée, gitolite est un logiciel assez volumineux ...Tout ce que je veux, c'est une URL "plus jolie" SSH avec un port personnalisé (pour pouvoir distribuer tout le git clone
commande et n'exige rien de plus de l'utilisateur distant). Laquelle des solutions ci-dessus serait la plus viable dans mon cas?
Si vous utilisez la forme alternative de ssh
URL, vous n'avez pas besoin d'un chemin absolu. Par exemple...
git clone [email protected]:repos/myrepo.git
... va cloner le dépôt repos/myrepo.git
par rapport à mon répertoire personnel, bien que cela ne permette pas l’utilisation d’un autre port. Cependant, vous pouvez aussi 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 interruption, gitosis
fonctionne très bien et le code est à la fois petit et facile à comprendre. Il offre un ensemble utile de contrôles d’accès et de gestion en libre service des référentiels. Je ne le négligerais pas complètement.
Je fais cela, pas exactement ce que vous avez demandé, mais fermez et avec de plus beaux liens:
créer un chemin comme
/srv/git
où vous placez vos projets git
ensuite faire un lien symbolique à la maison:
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
suivant
git clone user@server:myproject.git
marchera. Bien sûr, le .git à la fin de l'URL provient uniquement de la création du nu avec .git dans le nom. Notez également que ssh: // part n’est pas nécessaire: le @ implique qu’il s’agit d’une URL ssh pour git.
Mise à jour: permettez-moi d'ajouter une note de bas de page: après la plus récente version norme de hiérarchie des systèmes de fichiers j'utilise maintenant /srv/git
comme emplacement du référentiel.