SVN全局忽略不起作用(其他帖子的解决方案不起作用)

SVN全局忽略不起作用(其他帖子的解决方案不起作用),svn,Svn,我进入了我的.subversion/config和add.settings,但是从一个svn diff,我们看到它不起作用 ~/Space/ifp-integration/CIGNA-IFP-ESB$ svn diff Index: .settings/org.eclipse.jdt.core.prefs =================================================================== --- .settings/org.eclipse.jd

我进入了我的.subversion/config和add.settings,但是从一个
svn diff
,我们看到它不起作用

~/Space/ifp-integration/CIGNA-IFP-ESB$ svn diff
Index: .settings/org.eclipse.jdt.core.prefs
===================================================================
--- .settings/org.eclipse.jdt.core.prefs    (revision 2014)
+++ .settings/org.eclipse.jdt.core.prefs    (working copy)
@@ -1,6 +1,15 @@

这表明一定有人登记了,但我不在乎,因为我想忽略它。是否有办法确保忽略此内容?

您不能忽略存储库中的内容。在Subversion中,忽略不是这样工作的

忽略只是防止意外地将文件添加到存储库中的一种方法。如果存储库中已存在文件,则不能忽略它

全局忽略仅适用于文件而不适用于目录。如果在Subversion配置文件中说ignore
.settings
,它将不会忽略名为
.settings
的目录,而只忽略名为
.settings
的文件。而且,如果存储库中没有
.settings
文件,它将只忽略该文件

基本上,如果您说
svn add*
svn status
,则不在存储库中且与您的全局忽略模式匹配的任何文件都不会被添加,并显示在
svn status
中。这就是它的全部功能

您可以在名为
svn:ignore
的目录上创建类似的属性。但是,
svn:ignore
也将忽略目录。例如,如果您有一个Maven项目,则可以设置
svn:ignore
=
target
,并且不会报告目标文件夹。但是,
svn:ignore
仅适用于属性所在的目录,而不适用于子目录

那么你怎么能忽略
.settings
目录呢?很简单:你不需要检查它。不幸的是,在Subversion中没有简单的方法可以做到这一点。以下是您可以做的:

$ svn checkout --depth=immediates http://server/src/myproj
这将签出工作目录中的所有文件夹和文件,但不会签出任何子目录。在Kornshell和BASH中(如果设置了
shopt-s extglob
):

这将在除
.settings
目录之外的所有目录中继续签出

您也可以这样做:

$ svn update --set-depth=exclude .settings
签出
.settings
目录后,将其删除。这不会从存储库中删除
.settings
目录,但会从工作目录中删除
.settings
目录,并且工作目录(但不是存储库URL)上的
svn diff
不会报告
.settings
目录中的任何内容

我需要强调的一个重要点是:忽略仅防止意外地将文件添加到存储库中。它不会阻止某人添加它,一旦它出现,它就不会被忽略

此外,您的全局忽略设置对每个人都不是全局的。只为你。如果您想阻止人们添加不应该添加到存储库中的文件,您需要一个预提交钩子,如


此挂钩可用于防止提交具有特定名称的文件或目录,还可用于确保设置了文件和目录的属性。例如,您可能希望确保人们不能在项目中添加
.settings
目录。或者目录上的
svn:ignore
属性设置为忽略
.settings
目录。

在Windows上,文件
config
%APPDATA%\Subversion\config
。例如
C:\Documents and Settings\Peter\Application Data\Subversion\config
$ svn update --set-depth=exclude .settings