Подтвердить что ты не робот

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 и больше ничего не требую от удаленного пользователя). Какое из вышеперечисленных решений было бы наиболее жизнеспособным в моем случае?

4b9b3361

Ответ 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 в качестве местоположения репозитория.