Фильтры позволяют вам сделать автоматически специальное преобразование файлов при внесении их в хранилище CVS, а также при копировании файлов из хранилища.
Файл с именем cvswrappers определяет скрипт, который будет выполняться над файлом, когда его имя удовлетворяет регулярному выражению. Более точно, существует два скрипта. Один тот, который выполняется над файлом/каталогом перед тем, как файл помещается в хранилище (параметр -t), а другой - тот, который вызывается, когда файл копируется из хранилища (параметр -f). Параметры -t и -f не действуют, если используется CVS типа клиент/сервер.
cvswrappers имеет параметр -m, чтобы определить методологию слияния файлов, если только они не двоичные, когда они обновляются. MERGE означает обычное поведение CVS: попытка слияния. COPY означает, что cvs update не будет пытаться слить файлы, как она не делает это для двоичных файлов.
Предупреждение: не стоит пробовать этот параметр для версий CVS ранее, чем 1.9.
Параметр -m в файле cvswrappers воздействует на поведение CVS лишь когда производится слияние по команде update. Нет никакой разницы в каком виде файлы хранятся. Базовый формат файла cvswrappers следующий:
wildcard [option value][option value]... ,
где параметрами могут быть:
В последней строке примера устанавливается, что для файлов, имена которых оканчиваются на .c будет предпринята фильтрация программой indent перед помещением в хранилище.
Фильтр -t вызывается с двумя аргументами: первый - имя файла/каталога, который должен фильтроваться, второй - путь, куда должен быть помещ©н результат фильтрации.
Фильтр -f вызывается с одним аргументом, именем файла/каталога, который подлежит фильтрации. Конечный результат фильтрации будет находиться в пользовательском каталоге.
Заметим, что параметры -t и -f не вполне эффективно справляются с частью операций CVS: установление факта модификации файлов. Например, CVS может ошибочно воспринимать каталог немодифицированным, даже если какой-то файл внутри модифицирован, но вы сможете заставить CVS выполнить операцию commit, использовав параметр -f в команде cvs commit.
Другой пример. Следующая команда импортирует каталог, обрабатывая файлы,
имена которых заканчиваются на .exe как двоичные:
cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag