SVN: рекурсивно игнорировать некоторые каталоги - PullRequest
98 голосов
/ 10 января 2010

Я не хочу, чтобы какой-либо каталог с именем build или dist входил в мой SVN, независимо от того, насколько глубоко оно находится в дереве.

Возможно ли это? В мерзавец я ​​просто положил

build
dist

в моем .gitignore в корне, и он рекурсивно игнорирует. Как мне сделать это с SVN? Пожалуйста, не говорите мне делать propset для каждого родительского каталога ...

Ответы [ 15 ]

49 голосов
/ 10 февраля 2015

Начиная с subversion 1.8, теперь есть свойство svn:global-ignores, которое работает как svn:ignore, но рекурсивно (поэтому установите его в каталоге верхнего уровня)

44 голосов
/ 10 января 2010

svn propset принимает --recursive в качестве опции, поэтому вы можете сделать это с двумя недостатками:

  1. Вы должны проверить весь репозиторий (или, по крайней мере, все каталоги в нем), и
  2. вы должны помнить, чтобы устанавливать свойство svn:ignore всякий раз, когда добавляете новый каталог
41 голосов
/ 10 января 2010

Это невозможно сделать. В Subversion есть только два механизма игнорирования: svn:ignore (который не является рекурсивным) и global-ignores (который не является специфичным для репозитория).

16 голосов
/ 09 февраля 2012

Это работает для меня:

 svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
12 голосов
/ 10 января 2010

добавить в файл ~ / .subversion / config или / etc / subversion / config:

[miscellany]
global-ignores = build dist
8 голосов
/ 24 марта 2011

Можно игнорировать каталоги build и dist, удаляя каталоги из контроля версий. Хитрость заключается в том, чтобы использовать параметр --keep-local, чтобы оставить каталог в рабочей копии. Например:

svn rm dist --keep-local
svn ci -m'removed build directory from version control'

Каталог больше не будет отслеживаться Subversion, но он все еще будет в вашей рабочей копии для хранения вывода компилятора и т. Д.

ура, джо

6 голосов
/ 15 августа 2012

Например, структура папок:

Project/
Project/dist/

cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"

Хорошо бы выполнить svn-удаление содержимого dist перед командой ignore, поэтому для ветвей dist будет пустым.

Работал у меня, проверял сегодня. Вот страница, объясняющая это немного

5 голосов
/ 15 октября 2014

Сначала вы должны перейти в верхнюю папку вашей рабочей копии и создать там файл (скажем, .svnignore), куда вы должны поместить все шаблоны, которые вы хотите игнорировать, например (для проекта Android): 1001 *

bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex

Затем вы запускаете следующую команду (помните, что вы должны находиться в верхней папке вашей рабочей копии):

svn propset svn:ignore -R -F .svnignore .

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

svn rm --keep-local <path>

Получил все это из этой замечательной статьи, которая объясняет все это: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/

5 голосов
/ 10 января 2010

Чтобы игнорировать все такие файлы во всех репозиториях, вы можете добавить global-ignores в файл конфигурации для каждого пользователя.

В Unix-подобных системах эта область отображается как каталог с именем .subversion в доме пользователя каталог. В системах Win32, Subversion создает папку с именем Subversion, как правило, внутри Область данных приложения пользователя каталог профиля

См. Параметры конфигурации

К сожалению, для каждого хранилища нет возможности сделать это. Это в основном для каждого пользователя или для каждого каталога, так что кратное число svn:ignores - это, пожалуй, самый раздражающий способ.

4 голосов
/ 13 ноября 2015

В Subversion 1.8 можно установить глобальное игнорирование текущего хранилища.

svn propset svn:global-ignores build .
svn propset svn:global-ignores dist .

Также вы можете создать папку с именем .svnignore и написать условия.

build
dist

запомните одно условие на строку, настройка build / * или dist / debug напрасна. Затем выполните команду:

svn propset svn:global-ignores -F .svnignore .
...