2

我很难理解 svn:ignore 属性。如果有人可以帮助我,那就太好了。

我从 svn 存储库中签出了一个 grails Web 应用程序,该存储库具有 svn:ignore 属性,适用于 *.log 文件和 /target 文件夹。显然,当我签出 *.log 文件时, /target 文件夹丢失了。在我的本地工作副本上处理此 grails 应用程序后,将创建 /target 目录和 *.log 文件。现在,当我将更改提交到 svn 存储库时,/target 文件和 *.log 文件是否也会提交?还是会因为 svn:ignore 属性已经存在于 grails 应用程序的 svn 副本上而被自动忽略?

希望我已经说清楚了。

感谢您提供的任何帮助。

4

2 回答 2

3

svn:ignore 属性包含某些 Subversion 操作将忽略的文件模式列表。也许是最常用的特殊属性,它与 global-ignores 运行时配置选项(参见“配置”一节)一起使用,以从命令 svn status、svn add 和 svn import 中过滤出未版本化的文件和目录。

svn:ignore 属性背后的基本原理很容易解释。Subversion 并不假定工作副本目录中的每个文件或子目录都用于版本控制。必须使用 svn add 或 svn import 命令明确地将资源置于 Subversion 的管理之下。因此,工作副本中通常有许多资源没有版本控制。

现在,svn status 命令将工作副本中尚未被 global-ignores 选项(或其内置默认值)过滤掉的每个未版本控制的文件或子目录作为其输出的一部分显示。这样做是为了让用户可以查看他们是否忘记将资源添加到版本控制。

但是 Subversion 不可能猜出每个应该被忽略的资源的名称。此外,通常在特定存储库的每个工作副本中都应该忽略一些事情。强制该存储库的每个用户将这些资源的模式添加到他们的运行时配置区域不仅是一种负担,而且有可能与用户签出的其他工作副本的配置需求发生冲突。

解决方案是将可能出现在给定目录中的资源所特有的忽略模式与目录本身一起存储。未版本化资源的常见示例基本上对目录来说是唯一的,但可能会出现在那里,包括程序编译的输出。或者——用一个更适合本书的例子——将某些 DocBook XML 源文件转换为更清晰的输出格式而生成的 HTML、PDF 或 PostScript 文件。

参考:

http://svnbook.red-bean.com/en/1.1/ch07s02.html

于 2011-09-16T18:48:07.063 回答
1

svn:ignore 属性包含某些 Subversion 操作将忽略的文件模式或目录名称的列表。如果您将更改提交到 svn 存储库,则 /target 文件和 *.log 文件将不会被提交,并且由于 grails 应用程序的 svn 副本上已经存在 svn:ignore 属性,它们会被自动忽略。

于 2011-09-16T18:50:13.343 回答