В Subversion есть два механизма работы с игнорирующими:
- Global игнорирует. Шаблон может быть добавлен в список
global-ignores
в конфигурации Subversion. Применяется глобально ко всем проектам. Вообще говоря, определение слишком большого количества глобальных игнорирований - это плохо.
svn:ignore
собственность. Установив свойство svn:ignore
, можно определить список файлов или папок, которые игнорируются в каталоге, для которого определено это свойство.
И глобальное игнорирование, и свойство svn:ignore
работают не с регулярными выражениями, а с использованием шаблонов, соответствующих синтаксису шаблона fnmatch . Который определяет только три типа подстановочных знаков ?
, *
и []
. Вы можете поиграть с ls
, чтобы почувствовать, как работают эти паттерны.
Свойства Subversion могут быть установлены рекурсивно. Это будет работать для *.idx
и *.log
файлов:
$ svn st
? test.log
? test.idx
? recursive/test.log
Создать файл ignores
с двумя строками:
*.log
*.idx
Затем установить svn:ingore
свойство рекурсивно:
$ svn propset --recursive svn:ignore -F ingores .
property 'svn:ignore' set on '.'
property 'svn:ignore' set on 'recursive'
$ rm ignores
$ svn st --no-ignores
I test.log
I test.idx
I recursive/test.log
После этого отредактируйте svn:ignore
свойство в корне проекта:
$ svn propedit svn:ignore PROJECT_ROOT
и добавьте исключение для шаблона *.out
.
Учитывая, что:
Если я не буду применять его рекурсивно, тогда другие шаблоны не будут игнорироваться в подпапках.
Единственный способ - добавить такие шаблоны в глобальное игнорирование.
Некоторые заметки:
- После установки
svn:ignore
свойство может быть рекурсивно удалено с помощью
помощь svn propdel -R ...
- Этот способ добавления игнорирований не кажется гибким (для меня). Например, при создании новой папки следует помнить, чтобы установить
проект
svn:ignore
собственность.
- Рекурсивный набор должен быть сделан рано. Удаляет старое значение устанавливаемого свойства.
- Главный плюс в том, что игнорируемые значения редактируются редко.
- Рекурсивное редактирование свойств, кажется, проще, когда это делается с помощью инструментов GUI
Надеюсь, это поможет.