Пакет PCL-CVS предоставляет пользователю эффективные средства с системой контроля версий CVS, которая широко распространена в мире свободного программного обеспечения. Кроме стандартных возможностей, которые реализованы пакетом VC, данный пакет предоставляет следующие возможности:
Данный пакет является частью поставки GNU Emacs начиная с версии 21, а также доступен в виде пакета для XEmacs. Для других версий Emacs вы можете найти исходные тексты по адресу ftp://flint.cs.yale.edu/pub/monnier/pcl-cvs.
Вся работа с пакетом осуществляется в специальном буфере, создаваемом командами PCL-CVS.
Этот буфер называется *cvs*, и в нем отображается состояние файлов, находящихся в
выбранном каталоге, который содержит ваш проект. Пакет работает только с проектами, уже
извлеченными из репозитория, так что вам нужно это сделать перед выполнением команд
PCL-CVS.
В процессе работы вы можете перемещаться по созданному буферу и выполнять разные команды с выбранными файлами, или файлами на которых находится курсор.
При работе с файлами в проекте, каждому из файлов присваивается определенный статус, и список доступных команд может зависеть от статуса файла.
Данные в буфере отображаются в несколько колонок:
Поле статуса может содержать следующие значения:
.#FILE.VERSION. Конфликты также могут
возникать по другим причинам, которые вы можете узнать посмотрев на дополнительный
статус данного файла. Дополнительный статус может иметь следующие значения: removed —
вы удалили файл, но кто-то внес в репозиторий новую версию; added — вы добавили файл,
но кто-то тоже добавил файл в репозиторий; modified — вы изменили файл, но кто-то
другой удалил этот файл из репозитория.cvs remove.Команды, предоставляемые пакетом PCL-CVS имеют префикс cvs- и имена, аналогичные
подкомандам команды CVS. Для выполнения части команд необходимо наличие буфера *cvs*,
который создается следующими командами (команды выполняются с помощью сочетания M-x или
через меню Tools):
cvs-updatecvs update для указанного вами каталога;cvs-examinecvs -n update, которая только проверяет что необходимо
сделать, не внося никаких изменений;cvs-statuscvs status для указанного вами каталога;cvs-checkoutcvs checkout для указанного вами модуля;cvs-quickdir*cvs* считывая данные из файлов CVS/Entries. Эта команда
аналогична cvs-examine, но не осуществляет доступа к репозиторию, что иногда очень
полезно.Эти команды могут выполняться также и из буфера *cvs* — вы можете использовать M-u для
выполнения cvs-update, M-e для cvs-examine и M-s для cvs-status. Кроме этого, вы можете
использовать соответствующие команды только для выбранных файлов —
O (cvs-mode-update)
для обновления файлов, e (cvs-mode-examine) для обновления информации о файлах и s
(cvs-mode-status) для получения информации о выбранных файлах.
По умолчанию, эти команды выполняются рекурсивно, но вы можете изменить это поведение,
используя флаг -l для команд CVS.
Для перемещения по буферу *cvs* используются команды cvs-mode-next-line (клавиша n) — для
перемещения на следующую строку и cvs-mode-previous-line (клавиша p), которая приводит к
переходу на предыдущую строку.
Для работы с пометками используются множество разных команд. Для пометки одного файла
используется команда cvs-mode-mark (клавиша m), а для снятия пометки — команда
cvs-mode-unmark (клавиша u). Для пометки всех файлов используется клавиша M (команда
cvs-mode-mark-all-files), а противоположной ей командой является
cvs-mode-unmark-all-files, которая привязана к сочетанию клавиш M-DEL. Вы также можете
пометить файлы, имена которых подпадают под заданное регулярное выражение — команда
cvs-mode-mark-matching-files (клавиша %), или которые имеют определенный статус — команда
cvs-mode-mark-on-state (клавиша S).
Добавление файлов производится очень простым способом — просто отметьте все нужные файлы
(обычно они имеют статус Unknown), и нажмите на клавишу a (команда cvs-mode-add). Статус
файлов будет изменен на Added, и затем вы должны подтвердить изменения в репозиторий
(см. раздел Работа с изменениями). Вы также можете использовать эту команду и для файлов
со статусом Removed, что приведет к их восстановлению.
Удаление файлов производится аналогичным образом — вы помечаете файлы, и выполняете
команду cvs-mode-remove-file (клавиша r). При выполнении этой команды у вас будет
запрошено подтверждение, и затем файлы будут удалены из каталога. В том случае, если
файлы находятся под контролем CVS, то для них также будет выполнена команда cvs remove.
Как и в предыдущем случае, вам также нужно будет подтвердить изменения в репозиторий.
Обновление файлов производится с помощью команды cvs-mode-update, которая привязана к
клавише O. Это заставляет выполнить команду cvs update для файлов имеющих статус
Need-update.
Иногда, вам требуется хранить в каталогах проекта, файлы, не зарегистрированные в
репозитории. Такие файлы обычно отображаются со статусом Unknown, но вы можете сообщить
CVS, что эти файлы необходимо игнорировать при выполнении команд, просто перечислив их в
файле .cvsignore. Для помещения выбранного файла в этот файл, используется команда
cvs-mode-ignore, которая привязана к клавише i. Используя ее, вы можете быстро поместить
мешающие файлы в список игнорируемых объектов.
Для подтверждения изменений в репозиторий вам нужно лишь выбрать файлы, изменения для
которых вы хотите подтвердить, а зачем нажать c (cvs-mode-commit) или C
(cvs-mode-commit-setup). Это приведет к возникновению нового буфера с именем
*cvs-commit*, в котором вы можете ввести описание вносимых изменений. После ввода
сообщения, вам необходимо лишь нажать C-c C-c и изменения будут внесены в репозиторий. Вы
можете прервать этот процесс в любое время, просто не выполняя команду C-c C-c. Разница
между командами c и C заключается в том, как они относятся к содержимому буфера
*cvs-commit*. Первая команда сохраняет предыдущее содержимое буфера, в то время как
вторая команда создает буфер заново.
Если вы изменили файл, но не хотите вносить данные изменения в репозиторий, то вы можете
использовать команду cvs-mode-undo-local-changes, которая привязана к клавише U. Эта
команда удаляет файл с вашими изменениями, и получает последнюю версию из репозитория.
Вы можете просмотреть изменения внесенные в файл с помощью нескольких команд. Наиболее
часто используемой командой является cvs-mode-diff, которая вызывается с помощью клавиши
= или сочетания d =. Эта команда показывает между измененным
файлом и его базовой версией. Кроме этого, также определен набор команд, которые
выполняют следующие действия:
cvs-mode-diff-head (d h)cvs-mode-diff-repository (d r)cvs-mode-diff-backup (d b)cvs-mode-diff-vendor (d v)cvs-mode-diff-yesterday (d y)Также, для работы с изменениями вы можете использовать утилиты Ediff и Emerge. Команда
cvs-mode-idiff (привязана к сочетанию клавиш d e) запускает Ediff или Emerge (зависит от
выбранных настроек), что позволяет вам интерактивно работать с изменениями. При
использовании команды cvs-mode-imerge (сочетание клавиш d E) вы можете выполнить
трехстороннее интерактивное слияние изменений, но если уже существует конфликт в выбранных
файлах, то их содержимое не будет использоваться при работе, и после завершения работы,
все изменения сделанные CVS, будут затерты.
Для получения информации о файлах может использоваться две команды. Команда cvs-mode-log
(клавиша l) выполняет команду cvs log для выбранных файлов и результат отображается в
буфере *cvs-info*. А команда cvs-mode-status (клавиша s) выполняет cvs status для
выбранных файлов и результат отображается в буфере *cvs-info*.
Команда cvs-mode-tag (клавиша t) позволяет вам установить тег на выбранные файлы. По
умолчанию, данная команда применяется только к каталогам, но это поведение зависит от
настроек клиента.
Иногда вам может понадобиться, чтобы в буфере *cvs* не отображались некоторые записи. Вы
можете сделать это двумя способами — использовать команду cvs-mode-remove-handled
(клавиша x), которая удаляет из буфера уже обработанные записи, например, файлы со
статусом Up-to-date, или использовать команду cvs-mode-acknowledge (она привязана к
сочетанию C-k), которая просто удаляет нужные строки. Обработанные записи могут удаляться
автоматически, в том случае, если переменная cvs-auto-remove-handled имеет значение не
равное nil.
Чтобы обновить содержимое буфера *cvs*, вы можете использовать команду
cvs-mode-revert-buffer, которая привязана к клавише g. А для выхода из буфера *cvs*
используется команда cvs-mode-quit, которая привязана к клавише q.
Пакет PCL-CVS также определяет несколько дополнительных режимов — для редактирования сообщений для журнала изменений, а также режим для просмотра журнала изменений.
Выполнение команд PCL-CVS зависит от значения некоторых переменных, настройку которых
легче всего осуществить с помощью команды M-x customize-group pcl-cvs. В эти настройки
входит как настройка самих переменных, так и свойств начертаний, который используются для
отображения информации в буферах данного режима.
Last change: 05.03.2013 16:54