svn:忽略本地到电脑?

时间:2012-02-28 20:15:08

标签: svn version-control

当我使用svn:ignore从SVN中排除文件然后另一个人尝试提交排除的文件时, svn 阻止他?或者他必须在他的电脑里做同样的命令?

3 个答案:

答案 0 :(得分:5)

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

现在,想象一个开发人员创建了一堆新的*.java文件,编译它们,对结果感到满意,并且做到了这一点:

$ svn add *

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

svn:ignore属性位于您要忽略文件的目录中。如果且仅当文件尚未存在于Subversion中时,如果文件与文件上的svn:ignore glob模式匹配,则文件将不会显示,并且用户执行svn status或{{{ 1}}用外卡。

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

在上面的场景中,如果开发人员这样做了:

?

$ svn add * 属性将阻止添加svn:ignore个文件。

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

$ svn add foo.class

然后,Subversion不会忽略该文件。并且,一旦将其添加到存储库,Subversion将报告文件是否已更改或删除。

所有已签出该目录版本的用户都可以看到*.class属性。这是防止意外添加文件的好方法,但它不能阻止某人实际添加它们。

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

答案 1 :(得分:4)

  

当我使用svn:ignore从SVN中排除文件然后另一个人尝试提交排除的文件时,svn会阻止他吗?

不,svn:忽略只定义文件的模式,如果在WC内部未跟踪且存在,将从svn status svn add * <的输出中过滤掉/ p>

  他必须在他的电脑里做同样的命令吗?

svn:ignore是文件夹的版本化属性,与其他版本化数据一起存储,在存储库中。如果您将此数据和其他方面更新自己的WC提交到此(或更高版本)修订版,则其WC中的文件夹将具有相同的svn:ignore属性设置

答案 2 :(得分:1)

ignore属性不会阻止任何人添加文件。在执行“svn status”之类的操作时,它只会阻止subversion列出与模式匹配的文件被列为“未知”。

但是,必须将其提交到存档才能被所有用户看到。