Алексей Махоткин

домашняя страница

CVS — Система Управления Параллельными Версиями

Go to the first, previous, next, last section, table of contents.


Игнорирование файлов с помощью cvsignore

Есть определенные имена файлов, которые постоянно находятся в вашем рабочем каталоге, но которые вы не хотите помещать под контроль версий. Примерами являются объектные файлы, получающиеся после компиляции. Обычно когда вы выполняете команду `cvs update’, она выдает по строке на каждый файл, о котором не знает (see section Сообщения команды update).

CVS использует список файлов (или шаблонов файлов в стиле sh(1)), которые следует игнорировать при выполнении update, import и release. This list is constructed in the following way.

  • Список инициализируется определенными шаблонами имен файлов: имена, служащие для служебных целей CVS и других распространенных систем контроля версий; обычные имена файлов с заплатами, объектных и архивных файлов, а также резервных копий файлов, создаваемых текстовыми редакторами. Остальные имена – побочные продукты деятельности разнообразных утилит. В настоящее время стандартный список шаблонов игнорируемых файлов таков:
        RCS     SCCS    CVS     CVS.adm
        RCSLOG  cvslog.*
        tags    TAGS
        .make.state     .nse_depinfo
        *~      #*      .#*     ,*      _$*     *$
        *.old   *.bak   *.BAK   *.orig  *.rej   .del-*
        *.a     *.olb   *.o     *.obj   *.so    *.exe
        *.Z     *.elc   *.ln
        core
    
  • Список игнорируемых файлов для каждого репозитория находится в `$CVSROOT/CVSROOT/cvsignore’ и добавляется к общему списку, если этот файл существует.
  • Список игнорируемых файлов для каждого пользователя находится в домашнем каталоге пользователя в файле `~/.cvsignore’ и добавляется к общему списку, если этот файл существует.
  • Содержимое переменной окружения $CVSIGNORE добавляется к списку.
  • Параметры ключей `-I’ добавляются к списку.
  • Когда CVS обходит дерево каталогов, к списку добавляется содержимое файлов `.cvsignore’. Шаблоны, находящиеся в файле `.cvsignore’, используются только в соответствующем каталоге, но не в его подкаталогах.

Во всех перечисленных местах использование восклицательного знака (`!’) очищает список. Это можно использовать для хранения файлов, которые обычно игнорируются CVS.

Задание команде cvs import ключа `-I !’ приведет к импорту всего, и обычно вы именно этого и хотите, когда импортируете дистрибутив исходных текстов, не содержащий ничего лишнего. Однако, глядя на вышеприведенные правила, можно заметить ложку дегтя в бочке меда: если в дистрибутиве находятся файлы `.cvsignore’, то они будут обработаны, даже если в командной строке был указан `-I !’. Для того, чтобы импортировать абсолютно все файлы, единственным обходным маневром будет удалить файлы `.cvsignore’. Это уродливо, поэтому в будущем `-I !’ может перестать обрабатывать файлы `.cvsignore’.

Заметьте, что синтаксис файла со списком игнорируемых файлов состоит из набора строк, каждая из которых содержит список файлов, разделенных пробелами. Таким образом, нет простого способа задать имена файлов, содержащие пробелы, но можно использовать шаблон `foo?bar’, чтобы игнорировать файл `foo bar’ (в этом случае, правда, будет также проигнорирован файл `fooxbar’ и т. п._). Заметьте, также, что сейчас не существует способа поместить в этот файл комментарии.


Go to the first, previous, next, last section, table of contents.

Comments