Как сохранить наборы изменений в фазе "черновик" на hg push?

Как я могу помешать Mercurial переводить наборы изменений в фазу "public" в операциях push? Я хочу, чтобы они остались "черновиками".

Я много перебазирую и гистедит, и репозиторий, к которому я обращаюсь, предназначен только для меня. И необходимость постоянно менять фазу - это неприятность.

4 ответа

Решение

То, что документация не ясно показывает, является:

Изменение фазы при толчке не является чисто локальным решением. - После "загрузки" наборов изменений клиент запрашивает у сервера обновления относительно фаз фиксации, и сервер обычно говорит, что они теперь "общедоступны".

Таким образом .hgrc-snippet

[phases]
publish = False

должен быть установлен на сервере, что препятствует обычному фазовому переходу. Затем сервер сообщит о фазах так же, как они были отправлены.

Bitbucket имеет опцию для этого в Настройки → Сведения о репозитории → Фазы.

Самый прямой способ сохранить фазу на draft это настроить удаленный сервер как "не публикуемый", как вы уже обнаружили.

Но есть и второй способ, который может быть полезен для некоторых, если конечный сервер по какой-либо причине не может быть настроен как "не публикуемый": Используйте pull вместо push, Извлечение доступно только для чтения, поэтому, если вы можете настроить рабочий процесс (например, через локальный псевдоним), чтобы удаленные извлекали изменения из локального репо, они останутся в фазе draft,

https://www.mercurial-scm.org/wiki/Phases

A repository is "publishing" by default. To make a repository non-publishing, add these lines to its hgrc configuration:


[phases]
publish = False

Краткий ответ: нет

Если вы хотите переписать историю как локально, так и на push-target, вы должны

  • включить (с обеих сторон)
  • Понимаю
  • использовать расширение Evolve (пока экспериментальное)
Другие вопросы по тегам