2009-09-21 6 views
11

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

Может ли кто-нибудь объяснить это поведение - почему он НЕ игнорирует каталог .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 

ответ

7

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

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

17

В каталоге 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 каталог.

+1

Параметр 'commit' после' add' не действительно требуется. Можно добавить свойство в каталог, который отслеживается в рабочей копии, но еще не зафиксирован. –

5

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

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

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

global-ignores = .git 
+1

Проблема с глобальными игнорированиями заключается в том, что следующий парень, использующий репо, * не * игнорирует материал, который вы хотите избежать в репо. – Coderer

+0

для этого вы можете использовать крюк pre commit с принудительным глобальным файлом игнорирования –

Смежные вопросы