svn忽略设置操作方法?

时间:2013-12-25 09:09:46

标签: svn ignore svn-propset

我现在正尝试将忽略文件列表设置为svn。 我确实尝试过这种方式。

svn propedit svn:ignore . 
.project
.cproject
tags
cscope.files
cscope.out
SICR2000_CPU_Ver0.04.25.tgz

使用这些设置,我的svn状态打印出如下所示。

svn status
 M      .
M       .cproject
~       tags
M       .project

看,我的忽略设置中的前3个文件不会被忽略!

.project
.cproject
tags

我想知道为什么在 svn status 时不会忽略这三个文件。 如何设置这三个文件?

Journeyer

1 个答案:

答案 0 :(得分:2)

您不能忽略存储库中已存在的文件。

忽略主要用于创建不希望意外放入存储库的文件。例如,在C中,您可以从*.o创建*.c文件,或者在Java中,您可以从*.class创建*.java个文件。如果我将工作目录设置为忽略这些文件,版本控制系统将不会报告它们。

想象一下这个设置:

$ svn st
M  foo.txt
M  bar.txt
?  ignore.me

报告文件ignore.me。现在,我将忽略它:

$ svn ps svn:ignore 'ignore.me' .
$ svn st
 M .
M  foo.txt
M  bar.txt

请注意,我处于状态时ignore.me不再显示。但是,我可以添加它:

$ svn add ignore.me
 M .
M  foo.txt
M  bar.txt
A  ignore.me

请注意,它显示在我的状态报告中。那是因为它现在是存储库的一部分(或者一旦我做了提交)。我们使用Java,所有构建的东西都在一个名为target的目录下。我们还有一个build.properties文件,开发人员可以设置它来改变构建的工作方式。但是,这是一个基于每个开发人员使用的文件,不应该检入我们的存储库。

因此,我将build.propertiestarget添加到svn:ignore。有时我会删除项目中的.project.classpath,然后ignore。这些是应该基于每个开发人员设置的Eclipse文件。

如果您需要阻止人们检查特定文件的更改,甚至添加特定文件(不仅忽略,而是阻止任何人有意添加文件),您需要pre-commit hook。这有助于强制执行您的设置并阻止用户进行不应进行的更改。