Mercurial - установить корень хранилища?
Я настраиваю макет репозитория Mercurial, и у меня есть каталог со всеми репозиториями в нем.
/var/vcroot/link/[repository]
Поскольку SSH - это единственный способ удаленного доступа к Mercurial, я знаю, как настроить аутентификацию с открытым ключом и настроить соответствующие переменные среды. Что я хочу знать, есть ли способ установить корень хранилища, чтобы пользователи могли просто набрать
ssh://connection-name/repository-name
В отличие от необходимости сделать это:
ssh://connection-name/var/vcroot/link/repository-name
Я хочу что-то вроде svn -r опция.
4 ответа
Это зависит от того, входят ли пользователи в систему как они сами или как отдельный пользователь 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
что, вероятно, достаточно коротко, чтобы быть удобным.
Я решил это, создав сценарий оболочки / 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.
Мне нравится идея изменить домашний каталог на /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
файл, чтобы сделать его общесистемной настройкой.