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