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

Добавление функциональности с помощью расширений.

Если команда просмотра diff не может справиться с каталогами, вы можете легко обойти это с небольшим скриптом. В качестве примера таких сценариев в действии с расширением mq и командой interdiff смотрите в разделе Раздел 13.9.2, «Просмотр истории патча».

14.2.1. Определение псевдонимов команд

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

Все, что вам нужно сделать, это отредактировать файл ~/.hgrc, а также добавить раздел с именем extdiff. Внутри этого раздела, вы можете указать несколько команд. Вот как можно добавить команду kdiff3. Как только вы определите её, вы сможете ввести «hg kdiff3» и extdiff расширение будет запускать kdiff3.

[extdiff] cmd.kdiff3 =

Если вы оставите правую часть определения пустой, как выше, extdiff модуль использует имя команды, которую Вы определили в качестве имени внешней программы для запуска. Однако эти имена не должны быть одинаковыми. Здесь мы определим команду под названием «hg wibble», которая запускает kdiff3.

[extdiff]

cmd.wibble = kdiff3

Вы можете также задать параметры по умолчанию, которые вы хотите передать вашей программе просмотра diff. Используя префикс «opts.», а затем имя команды, для которой применяются параметры. Этот пример определяет команду «hg vimdiff», которая запускает расширение DirDiff редактора vim.

[extdiff] cmd.vimdiff = vim

opts.vimdiff = -f '+next' '+execute "DirDiff" argv(0) argv(1)'

14.3. cherrypicking изменений используя расширение transplant

Необходимо побеседовать с Бренданом об этом.

14.4. Отправить изменений по электронной почте с расширением patchbomb

Многие проекты поддерживают культуру «Обзора изменений», в которой люди отправляют их модификаций в список рассылки, чтобы другие могли прочитать и прокомментировать, прежде чем они зафиксируют окончательный вариант в общем репозитории. В некоторых проектах, есть люди, которые выступают в качестве хранителей, они применяются изменения со стороны других людей в репозиторий, в который другие не имеют доступа.

Mercurial позволяет легко отправлять по электронной почте ревизии для просмотра или применения, с помощью расширения patchbomb. Расширение называется так потому, ревизии отправляются в формате патчей, и обычно отправляется одна ревизия в сообщении. Отправка большого количества изменений по электронной почте, таким образом, подобна «бомбардировке» почтового ящика получателя, поэтому и «patchbomb».

Как обычно, базовая конфигурация расширения patchbomb занимает всего одну или две строки в файле

~/.hgrc.

[extensions] patchbomb =

После того как вы включите расширение, вам станет доступна новая команда, названная email.

166

Добавление функциональности с помощью расширений.

Безопасный и лучший способ для вызова команды email, всегда запускать сначала с опцией hg -n. Она покажет вам, что команда будет отправлять, фактически не пересылая ничего. После того как вы бросите быстрый взгляд на изменения и убедитесь, что вы отправляете всё правильно, вы можете запустить эту же команду без опции hg -n.

Команда email понимает такой же синтаксис указания ревизии как и любая другая команда Mercurial. Например, эта команда будет посылать каждую ревизию между 7 и tip включительно.

hg email -n 7:tip

Вы также можете указать репозиторий для сравнения. Если вы предоставляете репозиторий, но не ревизию, команда email отправить все изменения в локальном репозитории, которые не представлены в удаленном репозитории. Если вы дополнительно укажите ревизию или название ветки (последняя с использованием опции hg -b), письма будут содержать эти ревизии.

Это совершенно безопасно выполнить команду email без указания имен людей, которым вы хотите отправить документ: если вы это сделаете, вам будет выдано приглашение указать их в интерактивном режиме. (Если вы используете linux или unix-подобную операционную систему, вы должны иметь расширенные в readline-стиле возможности редактирования при вводе этих заголовков, что тоже полезно.)

Когда вы отправляете только одну ревизию, команда email по умолчанию будет использовать первую строку ревизии в качестве заголовка единственного отправленного сообщения.

Если вы отправляете несколько ревизий, команда email, как правило, отправляет сообщение на каждое изменение. Вместе с предисловием серии с вступительным сообщением, в котором вы должны описать цель набора изменений, которые вы посылаете.

14.4.1. Изменение поведения patchbomb

Не каждый проект имеет одинаковую конвенцию, для отправки ревизий по электронной почте; patchbomb расширение пытается приспособиться под различные варианты с помощью параметров командной строки.

Вы можете написать вступительное сообщение в командной строке, используя опцию hg -s. Она принимает один аргумент, текст который используется в заголовке.

Чтобы изменить адрес электронной почты, с которого отправляются сообщения, используйте опцию hg -f. Она принимает один аргумент, адрес электронной почты.

По-умолчанию, отправляется унифицированный diff (см. раздел Раздел 12.4, «Понимание патчей» для описания формата), один на сообщение. Вы можете отправить бинарный пакет вместо этого с использованием опции hg -b.

Унифицированному diff обычно предшествуют метаданные заголовка. Вы можете пропустить его, и отправить без всяких украшений diff используя опцию hg --plain.

Различия, как правило, отправляются «встроенными» в тело письма, как и описание патча. Это делает их просмотр простым для наибольшего числа читателей, цитирования и ответов на части diff-а, так как некоторые почтовые клиенты, цитируют только первую часть MIME тела в сообщении. Если вы хотите, отправлять описание и различия в отдельных частях тела, используйте опцию hg -a.

Вместо отправки почты, вы можете записать их в папку формата mbox с помощью опции hg -m. Эта опция принимает один аргумент, имя файла для записи.

Если вы хотели бы добавить сводку diffstat-формата для каждого патча, и одну во вступительное сообщение, используя опцию hg -d. Команда diffstat отображает таблицу, содержащую имя каждого файла в патчах, количество строк затронутого, и гистограмму, показывающую, как каждый файл будет изменен. Это дает читателям качественный взгляд на комплекс патчей.

167

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