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 файл, чтобы сделать его общесистемной настройкой.

Другие вопросы по тегам