В принципе, как мне это сделать в Mercurial Repository?
В настоящее время я настроил Location в Apache так, чтобы требовать SSL, использовать базовую аутентификацию и требовать действительного пользователя. Это немного, поскольку я хочу разрешить анонимное извлечение, просто требуется базовая аутентификация для толкателей - прямо сейчас пользователь / пароль требуются для простого просмотра репозитория в веб-браузере. Я бы хотел постоянно требовать SSL и не хочу размещать один и тот же репозиторий дважды (чтобы иметь другое Location для pull-only и другое для проверенного push).
Чес Мартин ведет хороший блог с подробностями о том, как он настраивает Mercurial в соответствии с вашими запросами.
<LimitExcept GET>
require valid-user
</LimitExcept>
Этот фрагмент из конфигурации Apache является частью того, что необходимо для разрешения анонимного извлечения (или просмотра, если опубликовано через hgweb), но по-прежнему требует пропуска для push.
То, что вы ищете, может быть LimitExcept директива Apache. Что-то вроде:
<LimitExcept GET>
Require valid-user
</LimitExcept>
Так что пользователь / пропуск потребуется для чего-либо еще, кроме запроса GET. Но я не знаю Mercurial и не знаю как hg push
сделано. Если это запрос POST, он будет в порядке, но может быть, что POST также потребуется для извлечения.
Вы усложняете свою проблему, требуя SSL для анонимного запроса, и я понятия не имею, к чему вы стремитесь, делая это. Если кто-то может извлекать данные без аутентификации, любой может увидеть все данные, просто спросив, что делает обнюхивание проводов полностью избыточным, поэтому нет смысла их шифровать.
Я настоятельно рекомендую выбрать более простой путь: разместить анонимный дистрибутив на http и сохранить https для пушей.