Работа c фазами

Что такое фазы?

Фазы - это система для отслеживания того, какие наборы изменений были или должны быть публично доступны. Это помогает предотвратить часто совершаемые ошибки при изменение истории (например, при помощи расширений mq или rebase).

Каждый набор изменений хранилища находится в одной из следующих фаз:

Фазы расположены в следующем порядке: публичная < черновая < секретная, при этом набор изменений не может находится в фазе, меньшей фазы его предков. Например, если набор изменений находится в публичной фазе, то и все его родительские ревизии будут в публичной фазе. Наконец, фазы набора изменений следует менять только в сторону пулбичной фазы.

Как происходит работа с фазами?

Как правило работа с фазами прозрачна для пользователя. По умолчанию набор изменений создается в черновой фазе и перемещается в публичную фазу при проталкивании в другое хранилище.

После того, как набор изменений стал публичным, расширения вроде mq или rebase откажутся работать с ним, чтобы предотвратить создание дублирующихся наборов изменений. При необходимости фазами можно также манипулировать вручную с помощью команды 'hg phase'.

To make your commits secret by default, put this in your configuration file:

[phases]
new-commit = secret

Фазы и серверы

Как правило, все серверы по умолчанию "публичные". Это означает:

- все черновые наборы изменений, которые затягиваются или клонируются,
имеют публичную фазу на стороне клиента
- все проталкиваемые черновые наборы изменений становятся публичными
как на клиенте, так и на сервере
- секретные наборы изменений не проталкиваются, не затягиваются
и не клонируются

Примечание:

Затягивание чернового набора изменений из "публикующего" сервера не сделает этот набор публичным на сервере, т.к. команда pull выполняется в режиме "только чтение".

Иногда может потребоваться проталкивать и затягивать наборы изменений в черновой фазе, чтобы поделиться неоконченной работой. Это может быть реализовано путем отключения "публичности" в файле конфигурации:

[phases]
publish = False

См. 'hg help config' для справки по файлам конфигурации.

Примечание:

Серверы, работающие со старыми версиями Mercurial, считаются публикующими.

Примечание:

Обмен с сервером наборами изменений в секретной фазе не производится. Это относится к их содержимому: именам файлов, содержимому файлов, метаданным ревизий. По техническим причинам идентификатор секретной ревизии (например, d825e4025e39) может быть отправлен на сервер.

Примеры

См. 'hg help phase' — о том, как изменять фазы вручную.