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

Настройка вывода Mercurial

11.1.1. Установка стиля по умолчанию

Вы можете изменить стиль вывода, который Mercurial будет использовать для каждой команды, редактируя файл ~/.hgrc, указав стиль который вы предпочитаете использовать.

[ui]

style = compact

Если вы напишете свой стиль, вы можете использовать его, либо указав путь к файлу стиля или скопировав файл стиля в папку, в которой mercurial сможете его найти (как правило, шаблоны расположены в поддиректории templates того каталога, куда установлен Mercurial).

11.2. Команды, которые поддерживают стили и шаблоны

Все команды Mercurial «похожие на log» позволяют использовать стили и шаблоны: hg incoming, hg log, hg outgoing, и hg tip.

Когда я писал это руководство, только эти команды, поддерживали стили и шаблоны. Поскольку это наиболее важные команды, у которых должен настраиваться вывод, давление со стороны сообщества Mercurial по поводу возможности пользователю добавлять стили и шаблоны для других команд было небольшим.

11.3. Основы шаблонизации

В самом простом случае шаблон mercurial это фрагмент текста. Часть текста не меняется, в то время как другая часть развёртывается и заменяется новым текстом, в случае необходимости.

Для начала давайте посмотрим, как обычно Mercurial оформляет вывод.

$ hg log -r1

 

changeset:

1:6f5ce6bc1898

tag:

mytag

user:

Bryan O'Sullivan <bos@serpentine.com>

date:

Thu Feb 02 14:10:09 2012 +0000

summary:

added line to end of <<hello>> file.

 

 

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

$ hg log -r1 --template 'i saw a changeset\n' i saw a changeset

Приведенный выше пример иллюстрирует простейший шаблон, это просто статичный текст, напечатанный один раз для каждой ревизии. Опция --template команды hg log говорит Mercurial использовать данный текст в качестве шаблона при печати каждой ревизии.

Обратите внимание, что строки шаблона заканчиваются текстом «\n». Это управляющая последовательность, говорящая Mercurial печатать новую строку в конце каждого пункта шаблона. Если вы пропустите этот символ новой строки, Mercurial будет печатать все блоки на одной строке. Смотрите раздел Раздел 11.5, «Escape последовательности»; для более подробной информации о управляющих последовательностях.

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

$ hg log --template 'i saw a changeset: {desc}\n'

i saw a changeset: Added tag v0.1 for changeset b94147c22394 i saw a changeset: Added tag mytag for changeset 6f5ce6bc1898 i saw a changeset: added line to end of <<hello>> file.

in addition, added a file with the helpful name (at least i hope that some might consider it so) of goodbye.

130

Настройка вывода Mercurial

i saw a changeset: added hello

Как видите, строка «{desc}»> в шаблоне заменяется на выходе описанием каждой ревизии. Каждый раз, когда Mercurial читает, текст, заключенный в фигурные скобки («{» и «}»), он будет пытаться заменить фигурные скобки и текст подставляя все, что внутри. Для печати символа фигурной скобки, вы должны экранировать ее, как описано в разделе Раздел 11.5, «Escape последовательности».

11.4. Обычные ключевые слова шаблонов

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

author: string. Неизменяемый автор ревизии.

branches: string. Название ветки, в которой была зафиксирована ревизия. Будет пустым, если имя ветки default.

date: Дата. Дата, когда была зафиксирована ревизия. Эта дата не человекочитаема, надо пропустить её через фильтр, чтобы отобразить её соответствующим образом. Смотрите раздел Раздел 11.6, «Фильтрация ключевых слов, чтобы отобразить результат» для получения дополнительной информации об этих фильтрах. Дата выражается в виде пары чисел. Первое метка времени Unix UTC (в секундах с 1 января 1970); второе является смещением часового пояса коммиттера от UTC в секундах.

desc: string. Текст описания ревизии.

files: Список строк. Все файлы, измененные, добавленные или удаленные в этой ревизии.

file_adds: Список строк. Файлы, добавляемые в этой ревизии.

file_dels: Список строк. Файлы, удаляемые в этой ревизии.

node: string. Идентификационный хеш ревизии, 40-символьная шестнадцатеричная строка.

parents: Список строк. Родители ревизии.

rev: Число. Номер ревизии локальный для репозитория.

tags: Список строк. Любые теги, связанные с ревизией.

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

$ hg log -r1 --template 'author: {author}\n' author: Bryan O'Sullivan <bos@serpentine.com> $ hg log -r1 --template 'desc:\n{desc}\n' desc:

added line to end of <<hello>> file.

in addition, added a file with the helpful name (at least i hope that some might consider it so) of goodbye.

$ hg log -r1 --template 'files: {files}\n' files: goodbye hello

$ hg log -r1 --template 'file_adds: {file_adds}\n' file_adds: goodbye

$ hg log -r1 --template 'file_dels: {file_dels}\n' file_dels:

$ hg log -r1 --template 'node: {node}\n'

node: 6f5ce6bc18989ecdb1e0ddf5d63d539787a66eb2 $ hg log -r1 --template 'parents: {parents}\n' parents:

$ hg log -r1 --template 'rev: {rev}\n' rev: 1

$ hg log -r1 --template 'tags: {tags}\n' tags: mytag

131

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