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