Меню:


Пакет Xtla значительно расширяет возможности интеграции Emacs с системой контроля версий GNU Arch (он же tla и/или с Bazaar)1. Данный пакет, в отличии от модуля vc-arch, предоставляет пользователю полный спектр команд для работы с репозиториями GNU Arch. К основным возможностям пакета относятся:

Пакет Xtla в своей работе использует программу tla или baz, так что она должна быть установлена в вашей системе. На момент написания данной статьи была выпущена версия 1.2 пакета Xtla так что в статье будут описаны ее возможности.

Установка пакета

Для работы с пакетом необходимо наличие нескольких пакетов: ewoc.el, который необходим для работы всего пакета Xtla (он поставляется вместе с Xtla, и находится в каталоге contrib), tree-widget.el, который нужен для работы команды tla-browse, и пакет smerge-mode, который не является совсем необходимым, но может быть полезен при разрешении конфликтов.

Скачать пакет можно со страницы проекта. Настройка пакета для установки выполняется с помощью стандартного скрипта configure. Если все прошло нормально, то после установки и перезапуска Emacs, часть функций пакета будет помечена как авто-загружаемая и вы можете использовать их не используя явных команд загрузки. Однако, вы можете загрузить пакет явно, например так:

(require 'xtla-autoloads)

Использование пакета

Команды пакета имеют префиксы tla- и xtla и доступны через предопределенные ключи (сочетания клавиш), для которых используется префикс C-x T. Кроме явного вызова команд через M-x, и использования сочетаний клавиш, Xtla добавляет несколько пунктов в меню Tools, а также создает отдельные меню с именем Tla-..., при работе в режимах, специфичных для работы с GNU Arch.

В целом, работу с Xtla можно разделить на несколько больших задач:

При работе с буферами Xtla для них всех определены общие команды: p — перемещает к предыдущему объекту, n — переходит к следующему объекту, q — прекращает работу с данным буфером, m и u — ставят и снимают пометку с текущего объекта.

Работа с архивами

Для работы с архивами используется команда tla-archives (или сочетание клавиш C-x T A). При ее вызове, пользователю будет показан список зарегистрированных архивов, по которому он сможет перемещаться, и просматривать их содержимое.

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

Сочетание клавиш Команда Описание
a a tla-make-archive создать новый архив
e tla-archive-edit-archive-location редактировать расположение выбранного архива
s tla-archive-synchronize-archive синхронизировать текущий архив
a m tla-archive-mirror-archive создать зеркало текущего архива
a r tla-register-archive зарегистрировать архив
r tla-archive-unregister-archive удалить регистрацию архива
* tla-archive-select-default сделать текущий архив архивом, используемым по умолчанию
RET tla-archive-list-categories отобразить категории для текущего архива
o tla-archive-browse-archive интерактивно показать текущий архив
g tla-archives обновить список архивов
b tla-bookmarks-add добавить закладку для текущего архива

Полный список клавиш, определенных для данного режима, вы можете получить с помощью сочетания клавиш C-h m.

Кроме использования tla-archives вы можете использовать команду tla-browse для просмотра списка зарегистрированных архивов и веток разработки, в более красивом виде. Вы можете видеть результат выполнения на рисунке.

Использование закладок

Закладки сильно облегчают работу разработчика в том случае, если он работает с большим количеством репозиториев. Для наиболее часто используемых версий, разработчик может определить закладки и быстро переходить к нужным архивам и веткам разработки. Для работы с закладками существует специальная команда — tla-bookmarks, которая вызывается сочетанием клавиш C-x T b. После ее выполнения будет создан буфер с именем *tla-bookmarks*, который вы можете использовать для работы с закладками. Для удобства работы также создается меню Tla-Bookmarks, которое содержит часто используемые команды.

Вы можете помечать несколько проектов как партнерские, и использовать затем команды для группы закладок, что особенно удобно в тех случаях, если ведется много веток разработки, и вы хотите быть в курсе разных ветвей разработки. Необходимо лишь пометить нужные проекты и выполнить команду tla-bookmarks-marked-are-partners (она привязана к сочетанию клавиш M-p).

Кроме этого, вы можете группировать проекты по разным принципам, и также выполнять команды для отмеченных групп. Для работы с группами используется серия команд tla-...-group-....

При работе в буфере *tla-bookmarks* в нем определены следующие команды:

Сочетание клавиш Команда Описание
* g tla-bookmarks-select-by-group выбрать закладки в группе
* ! tla-bookmarks-unmark-all снять пометку со всех закладок
RET tla-bookmarks-goto перейти к архиву связанному с данной закладкой
> tla-bookmarks-get получить архив для текущей закладки
= tla-bookmarks-changes выполнить tla changes для текущего дерева
o tla-bookmarks-open-tree открыть локальное дерево в буфере dired
M tla-bookmarks-missing просмотреть изменения, отсутствующие в вашем дереве
P tla-bookmarks-move-up переместить закладку на позицию вверх
N tla-bookmarks-move-down переместить закладку на позицию вниз
i tla-bookmarks-inventory запустить tla inventory для локального дерева
t tla-bookmarks-toggle-details переключить степень детализации вывода
e tla-bookmarks-edit редактировать текущую закладку
B L tla-open-internal-log-buffer открыть внутренний буфер tla. В этом буфере хранится список выполненных команд
B p tla-show-process-buffer отобразить результаты выполнения последней команды
M-p tla-bookmarks-marked-are-partners объявить помеченные закладки как партнеры
a p tla-bookmarks-add-partner-interactive добавить партнера к текущей или помеченной закладке
r p tla-bookmarks-delete-partner-interactive удалить партнерство с текущей или помеченной закладки
f w tla-bookmarks-write-partners-to-file сохранить партнерство для помеченных закладок в файл партнеров
f r tla-bookmarks-add-partners-from-file добавить список партнеров из файла партнеров
a n tla-bookmarks-add-nickname-interactive добавить имя для текущей закладки
r n tla-bookmarks-delete-nickname-interactive удалить имя для текущей закладки
a t tla-bookmarks-add-tree-interactive добавить локальное дерево к закладке
r t tla-bookmarks-delete-tree-interactive удалить локальное дерево из закладки
a b tla-bookmarks-add добавить закладку для архива
r b tla-bookmarks-delete удалить текущую закладку
a g tla-bookmarks-add-group-interactive добавить группу закладок
r g tla-bookmarks-delete-group-interactive удалить группу закладок

Кроме работы с закладками из буфера *tla-bookmarks*, вы можете выполнять действия относящиеся к закладкам из других буферов, например, из буфера для работы с архивами (команда b).

Работа с файлами в выбранном репозитории

При работе с выбранным репозиторием пользователь может выполнять самые разные действия — добавлять и удалять файлы, вставлять теги GNU Arch, и многое другое. Для этого выделены отдельные команды. Однако, более удобным способом работы будет использование буфера объектов (inventories).

Команда tla-inventory (или сочетание клавиш C-x T i) создает буфер *tla-inventory*, который содержит список объектов для выбранного каталога. Вы можете видеть результаты выполнения этой команды на рисунке ниже. Используя данный буфер пользователь может интерактивно работать с объектами репозитория — добавлять и удалять объекты, указывать их тип, просматривать изменения, и выполнять множество других операций. Для выполнения основных команд может использоваться меню Inventory, создаваемое данной командой.

При работе с буфером *tla-inventory* определены следующие команды:

Сочетание клавиш Команда Описание
g tla-generic-refresh обновить содержимое буфера
U tla-inventory-revert отменить изменения в текущем файле
< tla-inventory-mirror сделать зеркало для текущего архива
e tla-inventory-file-ediff запустить Ediff для текущего файла
= tla-inventory-changes просмотреть изменения для вашего дерева
v tla-inventory-view-file показать текущий файл
o tla-inventory-find-file-other-window открыть текущий файл в другом окне
RET tla-inventory-find-file открыть текущий файл
f tla-inventory-find-file открыть текущий файл
L tla-logs запустить tla logs
l tla-changelog запустить tla changelog
c tla-inventory-edit-log редактировать лог для текущего дерева
R tla-inventory-move переименовать текущий файл
X tla-inventory-delete-files удалить локальные файлы
^ tla-inventory-parent-directory перейти в родительский каталог в буфере inventory
r tla-inventory-remove-files удалить идентификаторы для текущего файла
a tla-inventory-add-files добавить текущий файл
t u tla-inventory-toggle-unrecognized переключить режим показа не распознанных файлов
t t tla-inventory-toggle-tree переключить режим показа корневого дерева
t b tla-inventory-toggle-backup переключить режим показа резервных файлов
t j tla-inventory-toggle-junk переключить режим показа "мусорных" (junk) файлов
t p tla-inventory-toggle-precious переключить режим показа precious файлов
t s tla-inventory-toggle-source переключить режим показа файлов исходных текстов
t ~ tla-inventory-toggle-all-toggle-variables переключить все переключаемые переменные
t - tla-inventory-reset-all-toggle-variables сбросить значения всех переключаемых переменных
t + tla-inventory-set-all-toggle-variables установить все переключаемые переменные
# u tla-inventory-add-to-unrecognized пометить текущий или выбранные файлы как не распознанные
# p tla-inventory-add-to-precious пометить текущий или выбранные файлы как precious
# ~ tla-inventory-add-to-backup пометить текущий или выбранные файлы как резервные
# b tla-inventory-add-to-backup пометить текущий или выбранные файлы как резервные
# j tla-inventory-add-to-junk пометить текущий или выбранные файлы как "мусорные"
# e tla-inventory-add-to-exclude пометить текущий или выбранные файлы как исключения
# x tla-inventory-add-to-exclude пометить текущий или выбранные файлы как исключения
# V tla-inventory-set-tree-version задать версию для локального дерева
# M tla-inventory-set-id-tagging-method задать метод идентификации
# . tla-edit-.arch-inventory-file редактировать файл .arch-inventory
# = tla-edit-tagging-method-file редактировать файл =tagging-method=
* ! tla-inventory-unmark-all снять пометку со всех файлов
* u tla-inventory-unmark-file снять пометку с файла
* m tla-inventory-mark-file пометить текущий файл
w a tla-save-archive-to-kill-ring сохранить имя архива текущего буфера в список удалений
W l tla-tree-lint проверить текущее дерево
W a tla-inventory-apply-changeset-from-tgz применить набор изменений из файла .tgz
W A tla-inventory-apply-changeset применить набор изменений
W v tla-show-changeset-from-tgz показать набор изменений из файла .tgz
W V tla-show-changeset показать набор изменений
W s tla-changes-save-as-tgz сохранить изменения в виде файла .tgz
W S tla-changes-save сохранить набор изменений в каталоге
W R tla-inventory-redo применить изменения, отмененные последней операцией отмены
W U tla-inventory-undo отменить изменения для всего локального дерева
B b tla-bookmarks отображает закладки в отдельном буфере
B L tla-open-internal-log-buffer открыть внутренний буфер tla. В этом буфере хранится список выполненных команд
B p tla-show-process-buffer отобразить результаты выполнения последней команды
M < tla-inventory-apply-changeset применить набор изменений
M u tla-inventory-update обновить текущее дерево из архива методом update
M r tla-inventory-replay обновить текущее дерево из архива методом replay
M s tla-inventory-star-merge слить вместе изменений из другого архива
d > tla-inventory-delta вычислить список изменений для текущего дерева
d e tla-inventory-file-ediff запустить Ediff для текущего файла
d l tla-changes-last-revision показать изменения относительно последнего релиза
d = tla-inventory-changes показать список изменений для текущего дерева
d m tla-inventory-missing показать список отсутствующих изменений

Пользователь может управлять отображением объектов в буфере, например, скрывая файлы резервных копий (backup), или файлы, заведомо содержащие ненужные данные (junk). Для этого используются команды tla-inventory-toggle-...

Работа с изменениями ведется аналогично работе с изменениями в пакете PCL-CVS. Вы можете просмотреть список измененных файлов с помощью команды tla-changes (или используя сочетание клавиш C-x T c), которая покажет вам список измененных файлов (он отображается в буфере *tla-changes*), и сами изменения. С помощью команды tla-changes-edit-log (клавиша c в буфере *tla-changes* вы можете ввести сообщение, описывающее изменения, и затем установить изменения в репозиторий, используя сочетание клавиш C-c C-c. Можно также вносить изменения только для отмеченных файлов, что помогает делать изменения атомарными.

Настройка

Настройка данного пакета не проста, а очень проста — выполните команду M-x customize-group xtla и задайте все необходимые опции. Диапазон настроек очень велик — начиная от расположения команд, необходимых для работы, и до задания параметров отображения данных. Вы также можете задать префиксное сочетание клавиш, отличное от используемого по умолчанию.

Пакет позволяет пользователю задать хуки практически на каждую из реализованных им операций. Это позволит пользователю более тонко контролировать работу с данными в репозитории.

Дополнительная информация

Немного дополнительной информации вы можете найти на странице GNU Arch WiKi, по адресу http://wiki.gnuarch.org/xtla. И конечно весь сайт GNU Arch WiKi будет вам великолепным подспорьем в работе с GNU Arch.

Для получения полного списка команд, используйте сочетание клавиш C-x T C-h. Вы также можете получить справку по конкретной команде tla, используя сочетание клавиш C-x T h command, что приводит к запуску команды tla command -H.


1. В настоящее время ведется разработка пакета dvc, который является развитием идей заложенных в Xtla и в котором планируется реализовать поддержку разных распределенных систме контроля версий, в том числе и отличных от Xtla. Более подробную информацию вы можете найти на сайте xtla.

Last change: 05.03.2013 16:54

blog comments powered by Disqus