Git URL-адрес репозитория - синтаксис SSH без абсолютного пути
Я запускаю сервер хранилища git, доступный через SSH, на пользовательский порт (скажем, 12345). Я обнаружил, что в этом случае URL-адрес репозитория должен быть указан с использованием синтаксиса SSH:
git clone ssh://[email protected]:12345/absolute/path/to/repository
Я хотел бы настроить его таким образом, чтобы пользователи могли клонировать репозитории без указания пути абсолютного.
git clone ssh://[email protected]:12345/repository.git
Я исследовал тему и нашел следующие варианты:
- Удалите пользовательский порт из URL-адреса и добавьте его в свой файл
~/.ssh/config
(последнее решение, а не решение).
- Снимите SSH и используйте
git-daemon
и укажите его параметр --base-path
(все еще обходной путь...)
- Используйте утилиту, например
gitosis
или gitolite
, но не будет ли излишним ее использовать для этой цели? Гитоз прекращен, гитолит - довольно огромный кусок программного обеспечения...
Все, что я хочу, это "более красивый" URL SSH с настраиваемым портом (поэтому я могу распространять всю команду git clone
и больше ничего не требую от удаленного пользователя). Какое из вышеперечисленных решений было бы наиболее жизнеспособным в моем случае?
Ответы
Ответ 1
Если вы используете альтернативную форму ssh
URL, вам не нужен абсолютный путь. Например...
git clone [email protected]:repos/myrepo.git
... будет клонировать репозиторий repos/myrepo.git
относительно моего домашнего каталога, хотя это не позволяет использовать альтернативный порт. Однако вы также можете использовать ~
в любой форме, чтобы указать домашний каталог пользователя, например:
git clone ssh://[email protected]:12345/~/repository.git
Кстати, несмотря на то, что оно прекращено, gitosis
функционирует достаточно хорошо, и код как маленький, так и понятный. Он предлагает полезный набор средств контроля доступа и управления репозиториями самообслуживания. Я бы не стал полностью его обесценивать.
Ответ 2
Я делаю это, а не то, что вы просили, но близко и с более красивыми ссылками:
создать путь, например
/srv/git
где вы разместите git projects
Далее сделайте символическую ссылку на домашнюю страницу:
ln -s /srv/git $HOME
Далее вы можете иметь более короткие ссылки
git clone [email protected]:git/myproject.git
Если у вас есть один проект, вы можете избавиться от git/part в URL
ln -s /srv/git/myproject.git $HOME
Далее
git clone [email protected]:myproject.git
будет работать.
Конечно..git в конце URL-адреса происходит только от создания голого с .git в имени.
Также обратите внимание, что ssh://part не требуется: @означает, что это URL-адрес ssh для git.
Обновлено: позвольте мне добавить оповещение: следуя последнему Стандарт иерархии файловой системы Я использую теперь /srv/git
в качестве местоположения репозитория.