Почему "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