Пакет PSVN является для Subversion тем же, что и PCL-CVS для CVS. Пакет дает пользователю доступ ко всем основным возможностям, предоставляемым системой Subversion.
Установка пакета проста — загрузите с сайта последнюю версию пакета, поместите его в доступный для Emacs каталог, и поместите в файл инициализации следующую команду:
(require 'psvn)
Работа с пакетом по принципам, совершенно аналогична работе с пакетом PCL-CVS — вся
работа производится в буфере, создаваемом командами пакета. В настоящее время этот буфер
создается лишь одной командой —
svn-status
, реализация других команд, производится в
настоящее время. Буфер, создаваемый в процессе работы данной команды, называется
*svn-status*
. Пример буфера, создаваемого командой svn-status
, вы можете увидеть на
рисунке ниже. Команды, выполняемые пользователем применяются либо к текущему файлу, либо
к помеченным файлам.
Как вы можете видеть на рисунке, информация выдается в виде таблицы. В первой колонке
отображается статус объекта, во второй колонке — рабочей версия данного объекта, в
третьей — номер версии в которой вносились последние изменения, а в четвертой — имя
пользователя, который вносил эти изменения, и в последней — имя объекта. Расшифровку
статусов вы можете найти в описании команды svn status -v
.
Пользователь может выполнять команды, используя предопределенные привязки клавиш, либо
может использовать меню SVN
, появляющееся при работе с буфером *svn-status*
.
Команды навигации по буферу *svn-status*
аналогичны командам других пакетов для работы с
системами контроля версий — вы можете использовать либо клавишу управления курсором, либо
команду svn-status-previous-line
(привязана к клавише C-p
) для перемещения на предыдущую
строку, и команду svn-status-next-line
(привязана к клавише C-n
) для перехода на следующую
строку. Эти привязки несколько отличаются от других режимов, которые для аналогичных
команд используют клавиши n
и p
.
Для установки пометок на файлы PSVN использует те же самые клавиши, что и остальные режимы
— для пометки объекта используется клавиша m
(команда svn-status-set-user-mark
), а для
снятия пометки — клавиша u
(команда svn-status-unset-user-mark
). Кроме этого для снятия
всех установленных пометок используется команда svn-status-unset-all-usermarks
(сочетания
клавиш M-DEL
или * !
), а для снятия пометки с файла, находящегося перед курсором, может
использоваться команда svn-status-unset-user-mark-backwards
, привязанная к клавише DEL
.
Также определены команды для пометки файлов с разным статусом. Так, для пометки
измененных файлов может использоваться команда svn-status-mark-modified
(сочетание
клавиш * M
), для пометки добавленных файлов команда svn-status-mark-added
(сочетание
клавиш * A
), а для пометки файлов не находящихся под контролем Subversion, команда
svn-status-mark-unknown
(сочетание клавиш * ?
).
Добавление файлов в репозиторий можно производить с помощью нескольких команд. Базовой
командой является svn-status-add-file
(она привязана к клавише a
), которая добавляет
текущий файл в репозиторий (или выбранные файлы). В качестве дополнения к ней, пакет PSVN
определяет команду svn-status-add-file-recursively
(клавиша A
), которая рекурсивно
добавляет файлы в репозиторий и команду svn-status-make-directory
(клавиша +
), которая
создает новый каталог в репозитории. Не забудьте, что добавление файлов производится только
в вашей рабочей копии репозитория, так что изменения будут внесены только после явного
подтверждения.
Удаление файлов производится командой svn-status-rm
(клавиша D
или сочетание C-d
), что
запускает команду svn rm
. Поскольку Subversion поддерживает явное переименование файлов с
сохранением истории файла, то и пакет PSVN имеет в своем арсенале соответствующую команду
svn-status-mv
, которая привязана к клавише R
. Как и в предыдущем случае, вам после
выполнения данных команд необходимо подтвердить внесенные изменения.
Вы можете выполнить обновление вашего рабочего каталога из репозитория, что часто бывает
удобно при одновременной работе нескольких разработчиков над одним проектов. Обновление
производится с помощью команды svn-status-update-cmd
(клавиша U
), которая запускает
команду svn update
. Кроме этого, вы можете вытянуть нужную версию файла с помощью команды
svn-status-get-specific-revision
(клавиша ~
). При работе этой команды создается файл
F.~REVISION~
, который и содержит нужную версию файла. А также вы можете просмотреть
состояние и родительского каталога, с помощью команды svn-status-examine-parent
, которая
привязана к клавише ^
.
Вы можете просматривать и редактировать файлы непосредственно из буфера *svn-status*
. Это
возможно с помощью команд svn-status-find-files
(клавиша f
), которая открывает файл
непосредственно в том же окне, которое и содержит буфер *svn-status*
. Для открытия файла
в другом окне может использоваться команда svn-status-find-file-other-window
(клавиша o
).
Вы можете просматривать, а не редактировать файл с помощью команды
svn-status-view-file-other-window
(клавиша v
), что бывает очень полезно, если вы хотите
лишь посмотреть на файл, не редактируя его. Клавиша RET
(команда
svn-status-find-file-or-examine-directory
) играет двоякую роль — она либо открывает файл,
либо отображает состояние файлов в соответствующем каталоге.
Как уже упоминалось выше, после выполнения почти всех операций вы должны явно подтвердить
изменения в репозиторий. Подтверждение выполняется с помощью команды
svn-status-commit-file
(клавиша c
). После подтверждения, ваши изменения будут видны всем
людям, работающим с репозиторием.
Кроме подтверждения изменений, иногда необходимо отменить внесенные изменения. Для этого
используется команда svn-status-revert
, которая привязана к клавише r
. Subversion
поддерживает возможность явного удаления статуса наличия конфликтов с файлов, которые
имеют такой статус. Для удаления статуса конфликта PSVN предоставляет команду
svn-status-resolved
(клавиша V
), которая запускает команду svn resolved
.
Также как и другие пакеты для работы с системами контроля версий, PSVN предоставляет
возможность получения списка изменений для выбранных файлов по сравнению с базовой
версией. Для этого определено несколько команд. Команда svn-status-show-svn-diff
(клавиша =
), выполняет сравнение с головной версией в репозитории (если она
новее чем базовая) или с базовой версией текущего файла. Команда
svn-status-show-svn-diff-for-marked-files
(сочетание C-=
) может выполнить
сравнение сразу нескольких выбранных файлов с их базовыми версиями. А команда
svn-status-ediff-with-revision
(клавиша E
) использует для сравнения пакет Ediff. Все эти
команды могут выполнять сравнение с произвольной версией, если им будет задан префиксный
аргумент перед их выполнением.
Система контроля версий Subversion позволяет пользователю привязывать различные метаданные к файлам и версиям. Кроме этого, существуют метаданные, не привязанные к конкретной версии. Изменения в метаданных распространяются вместе с изменениями, внесенными в обычные файлы. Подробнее о метаданных и работе с ними вы можете прочитать в книге "Version Control with Subversion", которая доступна на сайте данной системы.
Пакет PSVN предоставляет набор команд для работы с метаданными. Эти команды доступны как
обычным способом, так и через привязки к клавишам. В качестве префиксной клавиши
используется клавиша P
.
Доступные команды можно разделить на две группы — первая группа используется для работы с произвольными метаданными, а вторая группа — для работы с конкретными записями.
К первой группе относятся команды: svn-status-property-parse
(сочетание P p
) используется
для разбора записи, svn-status-property-set
(сочетание P s
) задает значение для конкретной
записи, svn-status-property-delete
(сочетание P d
) удаляет выбранную запись,
svn-status-property-list
(сочетание P l
) отображает список определенных для данного
объекта записей, svn-status-property-edit-one-entry
(сочетание P e
) позволяет изменить
запись.
Во вторую группу входят следующие команды: svn-status-property-edit-svn-ignore
(сочетание
P TAB
) позволяет вам отредактировать список файлов, которые не будут учитываться при
Subversion, svn-status-property-ignore-file
(сочетание P i
) вносит текущий файл в список
игнорируемых объектов, svn-status-property-ignore-file-extension
(сочетание P I
) позволяет
пополнить список игнорируемых объектов шаблоном для выборки всех файлов с расширением как
у текущего, svn-status-property-set-eol-style
(сочетание P y
) позволяет задать какой стиль
обозначения перевода строк используется для данного объекта,
svn-status-property-set-keyword-list
(сочетание P k
) позволяет отредактировать список
ключевых слов связанных с данным объектом.
Для получения информации о текущем файле может использоваться команда svn-status-info
,
которая привязана к клавише i
. При ее использовании, в буфере *svn-process*
будет
отображен результат выполнения команды svn info
. Информация может показаться слишком
подробной, и для ее обработки может быть использована команда svn-status-parse-info
(клавиша I
), которая разбирает результат предыдущей команды, и приводит его к более
компактному виду. Для получения информации об авторе и версии для указанного файла, может
использоваться команда svn-status-blame
(клавиша b
), а для просмотра логов для выбранных
файлов, используется команда svn-status-show-svn-log
(клавиша l
).
Обновить содержимое буфера *svn-status*
вы можете с помощью команды svn-status-update
(клавиша g
), а посмотреть на вывод команды svn
вы можете использовав клавишу s
(команда
svn-status-show-process-buffer
). Вы также можете управлять тем, объекты с каким статусом
будут отображаться в буфере *svn-status*
. Для скрытия не изменявшихся файлов используется
команда svn-status-toggle-hide-unmodified
(клавиша _
), а для скрытия незарегистрированных
файлов — команда svn-status-toggle-hide-unknown
(клавиша ?
). Обе эти команды являются
переключателями, и могут использоваться как для отключения показа файлов, так и для
включения показа.
Для выхода из буфера *svn-status*
и его удаления используется команда
svn-status-bury-buffer
, которая привязана к клавише q
, также как и в других пакетах.
Стандартные средства Emacs позволяют пользователю настроить поведение пакета.
Соответствующая группа настройки называется psvn
. PSVN также предоставляет несколько
хуков, которые могут использоваться для задания параметров создаваемых буферов, или
выполнения дополнительных команд. Хук svn-log-edit-mode-hook
выполняется когда пакет
входит в режим svn-log-edit
, а svn-log-view-mode-hook
выполняется при вхождении в режим
svn-log-view
.
Last change: 05.03.2013 16:54