Назад | Перейти на главную страницу

Mercurial - установить корень репозитория?

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