如何让SVN忽略Mac_&引用;文件夹?

如何让SVN忽略Mac_&引用;文件夹?,svn,Svn,我的开发服务器被几个OSX用户访问,他们的操作系统往往会在周围留下大量不必要的文件,所有这些文件都以点下划线(。)开头。我知道OSX可以被告知不要在网络驱动器上创建这些,但它们仍然会偷偷进入。我希望SVN忽略以“.”开头的任何内容,但我似乎无法让它正常工作,即使它看起来应该很简单。我已经在SVN全局忽略模式中添加了“.*”,但SVN仍在尝试添加和提交这些文件。谁能告诉我我做错了什么?我的完整SVN忽略模式是: global-ignores = *.o *.lo *.la *.al .libs *

我的开发服务器被几个OSX用户访问,他们的操作系统往往会在周围留下大量不必要的文件,所有这些文件都以点下划线(
)开头。我知道OSX可以被告知不要在网络驱动器上创建这些,但它们仍然会偷偷进入。我希望SVN忽略以“
.
”开头的任何内容,但我似乎无法让它正常工作,即使它看起来应该很简单。我已经在SVN全局忽略模式中添加了“
.*
”,但SVN仍在尝试添加和提交这些文件。谁能告诉我我做错了什么?我的完整SVN忽略模式是:

global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store Thumbs.db ._* *.bak *.tmp nbproject

我不知道这是否有什么不同,但我正试图通过编辑/etc/subversion/config文件在Ubuntu和Ubuntu服务器上设置它。

向SVN添加文件不是本地操作吗?在这种情况下,用户特定的设置应该忽略文件。

获取。*文件是正常的,因为dev直接在服务器上工作,所以。*文件在编辑文件时直接生成


相反,他们应该在本地机器上获取一个工作副本(请参阅Subversion文档了解如何从samba服务器上获取),然后忽略模式(在每台机器上设置)将阻止他们在提交时添加。*文件。换句话说,这些文件将“保留在它们的计算机上”。

您能否创建一个客户端钩子来递归删除这些文件

我的bashshell中有一个别名可以删除所有的.DS_存储文件夹,将其连接到Subversion是我应该研究的事情…

我有一个可能符合要求的别名。这个钩子允许您完全禁止使用基于正则表达式的特定文件名。您可以禁止任何以“.\u”开头的文件,如果有人试图添加一个,他们将无法提交该文件

在一些由于有“.”文件而被拒绝的提交之后,开发人员将更新他们的
global-ignores
以包含这些文件

您不能为所有用户设置
global ignores
,但此预提交挂钩将鼓励用户自行设置


它的工作原理与插座如何阻止用户将叉子插入插座的原理相同。第三次或第四次之后,即使是最顽固的开发人员也会意识到这不是一个好主意。

Subversion使用fnmatch()函数进行忽略。所以你必须使用这个函数的

你发布的“忽略”部分应该可以工作。您确定在正确的配置文件中设置了它吗?svn可以从中读取这些信息

在类Unix系统上,此区域在用户的主目录中显示为名为.subversion的目录。 除了每个用户的配置区域外,Subversion还可以识别系统范围的配置区域。[…]在类Unix平台上,系统范围的配置区域应为/etc/subversion目录


您还可以使用set svn:ignore属性并向其添加“.*”和其他所需的值。然后,忽略值位于存储库和每个工作副本中,而不是特定于机器的配置中。但是,svn:ignore和全局ignore列表都可以绕过

确保使用的“svn add”表单尊重svn:ignore和全局忽略列表。 以下是一段摘录自(补充强调):

即使设置了svn:ignore,也可以运行 如果使用shell,则会出现问题 命令中的通配符。壳 通配符被扩展为 之前的明确目标列表 颠覆对他们起作用,所以 运行svn子命令*就像 正在运行svn子命令file1 file2 文件3…。在svn的情况下,添加 命令,其效果类似于 传递--no ignore选项。所以 使用svn而不是通配符 加上——力量。进行批量调度 用于添加的未版本的内容。 明确的目标将确保 当前目录不会被忽略 因为已经在版本中了 控件,并且--force选项将 使Subversion爬过该区域 目录,添加未版本化的文件 在尊重svn的同时:忽略 属性和全局忽略运行时 配置变量。一定要 还提供--depth文件选项 如果没有,请添加到svn命令 想要一个完全递归的爬网吗 需要补充的东西

如何测试忽略列表是否有效 如果它没有显示,并且没有版本控制,那么它将被正确地忽略


除非正确忽略并始终正确使用add,否则像@David W.这样的预提交钩子可能是最后/唯一的全面防御…

他们如何访问服务器?您是否在OSX客户端上设置了忽略模式?它们通过samba访问服务器,并从服务器提交。我可以在他们的机器上设置忽略,但在提交他们处理过的文件夹时,我仍然会遇到同样的问题。这是很好的信息,谢谢。我不知道svn add在shell通配符等方面会有问题,所以这将非常方便。我认为pre-commit钩子将是最可靠的,因为人们正在使用不同的机器和客户机等,但我也想对你的回答表示感谢,因为它真的很有帮助。这看起来很棒,谢谢。在不依赖其他SVN用户的情况下解决问题。注意。@JonMitten新链接是。这会让一切变得更加公开。如果你把叉子插入电源插座会发生什么?我相信我把它设置在了正确的位置,因为我添加到忽略中的其他项目被正确地忽略了。不过我会查一查。感谢模式匹配链接-有趣的东西。
svn status