我现在正尝试将忽略文件列表设置为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
答案 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.properties
和target
添加到svn:ignore
。有时我会删除项目中的.project
和.classpath
,然后ignore
。这些是应该基于每个开发人员设置的Eclipse文件。
如果您需要阻止人们检查特定文件的更改,甚至添加特定文件(不仅忽略,而是阻止任何人有意添加文件),您需要pre-commit hook。这有助于强制执行您的设置并阻止用户进行不应进行的更改。