Perforce — достаточно популярная система контроля версий, используемая во многих проектах по разработке коммерческого программного обеспечения. Ссылки на ресурсы об использовании Perforce вы можете найти в разделе Дополнительная информация. Поддержка Perforce в Emacs осуществляется с помощью пакета p4.
Для установки пакета вам нужно скачать исходный текст с сайта проекта. Поместите пакет в место, где его найдет Emacs, и поместите следующую команду в файл инициализации Emacs:
(require 'p4)
Пакет может работать как с GNU Emacs, так и с XEmacs. Для работы пакета необходимо наличие Ediff, и еще нескольких пакетов, которые обычно идут в составе Emacs.
Работу с пакетом можно логически разделить на несколько групп действий — работа с репозиторием, получение информации о файлах, работа с файлами и ветками, работа с изменениями, настройка параметров и прочие команды. Более подробно, каждая из групп действий будет рассмотрена в следующих разделах.
Команды выполняются через стандартные средства выполнения команд Emacs, используя привязки
клавиш или используя меню P4
, которое появляется после загрузки пакета, и в котором
перечислены практически все команды предоставляемые пакетом. Для некоторых команд пакета,
пользователь может задать дополнительные аргументы, используя сочетание клавиш C-u
.
Синхронизация локальных файлов с репозиторием производится с помощью команды p4-get
(сочетание C-x p G
). Команда позволяет синхронизировать как отдельные файлы, так и все
файлы клиента. Пользователь может указать номер версии, с которой будет
синхронизироваться клиент.
После получения файлов из репозитория пользователь может открыть его для изменения с
помощью команды p4-edit
(сочетание клавиш C-x p e
). При выполнении данной команды, сервер
уведомляется что файл открывается для изменения и файл переводится из состояния только для
чтения, в состояние доступное для изменения. Пользователь может указать номер изменения,
к которому будут относиться новые изменения, а также тип файла. Можно открыть файл с
новыми параметрами (тип файла или номер изменения), для этого в пакете p4 определена
команда p4-reopen
(C-x p E
). Кроме этого, пользователь может открыть файл напрямую в
репозитории, с помощью команды p4-depot-find-file
, которая привязана к сочетанию клавиш
C-x p C-f
.
Добавление файла в репозиторий производится с помощью команды p4-add
(сочетание C-x p a
).
С помощью аргументов, пользователь может указать тип файла — текстовый или двоичный, а
также связать новый файл с указанным отложенным изменением. Если тип файла не был указан
явно, то он определяется автоматически. Удаление файла из репозитория производится с
помощью команды p4-delete
(сочетание клавиш C-x p x
). Файл удаляется как из репозитория,
так и у клиента. Если файл уже открыт, то он пере-открывается для удаления и помещается в
указанное неподтвержденное изменение. Переименование файла производится с помощью команды
p4-rename
(C-x p m
). Данная команда поддерживает использование шаблонных символов, так
что можно одновременно переименовывать множество файлов.
Работа с заданиями (jobs) в Perforce реализуется пакетом p4 с помощью нескольких команд.
Команда p4-jobs
(C-x p J
) используется для получения списка всех заданий определенных в
системе. С помощью аргументов пользователь может сужать список заданий, список
поддерживаемых аргументов вы можете найти в документации на пакет p4. Создание и
изменение заданий производится с помощью команды p4-job
(сочетание клавиш C-x p j
). С
помощью префиксных аргументов, данная команда может удалять задания, а также изменять их.
А команда p4-fix
(сочетание C-x p X
) используется для связывания задания с номером
изменения. Связанные с изменениями задания закрываются в том случае, если изменения
подтверждаются.
Спецификации веток могут редактироваться с помощью команды p4-branch
, которая привязана к
сочетанию клавиш C-x p B
. Пользователь может выполнить слияние изменений между ветками с
помощью команды p4-integ
(C-x p I
). Можно выполнять слияние как между отдельными файлами,
так и между полными ветками. С помощью аргументов, пользователь может указать в какое
изменение будет производиться слияние.
Пакет также поддерживает работу с метками. Для получения списка пометок используется
команда p4-labels
(C-x p L
). Редактирование спецификации метки производится с помощью
команды p4-label
(сочетание клавиш C-x p L
), а синхронизация меток с клиентом производится
с помощью команды p4-labelsync
(сочетание клавиш C-x p l
).
Работа с изменениями является важной частью использования системы контроля версий. Для поддержки этого, пакет p4 имеет в своем составе множество команд — для просмотра изменений, подтверждения или отмены изменений.
Получить список изменений, внесенных пользователем можно получить с помощью команды
p4-changes
, которая привязана к C-x p C
. Эта команда выдает список отложенных и
подтвержденных изменений для указанного файла. Если не было передано никаких аргументов,
то данная команда выдает список изменений для файлов в текущем каталоге, и каталогах
лежащих ниже. Список файлов, которые открыты для отложенного изменения, пользователь
может получить с помощью команды p4-opened
(сочетание клавиш C-x p o
).
Детальный список изменений, внесенных пользователем можно получить с помощью нескольких
команд, однако основной командой является команда p4-diff
(сочетание клавиш C-x p
=
) — с ее помощью можно получить список изменений между текущим файлом и версией в
репозитории. Однако изменения для текущего файла выдаются только в том случае, если этот
файл был открыт для редактирования. Если текущий файл не открыт для изменения, то
выдается список изменений для всех открытых файлов и их соответствующих версий в
репозитории. Кроме этого, задавая ключи командной строки для команды diff
, можно изменять
выдаваемые данные для получения данных от открытых файлов, файлов отсутствующих клиентов и
т.д.
Кроме указанной выше команды, существует еще несколько команд для получения детального
списка изменений. Для сравнения двух файлов в репозитории можно использовать команду
p4-diff2
(сочетание клавиш C-x p d
). Команда p4-diff-head
выдает изменения между файлами
текущего клиента и самыми последними версиями в репозитории. Для сравнения файлов можно
использовать пакет Ediff, что и делают две команды —
p4-ediff
и p4-ediff2
. Первая
команда выполняет сравнение текущего файла с его базовой версией, а вторая команда
сравнивает между собой два файла в репозитории.
Подтверждение изменения осуществляется с помощью команды p4-submit
(сочетание клавиш C-x
p S
). При выполнении этой команды, отложенное изменение и связанные с ним файлы вносятся
в репозиторий. В том случае, если перед подтверждением программа не смогла заблокировать
все файлы, затрагиваемые изменением, то процесс прекращается и подтверждения не
происходит. Пользователь может оповещать других пользователей о вносимых изменениях. Для
этого может использоваться команда p4-notify
(сочетание клавиш C-x p n
), которая
выполняется пользователем. Но кроме этого, может использоваться автоматическое оповещение
пользователей при каждом подтверждении изменений. Список пользователей, которые будут
оповещены при изменении, задается с помощью команды p4-set-notify-list
. Оповещение
пользователей производится с помощью электронной почты, так что вы должны задать
корректный путь к программе sendmail
.
Отмена изменений в текущем файле производится с помощью команды p4-revert
, которая
привязана к сочетанию клавиш C-x p r
. Если аргумент SHOW-OUTPUT
имеет истинное значение,
то результаты выполнения команды будут отображены в буфере *P4 Output*
. Для обновления
изменений в не-открытых файлах используется команда p4-refresh
(C-x p R
), так что вам
нужно использовать обе команды, если у вас есть открытые и не-открытые файлы в одном
каталоге и вы хотите обновить их из репозитория.
Для получения информации о конкретном изменении, может использоваться команда p4-describe
(она привязана к сочетанию клавиш C-x p D
). Она отображает описание изменения, его номер,
имя пользователя, дату и прочую информацию, включающую в себя список файлов, список
конкретных изменений и т.п.
Просмотр истории изменений для текущего файла может быть выполнен с помощью команды
p4-filelog
(сочетание клавиш C-x p f
). Информация отображается в порядке убывания
времени, вплоть до самого начала истории файла, когда он был добавлен в репозиторий.
Чтобы получить файл из репозитория вместе с историей изменения, пользователь может
использовать команду p4-print-with-rev-history
(сочетание C-x p V
). Для получения только
самого файла, без истории, пользователь может использовать команду p4-print
(C-x p p
).
Эти две команды не затрагивают список файлов полученных данным клиентом.
Для получения информации о клиенте и сервере может использоваться команда p4-info
(сочетание C-x p i
), которая выдает информацию о клиенте — имя пользователя, название
клиента и каталог, а также некоторую информацию о сервере.
Чтобы узнать как соотносятся между собой имена локальных файлов и имена соответствующих
файлов в репозитории, пользователь может использовать команду p4-where
, которая привязана
к C-x p w
. А список версий, которые были в последний раз получены, пользователь может
получить с помощью команды p4-have
(C-x p H
). Получить список файлов в репозитории можно
с помощью команды p4-files
(сочетание клавиш C-x p F
). Пользователь может получить список
всех файлов, или только файлов, совпадающих с заданной маской.
Пакет p4 позволяет управлять репозиторием Perforce не покидая Emacs. Сюда относятся команды управления пользователями, группами пользователей и клиентами.
Создание нового пользователя производится с помощью команды p4-user
(сочетание клавиш C-x
p u
). Эта же команда используется для редактирования спецификации уже существующего
пользователя. Спецификация сохраняется во временный и файл и для ее редактирования
запускается редактор, определенный переменной среды EDITOR
. В спецификацию пользователя
входят его имя, полное имя, уровень доступа и другие параметры. Обычно, спецификация
пользователя создается автоматически при запуске любой команды, которая может обновить
репозиторий. Список существующих пользователей можно получить с помощью команды p4-users
(сочетание C-x p U
).
Аналогичным образом организована и работа с группами пользователей. Для получения списков
уже существующих групп, может использоваться команда p4-groups
, а для создания группы
пользователей используется команда p4-group
. Но для создания группы пользователей,
текущий пользователь должен обладать специальными правами.
Редактирование спецификации клиента производится с помощью команды p4-client
, которая
привязана к сочетанию клавиш C-x p c
. В спецификацию клиента входят его имя, описание,
список файлов, которые будут видны в репозитории, и другие параметры. По умолчанию, новые
клиенты создаются с возможностью просмотра всех файлов в репозитории.
Сочетание клавиш C-x p h
запускает команду p4-help
, которая может использоваться для
получения справочной информации о работе с пакетом, или о работе с конкретной командой.
Описание привязок клавиш, предоставляемых пакетом p4, можно получить с помощью команды
p4-describe-bindings
(сочетание клавиш C-x p ?
).
Номер используемой версии пакета p4 пользователь может получить с помощью команды
p4-emacs-version
, которая привязана к сочетанию клавиш C-x p v
. В том случае, если вы
нашли ошибку в работе пакета, то вы можете сообщить о ней с помощью команды p4-bug-report
(сочетание клавиш C-x p b
).
В том случае, если сервер Perforce недоступен или вы работаете отключившись от сети, то вы
можете отключить проверку версий, при открытии файлов. Включение и отключение этой
проверки пользователь может выполнить с помощью команды p4-toggle-vc-mode
(сочетание
клавиш C-x p t
).
Для работы с пакетом p4, ну и конечно с Perforce, необходимо установить значения
переменных среды P4CLIENT
, P4USER
и P4PORT
. Однако вы можете задать нужные значения и с
помощью команд пакета. Для этого используются команды p4-set-client
(сочетание клавиш
C-x p s
) и p4-set-p4-port
(сочетание C-x p P
). Получить название клиента, который
используется для доступа к репозиторий можно с помощью команды p4-get-client-name
(сочетание C-x p g
).
Используя стандартные средства настройки Emacs пользователь может настроить различные параметры пакета, такие как путь к исполняемым файлам Perforce, переменные, влияющие на вывод результатов и многое другое. Группа настройки имеет тоже название что и сам пакет — p4.
Полное описание команд пакета p4 вы можете найти на сайте проекта. А информацию о Perforce и его использовании вы сможете найти на сайте компании. Кроме этой информации, в интернете существует достаточное количество описаний, которые могут помочь начинающему пользователю в освоении этой системы контроля версий.
Last change: 05.03.2013 16:54