Почему "svn игнорировать" не игнорировать?

Я пытаюсь добавить ядро ​​Linux в дерево SVN, которое имеет подкаталог .git, который я не хочу добавлять.

Может ли кто-нибудь объяснить это поведение - почему он НЕ игнорирует каталог .git?

test2$ mkdir -p a/.git/blah
test2$ ls
a
test2$ svn propset svn:ignore .git .
property 'svn:ignore' set on '.'
test2$ svn propset -R svn:ignore .git .
property 'svn:ignore' set (recursively) on '.'
test2$ svn add a
A         a
A         a/.git
A         a/.git/blah

Ответ 1

Свойство svn:ignore в каталоге перечисляет имена в текущем каталоге, которые будут игнорироваться. Вы установили свойство svn:ignore в текущий каталог на .git, но это не относится к подкаталогу a. Что вы можете сделать, сначала добавьте a нерекурсивно:

svn add -N a
svn ci -m "add a directory"

Затем установите свойство svn:ignore:

svn propset svn:ignore .git a

а затем добавьте свое дерево:

svn add a

Это должно игнорировать каталог a/.git.

Ответ 2

Первый svn propset устанавливает свойство svn:ignore в родительский каталог a.

Второй svn propset ничего не делает, потому что a еще не находится под управлением SVN.

Ответ 3

Свойство svn:ignore предназначено для игнорирования файлов в уже добавленных каталогах.

Чтобы избежать импорта файлов (или каталогов), вы должны использовать global-ignores -feature, который настраивается в файле ~/.svn/config (UNIX) или %APPDATA%\Subversion\config (Windows) в раздел [сборник].

Активируйте его, удалив # перед линией:

global-ignores = .git