2009-09-21 233 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设置在目录的asvn:ignore财产。

第二个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

了'add'后'commit'是不是真的需要。可以将属性添加到在工作副本中跟踪但尚未提交的目录中。 – 2011-03-21 17:01:48

5

svn:ignore属性用于忽略已添加目录中的文件。

为了避免文件(或目录)的进口,你应该使用全球忽略[杂记]部分-feature,这是在文件~/.svn/config(UNIX)或%APPDATA%\Subversion\config(Windows)中配置。

通过在该行的前面去掉#激活它:

global-ignores = .git 
+1

全球忽视的问题是下一个使用回购的人不会忽视你想避免在回购中看到的东西。 – Coderer 2010-04-23 22:22:24

+0

为此,您可以使用带有强制全局忽略文件的预提交钩子 – 2010-04-24 19:41:36