14.8 Конфигурационный файл modules contents

Подраздел



14.8 Конфигурационный файл modules

Файл modules хранит ваши определения символических им©н (модулей) для группы исходных текстов, находящихся в хранилище. Система CVS будет также использовать эти определения, если вы вызовете CVS для обновления самого файла modules.

Файл modules может содержать пустые строки и комментарии (строки начинающиеся знаком # - реш©тка) и строки с определением файлов, которые входят в объект (модуль). Длинные определения можно продолжать на другой строке, указав обратный слеш в конце той строки, которую хотите продолжить.

Имеется три типа объектов, которые могут быть описаны в файле modules:

  • alias modules - алиасные объекты modules;
  • regular modules - регулярные объекты modules;
  • ampersand modules - амперсандные объекты modules.
Различие между ними состоит в способе отображения файлов хранилища в файлы рабочего каталога. Удобнее всего рассмотреть это на примерах. Во всех нижеследующих примерах мы полагаем, что хранилище содержит каталог first-dir, который содержит два файла: file1 и file2, а также подкаталог sdir. Каталог first-dir/sdir содержит файл sfile.

14.8.1 Простейший вид объекта: алиасный модуль

Алиасный объект - это простейший вид объекта в хранилище. Общий вид этого описания (строки) привед©н ниже.

MNAME -a aliases ...]
Это простейший способ определения модуля с именем MNAME. Параметр -a означает, что CVS будет воспринимать MNAME, если встретит в качестве аргумента команды, как список им©н файлов aliases .... Список aliases ... может содержать другие имена модулей или пути.

Когда вы используете имя пути в качестве элемента aliases ..., то команда checkout созда©т промежуточный каталог в вашем рабочем каталоге, как будто вы использовали имя пути явно в командной строке checkout.

Например, если файл modules содержит строку:
amodule -a first-dir
тогда следующие две команды просто эквивалентны по своим результатам:
cvs checkout amodule
cvs checkout first-dir
и они произведут вывод похожий на тот, что привед©н ниже:


  cvs checkout: Updating first-dir

  U first-dir/file1

  U first-dir/file2

  cvs checkout: Updating first-dir/sdir

  U first-dir/sdir/sfile

14.8.2 Регулярные модули

Общий вид строки файла modules описывающей регулярные модули представлен ниже
MNAME [ options ] dir [files ...]

В простейшем случае эта форма записи редуцируется до
MNAME DIR
Эта строка определяет все файлы в каталоге dir как модуль с именем MNAME. Имя dir является относительным к $CVSROOT. Во время выполнения команды checkout одиночный каталог с именем MNAME будет создан как рабочий каталог. Не будет использовано никаких промежуточных каталогов, даже если dir включает несколько промежуточных каталожных уровней.

Например, если модуль определ©н как
regmodule first-dir
то regmodule будет содержать файлы из каталога first-dir. Тогда выполнение показанной ниже команды даст следующее


cvs checkout regmodule

cvs checkout: Updating regmodule

U regmodule/file1

U regmodule/file2

cvs checkout: Updating regmodule/sdir

U regmodule/sdir/sfile

Явно описывая файлы в определении модуля после dir, вы можете выбрать отдельные файлы из каталога dir. Например,
regfiles first-dir/sdir sfile
С этим определением получение модуля с именем regfiles создаст одиночный рабочий каталог с именем regfiles, содержащий перечисленные файлы, которые будут взяты из нижележащего каталога хранилища CVS.


cvs checkout regfiles

U regfiles/sfile

14.8.3 Амперсандные модули

Модульное определение может ссылаться на другие модули включением строки "&module" в определение:
MNAME [ options ] &module ...
Тогда получение модуля созда©т подкаталог для каждого такого модуля в каталоге, содержащем модуль. Например, если модули содержат


ampermod &first-dir

тогда команда checkout создаст каталог с именем ampermod, который содержит подкаталог с именем first-dir, который, в свою очередь, содержит все каталоги и файлы живущие там. Например, команда

$ cvs checkout ampermod

создаст следующие файлы:

  ampermod/first-dir/file1

  ampermod/first-dir/file2

  ampermod/first-dir/sdir/sfile

Имеется небольшая огрех в диагностике: сообщения, которые выводит CVS не содержат слова ampermod, т.е. положение создаваемых файлов указывается не совсем корректно.


  $ cvs co ampermod

  cvs checkout: Updating first-dir

  U first-dir/file1

  U first-dir/file2

  cvs checkout: Updating first-dir/sdir

  U first-dir/sdir/sfile

  $

В будущем это, видимо, будет изменено.

14.8.4 Исключение каталогов

Алиасный модуль может исключать отдельные каталоги из других модулей посредством указания восклицательного знака перед именем каждого исключаемого каталога.

Например, если файл modules содержит


exmodule -a !first-dir/sdir first-dir ,

тогда создание рабочих копий по команде checkout для модуля exmodule будет создавать рабочие копии всех файлов и каталогов из каталога first-dir исключая файлы из каталога first-dir/sdir.

14.8.5 Модульные параметры

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

-d name
Дать рабочему каталог имя name, а не использовать для этого имя модуля.

-e prog
Определить программу prog, которая будет вызвана с параметром имя модуля в момент экспорта модуля.

-i prog
Определить программу prog, которая будет вызвана в момент выполнения команды commit. Единственным параметром будет абсолютное имя каталога в хранилище. Файлы commitinfo, loginfo, verifymsg обеспечивают другие способы для вызова какой-то программы в момент выполнения commit.

-o prog
Определить программу prog, которая будет вызвана в момент выполнения команды checkout. Единственный параметр - имя модуля.

-s status
Присвоить статус модулю. Когда модульный файл печатается по команде cvs checkout -s, модули отсортированы в соответствии с основными состояниями модуля и в соответствии с именами модулей. Этот параметр не имеет никакого другого значения. Можно использовать для того, чтобы перечислить лиц, ответственных за модуль.

-t prog
Определить программу prog, которая будет вызвана в момент выполнения команды rtag. Программа prog выполняется с двумя аргументами: имя модуля и символическое имя (тег - tag), которое определено командой rtag. Программа prog не вызывается, когда исполняется команда tag. Во многих случаях файл taginfo да©т лучшее решение.

-u prog
Определить программу prog, которая будет вызвана в момент выполнения команды cvs update, начиная с верхнего каталога модуля, для которого выполняется checkout. Программа prog выполняется с единственным аргументом - абсолютное имя для модуля в хранилище.


contents
Обновлено: 16.03.2015