Игнорирование файлов и папок

Рисунок 4.31. Контекстное меню Проводника для неверсированных файлов

Контекстное меню Проводника для неверсированных файлов


В большинстве проектов у вас будут файлы и папки, которые не надо вносить под управление версиями. Это могут быть включаемые файлы, создаваемые компилятором, *.obj, *.lst, возможно, папки, в которых сохраняются создаваемые выполняемые файлы. Всякий раз, когда вы фиксируете изменения, TortoiseSVN показывает вам неверсированные файлы, заполняющие до отказа список файлов в диалоге фиксации. Конечно, вы можете вообще их не отображать, но тогда вы можете забыть добавить новый файл.

Лучший способ избежать этой проблемы - добавить воспроизводимые файлы в список игнорирования проекта. Таким образом они никогда не будут отображаться в диалоге фиксации, но настоящие неверсированные файлы будут всё-таки замечены.

Если вы щёлкнете правой клавишей мыши на одиночном неверсированном файле, и выберите из контекстного меню команду TortoiseSVNДобавить в список игнорирования, появится подменю, позволяющее вам выбрать, добавить ли в список только этот файл, или же добавить все файлы с таким же расширением. Оба подменю также имеют эквиваленты (рекурсивно). Если вы выберете несколько файлов, подменю не появится, и вы сможете добавить только эти конкретные файлы/папки.

Если вы выберете в контекстном меню игнорирования вариант (рекурсивно), то элемент будет проигнорирован не только в выбранной папке, но также и во всех подпапках. Для этого требуется клиент SVN версии 1.8 или выше.

Если вы желаете удалить один или несколько элементов из списка игнорирования, выполните правый щелчок на этих элементах и выберите TortoiseSVNУдалить из списка игнорирования Вы также можете обратиться к свойству папки svn:ignore напрямую. Это позволит вам указать более общие шаблоны, используя универсализацию имён файлов, описываемую далее. Более подробную информацию об установке свойств содержит «Установки проекта». Обратите внимание: каждый шаблон игнорирования должен быть в отдельной строке, разделение их пробелами не работает.

Глобальный список игнорирования

Другой путь игнорирования файлов - добавить их в глобальный список игнорирования. В этом случае самое большое отличие в том, что глобальный список игнорирования - это клиентское свойство. Оно применяется ко всем проектам Subversion, но только на этом клиентском компьютере. В общем случае, лучше использовать свойство svn:ignore когда возможно, так как оно может быть применено к конкретным разделам проекта, и оно работает для всех извлекающих этот проект. Более подробную информацию смотрите в «Общие настройки».

Игнорирование версированных файлов и папок

Версированные файлы и папки не могут игнорироваться - так устроена Subversion. Если вы версировали файл по ошибке, прочтите «Игнорировать файлы, которые уже версированы», где приведены инструкции, как сделать его «неверсированным».

Сопоставление шаблону в списках игнорирования

Шаблоны игнорирования в Subversion применяют универсализацию имён файлов - способ, первоначально задействованный в Unix для указания нужных файлов и использующий мета-символы для обобщения. Следующие символы имеют специальное значение:

*

Соответствует любой строке, включая пустую строку (без символов).

?

Соответствует любому одиночному символу.

[...]

Соответствует любому символу, заключённому в квадратные скобки. Внутри скобок пара символов, разделённая «-» соответствует любому символу, лексически расположенному между ними. Например, [AGm-p] соответствует любому из A, G, m, n, o или p.

Соответствие шаблону регистрозависимое, что может привести к проблемам на Windows. Вы можете включить независимость от регистра явным образом удваивая символы, т. е. вместо регистронезависимого шаблона *.tmp использовать *.[Tt][Mm][Pp].

Если вам необходимо официальное описание универсализации, вы можете найти его в спецификации IEEE для командного языка оболочки Pattern Matching Notation.

Никаких путей в глобальном списке игнорирования

Не надо включать полный путь в задаваемый шаблон. Сопоставление с шаблоном предназначено для использования с обыкновенными именами файлов и папок. Если вы желаете игнорировать все папки CVS, просто добавьте CVS в список игнорирования. Нет необходимости указывать CVS */CVS, как в более ранних версиях. Если же вы желаете игнорировать все папки tmp, которые находятся в каталоге prog, но не в doc, вам необходимо воспользоваться свойством svn:ignore. Не существует надёжного способа добиться этого при помощи глобальных шаблонов игнорирования.