Меню:


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

blog comments powered by Disqus