Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgbook.pdf
Скачиваний:
50
Добавлен:
17.03.2015
Размер:
3.15 Mб
Скачать

Управление изменениями

сMercurial Queues

Это не очень хорошая идея, использовать hg merge изменений из другой ветви с ревизией патча, по крайней мере, если вы хотите сохранить «патченость» этой ревизии и ревизий ниже её в стеке патчей. Если вы попытаетесь сделать это, всё пройдёт успешно, но MQ будет запутан.

12.12. Управление патчами в репозитории

Так как каталог .hg/patches находится вне рабочего каталога репозитория Mercurial, «основной» Mercurial репозиторий ничего не знает об управлении или наличие патчей.

Это открывает интересные возможности управления содержанием каталога патчей как отдельным Mercurial репозиторием внутри собственного репозитория. Это может быть полезным для работы. Например, вы можете работать над патчем некоторое время, выполнить qrefresh, потом hg commit для текущего состояния патча. Это позволяет вам «откатываться» на этоу версию патча позже.

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

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

12.12.1. Поддержка MQ для репозитория патчей

MQ позволяет работать с директорией .hg/patches как с репозиторием, когда вы готовите репозиторий для работы с патчами используя qinit, вы можете передать опцию hg -c для создания каталога .hg/patches как репозиторий Mercurial.

Примечание

Если вы забыли использовать опцию hg -c, вы можете просто пойти в каталог .hg/patches в любое время и выполнить hg init. Не забудьте добавить запись в .hgignore о файле status, хотя (hg qinit hg -c делает это за вас автоматически); Вы ведь действительно не хотите, отслеживать файл

status.

Для удобства, если MQ замечает, что каталог .hg/patches репозиторий, он будет автоматически выполнять hg add каждый патч, который вы создаете или импортируете.

MQ обеспечивает короткую команду qcommit, запускающую hg commit в директории .hg/patches.

Наконец, для удобства управления директорией патчей, можно определить alias mq на системах Unix. Например, в системах linux c помощью оболочки bash, вы можете включить следующий фрагмент в файле ~/.bashrc.

alias mq=`hg -R $(hg root)/.hg/patches'

После этого можно отдавать команды вида mq pull из главного репозитория.

12.12.2. Несколько вещей для отслеживания

MQ поддерживает для работы с репозиторием полные патчи ограниченного небольшими отношениями.

MQ не умеет автоматически обнаруживать изменения, внесенные в каталог патчей. Если вы выполнили hg pull, вручную отредактировали, или сделали hg update изменений для патчей или файлом series, вам придется выполнить hg qpop -a and then hg qpush -a в базовом хранилище, чтобы увидеть эти изменения там. Если вы забудете это сделать, вы можете спутать MQ планы применения патчей.

152

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]