Как я могу сообщить Mercurial, что удаленный сервер (первоначально, например, на битбакете, но они больше не поддерживают Mercurial) не публикуется, если у меня нет доступа к удаленному .hg/hgrc
файлу?
Фон
В последних версиях mercurial есть концепция фаз, которая позволяет отслеживать, какие наборы изменений были общими ( public
), а какие нет ( draft
). Подобные операции изменения репозитория rebase
разрешены для draft
наборов изменений, но не public
наборов изменений, поскольку другие могут зависеть от последнего.
Отправка наборов изменений на общедоступный сервер изменит их фазу на фазу public
по умолчанию, но если сервер является частным или предназначен для проверки кода (т. е. люди не должны иметь возможности извлекать), то отправка на этот «не публикуемый» сервер не должна изменять фаза.
Документированный способ сообщить Mercurial, что сервер не публикуется, — это добавить [phases]
раздел в .hg/hgrc
файл на сервере:
[phases]
publish = false
Мне кажется, должен быть способ включить в один из моих локальных hgrc
файлов строку, в которой говорится, что конкретный сервер не публикуется, но я не могу найти никакой документации, чтобы предложить, как это сделать. Возможно, это поведение можно настроить с помощью хука?
Рекомендации
Решение проблемы
В настоящее время нет способа сделать это, и, надеюсь, этого никогда не произойдет.
Вот почему:
если вы позволяете локальному репозиторию переопределять конфигурацию удаленного репозитория, вы просто делаете весь фазовый механизм бесполезным. Смысл фаз в том, чтобы запретить пользователю выполнять действия, которые могут «испортить» поток синхронизации.
Ответственность за описание того, как будут использоваться полученные наборы изменений, лежит на получателе. Если вы инвертируете эту логику, позволив отправителю переопределить эти настройки, то как вы можете гарантировать, что два отправителя будут использовать одну и ту же конфигурацию? Если конфигурация отличается, какую из них следует сохранить? Как должны быть отмечены наборы изменений на приемнике?
В какой-то степени это было бы так же, как если бы локальный репозиторий мог передавать наборы изменений на удаленный без авторизации, просто локально переопределяя удаленную конфигурацию.
Комментариев нет:
Отправить комментарий