Не могли бы вы дать несколько советов по настройке Mercurial через HTTP / HTTPS? Я настраиваю сервер разработки (Debian), на котором я хочу создать ртутный репозиторий и отправить изменения на сервер. Мне нужно пройти аутентификацию, чтобы предотвратить ненужный доступ.
Заранее спасибо.
Я думаю, что Apache - отличный способ поделиться репозиториями hg. Сценарий hgweb.wsgi не только дает возможность запускать несколько репозиториев, но и позволяет разработчикам удобно ссылаться на исходный код проекта по пути или ревизии из окончательного источника.
Следующая процедура позволит легко опубликовать репозиторий и сделать его доступным через https-соединение для аутентифицированных пользователей.
Прежде всего, я предлагаю сделать клон вашего репо без локального файлового каталога.
hg clone -U <myproject> <myproject_to_serve>
Затем (используя конфигурацию WSGI, что приятно и просто), сделайте следующее:
Переместите репо в удобное место, откуда оно будет обслуживаться:
mv <myproject_to_serve> /var/www/hg/<myproject_to_serve>
Убедитесь, что репозиторий доступен для чтения / записи пользователю веб-сервера:
chown -R www-data:www-data /var/www/hg/<myproject_to_serve>
Теперь настройте права чтения / записи для пользователей проекта и предоставьте некоторую информацию для списка проекта на домашней странице вашего сервера:
vim /var/www/hg/myproject_to_serve>/.hg/hgrc
[web]
description = 'This is my new web-enabled project <myproject>'
contact = support@global.com
# consider limiting push usage to only a subset of users
allow_push = *
Теперь настройте WSGI
vim /var/www/hg/hgweb.config
[paths]
/myproj = /var/www/hg/my_project_to_serve
Теперь настройте apache
<VirtualHost *:443>
ServerName hg.mydomain.net
ServerAdmin webmaster@mydomain.net
ErrorLog /var/www/mydomain/logs/hg_error_log
CustomLog /var/www/mydomain/logs/hg_access_log common
SSLEngine on
SSLCertificateFile /etc/ssl/mydomain_net.crt
SSLCertificateKeyFile /etc/ssl/mydomain_net.key
DocumentRoot "/var/www/hg/"
<Location "/hg">
SetHandler None
</Location>
# path to provided hgweb.wsgi script
WSGIScriptAlias / /var/www/hg/scripts/hgweb.wsgi
<Location / >
AuthType Digest
AuthName "MySoftware"
AuthUserFile /home/software/software_web_permissions
Require valid-user
</Location>
</VirtualHost>
Вышеупомянутое требует наличия:
Серфинг на hg.mydomain.net
покажет вам красиво отформатированный список доступных проектов. hg.mydomain.net/myproj
покажет вам, после успешной аутентификации, текущий статус вашего проекта в соответствии с /var/www/hg/<myproject_to_serve>
репо.
Достаточно хорошее резюме вариантов, а также их преимущества / недостатки доступны на меркуриал вики.
Моя рекомендация, если вам действительно не нужен какой-либо веб-интерфейс, - использовать ssh
вместо этого в качестве транспортного протокола. Это даже не требует реальной настройки, все, что вам нужно, это ssh
и Mercurial установлен.
Один пример: чтобы клонировать удаленное репо с именем hgtest
, который находится по адресу ~username/hgtest
в текущий каталог, используйте команду
hg clone ssh://username@example.com/hgtest