2012-02-28 158 views
4

当我排除来自SVN的文件与svn:ignore然后另一个人试图提交排除的文件,svn阻止他?或者他必须在他的电脑中执行相同的命令?svn:忽略本地到计算机?

+1

如果您提交属性所在的文件夹,则当其他人svn更新文件在他的WC中也将被忽略。 – prodigitalson 2012-02-28 20:19:00

回答

4

当我从SVN中排除文件与svn:忽略,然后另一个人尝试提交排除的文件,svn阻止他?

不,SVN:忽略只定义文件的模式(S),其中,如果未经跟踪和存在内WC,将从svn statussvn add *

输出进行过滤,他必须做他的电脑里有同样的命令?

的svn:忽略是版本文件夹的属性,存储的,与其他版本的数据,在储存库。如果您提交此数据并将其他WC更新到本版本(或更高版本),则其WC中的文件夹将具有相同的svn:ignore属性设置

1

ignore属性不会阻止任何人添加文件。它只能防止在执行诸如“svn status”之类的操作时将与该模式匹配的文件列表列为“未知”。

但是,它必须提交到存档以供所有用户看到。

5

想象一下,如果你有一堆Java文件(*.java)。这些被编译成*.class文件。已编译的*.class文件不应存储在Subversion中。

现在,想象一下谁创造了一堆新*.java文件,编译了他们是满意的结果,并没有这样的开发商:

$ svn add * 

在这种情况下,Subversion会欢快地添加在所有的编译*.class文件。不是你想要的...

svn:ignore属性在您要忽略文件的目录上。如果并且只有当文件不在Subversion中时,如果文件匹配文件上的svn:ignore全局模式,并且用户使用通配符执行svn statussvn add,则文件不会显示。

使用svn status命令,这些文件不会在输出行的开头显示?标记。如果用户试图添加通配符,Subversion将忽略这些文件。

在上述情况下,如果开发人员这样做:

$ svn add * 

svn:ignore属性将阻止*.class文件被添加。

但是,如果一个用户专门增加了一个被忽略的文件:

$ SVN添加让Foo.class

然后,Subversion会不会忽略该文件。而且,一旦将其添加到存储库中,如果文件被更改或删除,Subversion将报告它。

svn:ignore属性对签出该目录版本的所有用户都可见。这是防止意外添加文件的好方法,但它不能阻止某些人实际添加文件。

我有一个pre-commit hook可以让事情更进一步。有了它,您可以阻止用户将特定文件添加到存储库中。您也可以强制用户在创建新目录时设置svn:ignore