Я настраиваю макет репозитория Mercurial и имею каталог со всеми репозиториями в нем.
/var/vcroot/link/[repository]
Поскольку SSH - единственный известный мне способ удаленного доступа к Mercurial, я знаю, как настроить аутентификацию с открытым ключом и установить соответствующие переменные среды. Я хочу знать, есть ли способ установить корень репозитория, чтобы пользователи могли просто ввести
ssh://connection-name/repository-name
В отличие от этого:
ssh://connection-name/var/vcroot/link/repository-name
Я хочу что-то вроде опции svn -r.
Я решил это, создав сценарий оболочки / usr / local / bin / hg:
#!/bin/sh
cd /var/vcroot/link
/usr/bin/hg $*
Если вы затем удаленно запустите 'hg init ssh: // имя-соединения / имя-репозитория', репозиторий будет создан в / var / vcroot / link / repository-name, а клонирование и отправка будут работать должным образом. Но больше я ничего не тестировал.
Отвечая на эту часть вашего вопроса:
Поскольку SSH - единственный известный мне способ удаленного доступа к Mercurial
Вы также можете получить доступ к mercurial удаленно через http / https.
Это зависит от того, входят ли пользователи как они сами или как специальный пользователь Mercurial. Если вы создаете специального пользователя Mercurial и аутентифицируетесь по ключу, то вы можете установить домашний каталог пользователя Mercurial как /var/vcroot/link
, и косая черта после connection-name
будет относительно этого.
Обратите внимание, что ваш второй пример будет нефункциональным из-за отсутствия косой черты по той же причине (т.е. он должен быть ssh://connection-name//var/vcroot/link/repository-name
).
Если у вас есть пользователи, входящие в систему как они сами, то каждый пользователь должен будет создать символическую ссылку на $HOME
чтобы это работало. В качестве альтернативы вы можете сделать /hg
символическая ссылка на /var/vcroot/link
, и используйте ssh://connection-name//hg/repository-name
, который, вероятно, достаточно короткий, чтобы быть удобным.
Мне нравится идея изменить домашний каталог на /var/vcroot/link
, но если они войдут в систему с разными именами пользователей, это не сработает.
Вместо этого вы можете предложить своим пользователям настроить специальную схему для вашего сервера. Стандарт расширение схем позволяет вам это делать. Они должны добавить
[extensions]
schemes =
[schemes]
server = ssh://connection-name//var/vcroot/link/
в файл конфигурации, а затем они могут сделать
$ hg clone server://repository-name
вместо того
$ hg clone ssh://connection-name//var/vcroot/link/repository-name
Если у вас есть контроль над их машинами, вы даже можете включить и настроить расширение в /etc/mercurial/hgrc
файл, чтобы сделать его общесистемным параметром.