Рекурсивное игнорирование файлов во всем дереве исходных текстов в Subversion - PullRequest
49 голосов
/ 05 августа 2009

Я не новичок в Subversion, но до сих пор я использовал Черепаху и никогда не использовал командную строку. Мой вопрос: как мне игнорировать все файлы, такие как * .o, из ВСЕГО источника, а не только из корня.

Например, если у меня есть следующие файлы: /myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

Если svn propedit svn: игнорировать "." в корневом каталоге и добавьте * .o, он будет игнорировать myfile.o, но не игнорирует /folder1/myfile2.o, /folder1/folder1.1/myfile3.o, /folder2/myfile4.o. Есть ли способ добавить * .o для всего проекта (я не могу сделать это для всего репозитория, что, я знаю, можно сделать, потому что этот проект находится в репозитории со многими другими проектами)?

Пожалуйста, дайте мне знать, если мне нужно уточнить. Спасибо!

Ответы [ 3 ]

67 голосов
/ 05 августа 2009

Редактировать

Оригинальный ответ, представленный ниже, был дан до Subversion v1.8, в которой был представлен способ установки игнорирования уровня репозитория по умолчанию (называемого svn:global-ignores) без переопределения / замены свойства svn:ignore в корневом каталоге и в каждом отдельном подкаталоге. , Начиная с версии 1.8, лучший способ добиться того, чего вы хотите, - это вызвать следующую команду (кредит идет на TManhente):

svn propset svn:global-ignores '*.o' .

В более ранних версиях (и в более поздних версиях) вы все еще можете использовать подход, указанный в исходном ответе ниже; однако, имейте в виду, что это предполагает, что вы в порядке с заменой / перезаписью свойства svn:ignore в каждом подкаталоге ... это может подойти для небольшого / нового репозитория, но, вероятно, это не то, что вам нужно, если у вас большой / старый репозиторий, в котором некоторые подкаталоги могут иметь независимые svn:ignore свойства, которые вы не хотите перезаписывать.

Оригинальный ответ

Вы можете использовать опцию «-R» или «--recursive» с «svn propset», как в следующей команде:

svn propset svn:ignore '*.o' . --recursive

Подробнее

В обоих случаях вы можете использовать следующую команду для получения дополнительной информации о svn propset:

svn help propset
39 голосов
/ 22 июня 2013

Просто обновление: введена Subversion 1.8.0 Унаследованные свойства и Конфигурация с диктовкой репозитория (для авто-реквизитов и игнорирования) , которая также может использоваться в этом случае. *

Вы можете установить новое свойство svn:global-ignores в корневом пути. Это «повлияет только на поддеревья, укоренившиеся в пути, на котором установлено свойство».

Это новое свойство установлено так же, как svn:ignore:

    svn propset svn:global-ignores '*.o' .

Дополнительная информация доступна в Замечания к выпуску Subversion 1.8.0 .

3 голосов
/ 04 сентября 2014

Как отметил @ hackmaster.a в комментарии, пример, приведенный в принятом ответе, имеет побочный эффект удаления всех предыдущих настроек svn:ignore. Использование propedit вместо propset также не работает.

Правильный способ рекурсивного добавления нескольких файлов - это помещать их имена в список, разделенный новыми строками в свойстве svn:ignore, установленном с svn propset svn:ignore "[LIST]" .

Например:

    svn propset svn:ignore -R "*.pkl
    > *.class
    > Thumbs.db
    > data.tmp" .

Конечно, > - это просто подсказки оболочки.

Эта команда рекурсивно изменит свойства svn:ignore текущего каталога . и каждой из его подпапок.

...