Оглавление phases

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

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

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

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

      - публичная : набор изменений опубликован на общедоступном сервере
      - черновая : набор изменений ещё не опубликован
      - секретная : он не должен проталкиваться, затягиваться, клонироваться

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

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

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

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

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

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

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

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

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

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

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

      [phases]
      publish = False

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

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

    Примеры
    =======

     - перечислить наборы изменений в черновой или секретной фазе:

         hg log -r "not public()"

     - установить все секретные наборы изменений в черновую фазу:

         hg phase --draft "secret()"

     - принудительно переместить текущий набор изменений и потомков из
       публичной фазы в черновую:

         hg phase --force --draft .

     - показать список из номера ревизий и фазы:

         hg log --template "{rev} {phase}\n"

     - синхронизировать черновые ревизии относительно отдаленного хранилища:

         hg phase -fd 'outgoing(URL)' 

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