Меню:


Monotone — распределённая система контроля версий по концепции схожая с GNU Arch и Darcs. Работа с Monotone из Emacs обеспечивается пакетом monotone.el, который идёт в составе дистрибутива Monotone. Также достаточно полная поддержка Monotone обеспечивается специальным модулем из пакета DVC, который описан в разделе Работа с DVC.

Установка пакета monotone.el

Пакет monotone.el идёт в поставке Monotone. Вы можете найти его в подкаталоге contrib дистрибутива Monotone. Пакет тестировался только с GNU Emacs версии 22.1, но наверное будет работать и с другими версиями Emacs. Для работы с данным пакетом поместите его туда, где его найдёт Emacs и поместите в файл инициализации следующие команды:

(require 'monotone)
(monotone-set-vc-prefix-key "\C-xv")
(setq monotone-passwd-remember t)

первая строка загружает сам пакет, вторая строка устанавливает префикс для команд выполняемых с клавиатуры, а третья строка заставляет пакет запоминать введённые пользователем пароли1.

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

Доступ к командам пакета может осуществляться разными способами — через меню, с использованием клавиатурных сочетаний и используя именованные команды (все команды имеют префикс monotone). Префикс для клавиатурных сочетаний по умолчанию не определён, поэтому его нужно установить при инициализации пакета с помощью функции monotone-set-vc-prefix-key, в моем примере файла инициализации она привязывается к префиксу C-x v, и далее по тексту будет использоваться именно этот префикс. Команды Monotone выполняются в буфере с именем *monotone*.

Регистрация файла в системе контроля версий производится с помощью команды monotone-vc-register (сочетание клавиш C-x v i). Изменения затем надо будет подтвердить с помощью команды monotone-vc-commit для вызова которой можно использовать как сочетание C-x v q, так и C-x v C-q.

Работа с удалёнными серверами осуществляется с помощью трёх команд: команда monotone-pull (сочетание C-x v p) — вытягивает изменения с сервера; команда monotone-push (сочетание C-x v P) — помещает изменения на сервер; а команда monotone-sync — синхронизирует текущую базу данных с сервером.

Пользователь может получить список сделанных изменений с помощью команды monotone-vc-diff, которая привязана к C-x v =. Если этой команде передать аргумент, то просмотр изменений будет сделан для всего проекта.

Получить информацию о зарегистрированных объектах можно с помощью нескольких команд. В первую очередь это команда monotone-vc-status (сочетание клавиш C-x v s), которая выдаёт информацию о текущей ветке проекта. С помощью команды monotone-vc-print-log (сочетание C-x v l) можно получить лог для текущего буфера (а при задании аргумента для этой команды, можно получить лог для всего проекта). А получить идентификатор текущего объекта можно с помощью команды monotone-grab-id (сочетание клавиш C-x v 6) — данная команда сохраняет идентификатор объекта в буфере удаления (kill buffer), откуда вы её может вставить с помощью стандартных команд.

В пакете определена одна команда общего назначения — monotone (она привязана к сочетанию клавиш C-x v x), которая позволяет выполнить любую команду Monotone введённую в мини-буфере.

Настройка пакета

Настройка пакета осуществляется путём установки некоторого количества переменных. Одну из переменных вы уже видели, это переменная monotone-passwd-remember, которая заставляет пакет запоминать введённые пользователем пароли. В том случае, если эта переменная установлена, пароли будут сохраняться в переменной monotone-passwd-alist. Кроме этого, используя переменную monotone-program вы можете указать имя исполняемого файла Monotone.

Адреса удалённого сервера и коллекций на нем задаются переменными monotone-server и monotone-collection. Список уже использованных серверов и коллекций хранится в соответствующих переменных: monotone-server-hist и monotone-collection-hist.

Кроме перечисленных выше переменных, существуют и другие переменные, изменять которые пользователь скорее всего не будет, но знать которые желательно. Истинное значение переменной monotone-cmd-show приводит к показу результатов выполнения команд Monotone. С помощью переменной monotone-program-args-always можно задать аргументы командной строки, которые всегда будут передаваться при запуске Monotone. Если значение переменной monotone-msg не равно nil, то в буфер *Messages* будут выводиться сообщения пакета monotone.el, что может быть полезным при отладке.

Тонкую настройку работы пакета можно осуществить, используя два хука — monotone-output-mode-hook и monotone-commit-mode-hook. Первый хук будет вызываться при выводе данных, а второй — при входе в режим редактирования сообщений при подтверждении данных в репозиторий.


1. Пароли сохраняются только на время текущей сессии, и если вы перезапустите Emacs, то пароли будут запрашиваться снова.

Last change: 05.03.2013 16:54

blog comments powered by Disqus