Почему Mercurial не поддерживает создание удаленных репозиториев по HTTP? - PullRequest
9 голосов
/ 08 февраля 2011

Я знаю, что не возможно для удаленного создания хранилищ Mercurial с использованием HTTP (S), например:

$ hg init https://host.org/repos/project

или

$ hg clone /path/to/local/project https://host.org/repos/project

Но в чем причина? Проблемы с безопасностью? В этом нет необходимости? Просто потому, что никто еще не реализовал это?

Обоснование этого вопроса: В моей компании мы совместно используем большинство ресурсов через HTTPS, т. Е. Разрешения на доступ управляются только Apache, и обычные пользователи не могут войти в систему через SSH на сервере. Это просто идеально, если нужно обслуживать только репозитории (для этого мы довольны hgwebdir.cgi). Однако мы также хотим разрешить удаленное создание репозиториев без необходимости поддерживать дополнительные / исправленные сценарии на сервере и дополнительные инструменты на клиентах.

Для ясности: этот вопрос не требует решения нашей конкретной проблемы, но объясняется тем, почему Mercurial не поддерживает эту функцию сама.


UPDATE

Вот более техническое описание ситуации, о которой я думаю. Предполагается, что hgwebdir.cgi обслуживает коллекцию репозиториев в /path/to/repos в https://.../repos (с включенным проталкиванием). Каждый пользователь, которому разрешен доступ к этому URL (как настроено в Apache), может извлекать и выдвигать наборы изменений, фактически это означает, что hgwebdir.cgi (и, следовательно, hg) редактирует и создает файлы со значением ниже /path/to/repos. Теперь, каков барьер, позволяющий hgwebdir.cgi также создавать новые репозитории ниже /path/to/repos?

Ответы [ 3 ]

5 голосов
/ 18 февраля 2011

Я думаю, причина в том, что добавление поддержки для создания репозиториев принесет изрядное количество багажа:

  • если вы можете создавать репозитории, вы ожидаете, что сможете их удалить. Хотя это может показаться простым, это было бы большим шагом в сторону от безопасного способа, которым обычно работает Mercurial - в стандартном Mercurial нет деструктивных команд.

  • люди также хотели бы отредактировать файлы .hg/hgrc, чтобы задать описание и контактную информацию - стандартный Mercurial никогда не изменяет файлы конфигурации, так что это снова будет новостью.

  • люди также хотели бы управлять доступом пользователей к новым репозиториям - это означает редактирование файлов .htaccess или эквивалент для других веб-серверов.

... и так далее. Реализация этой «маленькой» функции откроет множество дополнительных запросов к функциям, и у нас есть только несколько разработчиков Mercurial, которые также являются пьяными веб-разработчиками.

Однако теперь существует отличное решение с открытым исходным кодом: Kallithea предоставляет вам «мини-Bitbucket», который вы можете развернуть на своем собственном сервере. Это сделает все вышеперечисленное. Я установил бы это на моем сервере, если бы мне нужно что-то более мощное, чем обычный hgweb.cgi. Он поддерживает как Mercurial, так и Git.

0 голосов
/ 08 февраля 2011

Различные ответы (включая ваш собственный) дают довольно веские причины, почему функциональность отсутствует (в основном разделение интересов), но если вы действительно хотите добавить ее, вы можете сделать это всего лишь одной или двумя строками. Вот ужасно небезопасный пример, который я привел довольно давно и показывающий, как добавить эту функциональность в с высоким уровнем доверия : Создание удаленного репозитория в Mercurial по HTTP

0 голосов
/ 08 февраля 2011

Насколько я знаю, ни одна из альтернатив SCM не позволяет создавать удаленные репозитории изначально. SVN, CVS, Git и др.

Обычно это работа хостинг-провайдера: SourceForge, Google Code, BitBucket. Все они реализуют создание хранилища поверх своей инфраструктуры аутентификации.

Например, Mercurial хостинг Debian предназначен только для разработчиков Debian, и для создания нового репозитория вам нужно войти через SSH на сервер и создать репозиторий в вашей локальной домашней папке, очень похоже на Каталог Apache public_html.

...