Как мне сообщить (локально) mercurial, что сервер не публикуется?

Как я могу сообщить Mercurial, что удаленный сервер (например, на bitbucket) не публикуется, когда у меня нет доступа к удаленный файл .hg/hgrc?

Задний план

Последние версии mercurial имеют концепцию этапов, которые позволяют отслеживать, какие наборы изменений были разделены (public), а какие нет (draft). Операции изменения репозитория, такие как rebase, разрешены для draft наборов изменений, но не для public наборов изменений, как это могут делать другие зависят от последнего.

Отправка наборов изменений на общедоступный сервер изменит их фазу на public по умолчанию, но если сервер частный или предназначен для проверки кода (т. е. люди не должны иметь возможность извлекать), то отправка на этот «не публикуемый» сервер не должна меняться. фаза.

задокументированный способ сообщить Mercurial, что сервер не публикует, заключается в добавлении раздел [phases] в файл .hg/hgrc на сервере:

[phases]
publishing = false

Мне кажется, что должен быть способ включить в один из моих локальных файлов hgrc строку, в которой говорится, что конкретный сервер не публикуется, но я не могу найти никакой документации, чтобы предложить, как это сделать. Возможно, это поведение можно настроить с помощью хука?

использованная литература


person mforbes    schedule 23.05.2012    source источник
comment
Хороший вопрос, и я подозреваю, что один лучше поднять в списке рассылки. Возможно, необходимо изменить outgoing, чтобы в нем было указано, будет ли chageset менять фазу.   -  person Paul S    schedule 24.05.2012
comment
Примечание для будущих зрителей этого вопроса: у BitBucket теперь есть возможность настроить репозиторий на непубликацию. В таком случае выполнение того, о чем просил OP, было бы ненужным. Я подозреваю, что потребность в этом отпадет.. например , пользовательские репозитории Mozilla не публикуются с февраля 2015 года (mozilla-version-control-tools.readthedocs.org/en/latest/)   -  person martian111    schedule 18.06.2015
comment
В частности, для битбакета (поскольку он помечен) вы можете настроить это в настройках репозитория.   -  person binki    schedule 27.07.2017
comment
В документации теперь говорится, что публикация = ложь, а не публикация = ложь.   -  person Tom    schedule 26.07.2019


Ответы (1)


В настоящее время нет способа сделать это, и, надеюсь, этого никогда не произойдет.

Вот почему:
Если вы позволяете локальному репозиторию переопределять конфигурацию удаленного репозитория, вы просто делаете весь фазовый механизм бесполезным. Цель этих фаз — предотвратить выполнение пользователем действий, которые могут «испортить» поток синхронизации.
Ответственность за описание того, как будут использоваться полученные наборы изменений, лежит на получателе. Если вы инвертируете эту логику, позволив отправителю переопределить эти настройки, то как вы можете гарантировать, что два отправителя будут использовать одну и ту же конфигурацию? Если конфигурация отличается, какую из них следует сохранить? Как должны быть отмечены наборы изменений на приемнике?

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

person gizmo    schedule 25.05.2012
comment
Я согласен, что правильно настроить сервер, но я не могу (версия 1.9, и у меня нет полномочий). Однако, в отличие от вашего контрпримера, то, что я предлагаю, не влияет на сервер, поэтому я не вижу причин, по которым такое локальное переопределение не должно быть доступно (на основе необходимости использования, потому что сервер сломан) . Ведь я могу мучительно добиться того же эффекта ручной перефазировкой. Чтобы ответить на ваши вопросы: сервер будет игнорировать клиента, как и в случае с 1.9, когда он не знает о фазах. Речь идет только о местном управлении. - person mforbes; 25.05.2012
comment
Я не вижу смысла в требовании участия получателя, особенно в случае услуг хостинга. В службе хостинга может быть очень просто и доступно для всех создание частной ветки, к которой есть доступ только у вас, но невозможно пометить ее как не публикуемую, потому что хостинг-провайдер еще не реализовал ее. Было бы естественно иметь возможность пометить его как удаленный без публикации в ~/.hgrc. - person binki; 27.07.2017