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

Расширенное использование

Mercurial Queues

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

13.9. Полезные советы для разработки с MQ

13.9.1. Организация патчей в каталогах

Если вы работаете на крупный проект с MQ, не трудно накопить большое количество патчей. Например, у меня есть репозиторий патчей, который содержит более 250 патчей.

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

13.9.2. Просмотр истории патча

Если вы разрабатываете набор патчей в течение длительного времени, хорошая идея сохранить их в репозитории, о чем говорится в разделе Раздел 12.12, «Управление патчами в репозитории». Если вы это сделаете, вы быстро обнаружите, что использование команды hg diff, чтобы взглянуть на историю изменений патча обреченно на провал. Это отчасти потому, что вы смотрите на вторую производную от реального кода (список различий различий), но также и потому, MQ добавляет шуму в этот процесс, меняя временные метки и имена каталогов при обновлении патча.

Тем не менее, вы можете использовать расширение extdiff, которое поставляется вместе с Mercurial, для просмотра различий двух версий патча в читабельном виде. Для этого вам понадобится сторонний пакет называющийся patchutils [web:patchutils]. Он дает команду interdiff, которая показывает разницу между двумя diff-ами как diff. Используется на двух версиях одного и того же патча, она выдаёт diff, который представляет собой различия с первой по вторую версии.

Вы можете включить расширение extdiff обычным способом, путем добавления строки в раздел extensions

вашего ~/.hgrc.

[extensions] extdiff =

Команда interdiff ожидает два аргумента — два названия файлов, но расширение extdiff передаёт в запускаемую программу пару каталогов, каждый из которых может содержать произвольное количество файлов. Таким образом, потребуется небольшая программа, которая будет запускать interdiff к каждой паре файлов в этих двух каталогах. Эта программа существует и называется hg-interdiff в каталоге examples репозитория исходного кода, прилагаемый к этой книге.

Запустить программу hg-interdiff в в вашей консоли, вы можете запустить его следующим образом, внутри каталога патчей MQ:

hg extdiff -p hg-interdiff -r A:B my-change.patch

Так как вы, наверное, хотите, чтобы использовать эту многословную команду часто, вы можете получить hgext чтобы сделать её доступной как обычную Mercurial команду, опять же, редактированием ~/.hgrc.

[extdiff]

cmd.interdiff = hg-interdiff

Эта строка приказывает hgext сделать команду interdiff доступной, поэтому теперь вы можете сократить предыдущую команду extdiff до чего-то чуть более простого.

hg interdiff -r A:B my-change.patch

Примечание

Команда interdiff хорошо работает только если лежащее в основе патчей остаются теми же. Если при создании патча, изменить основные файлы, а затем сгенерировать патч, interdiff не сможет произвести полезный вывод.

161

Расширенное использование

Mercurial Queues

Расширение extdiff полезно для более просто улучшение отображения патча MQ. Чтобы узнать больше о ней, перейдите в раздел Раздел 14.2, «Гибкая поддержка diff с расширением extdiff».

162

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