next up previous contents
Next: 14.13 Создание файлов проекта Up: 14. CVS - система Previous: 14.11 Протоколирование операций CVS

Подраздел


14.12 Кто редактирует файл

Для многих групп разработчиков использование CVS вместе с умолчаниями вполне приемлемо. Рад других групп предпочитают знать кто и какие файлы редактирует. Здесь описываются средства CVS, которые позволяют разработчикам автоматически информировать друг друга о предпринимаемых действиях, что позволяет редактировать и отлаживать один и тот же файл двум и более лицам.

Максимальная польза для разработчиков состоит в использовании команд cvs edit, чтобы сделать файл доступным по чтению/записи на время его модификации, и cvs release, чтобы удалить рабочий каталог, который более не используется. Однако, CVS не имеет средств, чтобы заставить всех поступать именно таким образом.

14.12.1 Включение/выключение режима слежения

Чтобы включить режим слежения за определ©нными файлами используется команда:
cvs watch on [`-lR'] FILES ...
Эта команда определяет, что разработчики должны использовать команду cvs edit ДО начала редактирования файлов FILES. При этом CVS будет создавать рабочую копию файлов FILES с правами доступа только чтение, чтобы напомнить разработчикам, что ДО редактирования следует использовать команду cvs edit.

Если FILES содержит имя каталога, CVS будет использовать режим слежения для всех файлов этого каталога в хранилище. Режим слежения распространяется также на все вновь добавленные файлы. Содержимое каталогов обрабатывается рекурсивно, если явно не указано обратное параметром -l. Параметр -R снова включает рекурсивный режим обработки каталогов, если он был выключен, например, в конфигурационном файле .cvsrc в домашнем каталоге пользователя.

Если FILES опущено, то подразумевается текущий каталог.

Выключение режима слежения производится командой:
cvs watch off [`-lR'] FILES ...
Не производить никаких уведомлений о работе с файлами FILES, а рабочие копии создавать с правами доступа чтение/запись.

Значения FILES и других параметров имеют тот же смысл, что и в команде cvs watch on.

14.12.2 Способы уведомления о действиях CVS

Вы можете сообщить CVS, что вы хотели бы иметь уведомление о действиях, предпринятых над конкретным файлом. Это можно реализовать без использование команды cvs watch on для данного файла. Хотя в общем случае, вы будете использовать команду cvs watch on.

Формат команды:
cvs watch add [`-a' ACTION] [`-lR'] FILES ... Назначение:
добавить текущее имя пользователя к списку лиц, получающих уведомление о действиях над файлами FILES.

Параметр -a определяет действие о котором вы будете получать уведомление. Значением ACTION может быть следующее:

edit
Другой пользователь использовал команду cvs edit по отношению к указанному файлу.

unedit
Другой пользователь применил команду cvs unedit к указанному файлу.

commit
Другой пользователь изменил указанный файл в хранилище (применил команду commit).

all
Другой пользователь применил к указанному файлу одну из перечисленных выше команд.

none
Ничего из вышепривед©нного, т.е. не надо уведомлять. (Полезно вместе с командой cvs edit).

Параметр -a может появиться в одной команде более, чем один раз или не появиться совсем. Если параметр опущен, то подразумевается значение all.

Значение FILES и другие параметры имеют тот же смысл, что и в команде cvs watch.

Наконец, по команде
cvs watch remove [`-a' ACTION] [`-lR'] FILES ...
удаляются запросы на уведомление, которые были созданы командой
cvs watch add .... Аргументы - те же самые. Если присутствует параметр -a, то удаляются только те действия, которые определены значением параметра.

Когда возникает условие для уведомления, то CVS вызывает файл notify. Этот файл редактируется также как и любые другие административные файлы. Файл следует обычным соглашениям для административных конфигурационных файлов: он состоит из строк, где каждая содержит регулярное выражение, за которым следует команда. Команда должна содержать одиночное вхождение %s, которое будет заменено именем пользователя, которого надо уведомить. Остаток информации касающейся уведомления будет передан команде на стандартное устройство ввода. Ниже следует пример строки файла notify:
ALL mail %s -s "CVS notification"
Эта строка означает, что пользователи будут уведомлены посредством электронной почты.

Заметим, что если вы сконфигурировали точно как написано, то пользователи получат сообщения на серверной машине. Для того, чтобы указать произвольный адрес (не обязательно на серверной машине) CVS предлагает механизм ассоциативных адресов для рассылки уведомлений. Для того, чтобы его использовать следует создать файл users в каталоге CVSROOT. Каждая строка файла users имеет вид:
USER:VALUE
Здесь USER - имя пользователя на данной машине, а VALUE - предпочтительный электронный адрес. Если имеется файл users, то CVS будет использовать значение VALUE в файле notify для рассылки уведомлений.

CVS не уведомляет вас о ваших собственных изменениях.

14.12.3 Как редактировать наблюдаемый файл

Поскольку рабочая копия наблюдаемого файлa во время выполнения команды checkout созда©тся с правами доступа только чтение, то вы не можете немедленно начать редактировать такой файл. Чтобы сделать наблюдаемый файл доступным для редактирования и, одновременно, информировать об этом других разработчиков, вам следует использовать команду cvs edit.

Команда выглядит так:
cvs edit [OPTIONS] FILES ...
Приготовиться к редактированию файлов FILES. Это включает смену прав доступа к файлам FILES с только чтение на чтение/запись и уведомляет пользователей, которые запросили уведомление о редактировании любого файла из FILES.

cvs edit воспринимает те же параметры, что и команда cvs watch add, а также организует для пользователя, выдавшего команду cvs edit, временное слежение за файлами FILES. Временное слежение за файлами FILES будет прекращено, после выполнения команд cvs unedit или cvs commit по отношению к файлам FILES. Если пользователь не хочет получать никаких уведомлений, то он должен использовать параметр -a none.

FILES и другие параметры имеют тот же смысл, что и в команде cvs watch.

Предупреждение. Если параметр PreservePermissions включ©н в хранилище, то CVS не будет изменять права доступа ни к каким файлам из FILES.

Обычно, когда вы закончили редактирование группы файлов, вы производите операцию cvs commit, которая вносит изменения в хранилище и возвращает права доступа наблюдаемых файлов в состояние только чтение. Однако, если вы передумали и решили не делать никаких изменений или решили аннулировать уже сделанные изменения в рабочей копии, то вам следует воспользоваться командой cvs unedit. Команда выглядит так:
cvs unedit [`-lR'] FILES ...
Она аннулирует любые изменения в рабочей копии файлов FILES, если таковые имели место. CVS устанавливает права доступа в состояние только чтение для тех файлов из FILES, для которых были запросы на уведомление с использованием команды cvs watch on со стороны других пользователей. Кроме ╖того, CVS уведомляет пользователей, которые ранее запрашивали уведомление об операциях cvs unedit для каких-то файлов из FILES.

FILES и другие параметры в команде имеют тот же смысл, что и в команде cvs watch.

Если слежение не было включено, то команда unedit может не выполниться. Тогда единственный способ вернуться к версии, которая имеется в хранилище, состоит в удалении файлов, а затем в выполнении команды cvs checkout для этих файлов. Значение такой последовательности действий не совсем точно совпадает с командой unedit, поскольку будут внесены также изменения, которые возможно имели место с момента предыдущей команды checkout или update.

Когда используется схема CVS клиент/сервер, то вы можете использовать cvs edit или cvs unedit даже если CVS не смогла в данный момент успешно связаться с сервером. Уведомления будут посланы сразу после очередной успешной командой CVS.

14.12.4 Кто наблюдает и редактирует

Команда
cvs watchers [`-lR'] FILES ...
перечисляет всех пользователей, которые следят за изменениями в файлах FILES. Отч©т будет содержать всех наблюдателей, их электронные адреса, имена файлов, за которыми они следят.

Команда
cvs editors [`-lR'] FILES ...
перечисляет пользователей, которые работают в данный момент над файлами из FILES. Отч©т включает адреса каждого пользователя, время, когда пользователь начал работать над файлом, имя хоста, где пользователь работает, а также имя рабочего каталога, в котором пользователь работает с данным файлом.

FILES и другие параметры имеют тот же смысл, что и в команде cvs watch.


next up previous contents
Next: 14.13 Создание файлов проекта Up: 14. CVS - система Previous: 14.11 Протоколирование операций CVS
Andrei Chevel
Andrei.Chevel@pnpi.spb.ru