Подтвердить что ты не робот

Рекурсивно игнорируя файлы во всем исходном дереве в subversion

Я не новичок в Subversion, но до сих пор я использовал Tortoise и никогда не был по умолчанию. Мой вопрос в том, как игнорировать все файлы, такие как *.o, из источника ENTIRE, а не только из корня.

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

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

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

4b9b3361

Ответ 1

Изменить

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

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

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

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

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

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

Дополнительная информация

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

svn help propset

Ответ 2

Просто обновление: Subversion 1.8.0 представляет Inherited Properties и Reactitory Dictated Configuration (для автоподстановки и игнорирования), которые также могут быть использованы в этом случае.

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

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

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

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

Ответ 3

Как указано @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 текущего каталога . и каждой из его подпапок рекурсивно.