在大多数项目中,您将拥有不应该进行版本控制的文件和文件夹。这些可能包括编译器创建的文件,*.obj, *.lst
,也许是用于存储可执行文件的输出文件夹。每当您提交更改时,TortoiseSVN 都会显示您的未版本化文件,这会填满提交对话框中的文件列表。当然,您可以关闭此显示,但您可能会忘记添加新的源文件。
避免这些问题的最佳方法是将派生文件添加到项目的忽略列表中。这样,它们将永远不会出现在提交对话框中,但真正的未版本化源文件仍将被标记出来。
如果您 右键单击 单个未版本化文件,然后从上下文菜单中选择命令 → ,将出现一个子菜单,允许您仅选择该文件,或选择所有具有相同扩展名的文件。这两个子菜单也都有一个 (递归)
等效项。如果您选择多个文件,则没有子菜单,您只能添加这些特定文件/文件夹。
如果您选择忽略上下文菜单的 (递归)
版本,则该项目不仅会被忽略所选文件夹,还会被忽略所有子文件夹。但是,这需要 SVN 客户端版本 1.8 或更高版本。
如果您想从忽略列表中删除一个或多个项目,请 右键单击 这些项目,然后选择 → 您也可以直接访问文件夹的 svn:ignore
属性。这允许您使用文件名通配符指定更通用的模式,如以下部分所述。阅读 名为“项目设置”的部分,以获取有关直接设置属性的更多信息。请注意,每个忽略模式都必须放在单独的行上。用空格分隔它们不起作用。
忽略文件的另一种方法是将它们添加到 全局忽略列表 中。这里最大的区别是全局忽略列表是一个客户端属性。它适用于 所有 Subversion 项目,但仅在客户端 PC 上。通常,最好在可能的情况下使用 svn:ignore
属性,因为它可以应用于特定的项目区域,并且对所有检出项目的每个人都有效。阅读 名为“常规设置”的部分,以获取更多信息。
版本化文件和文件夹永远不会被忽略 - 这是 Subversion 的一项功能。如果您错误地版本化了文件,请阅读 名为“忽略已版本化的文件”的部分,以获取有关如何 “取消版本化” 它的说明。
Subversion 的忽略模式使用文件名通配符,这是一种最初在 Unix 中使用的技术,使用元字符作为通配符来指定文件。以下字符具有特殊含义:
*:匹配任何字符串,包括空字符串(无字符)。
?:匹配任何单个字符。
[ ]:匹配方括号中包含的任何一个字符。在方括号内,用 “-” 分隔的字符对匹配这两个字符之间任何一个字符。例如 [AGm-p]
匹配 A
、G
、m
、n
、o
或 p
中的任何一个。
模式匹配区分大小写,这在 Windows 上可能会导致问题。您可以通过配对字符来强制不区分大小写,例如,要忽略 *.tmp
不管大小写,您可以使用类似 *.[Tt][Mm][Pp]
的模式。
如果您想要通配符的官方定义,您可以在 IEEE 关于 shell 命令语言的规范中找到它 模式匹配符号 .
您不应该在模式中包含路径信息。模式匹配旨在用于普通文件名和文件夹名。如果您想忽略所有 CVS
文件夹,只需将 CVS
添加到忽略列表中。您无需像在早期版本中那样指定 CVS */CVS
。如果您想忽略所有 tmp
文件夹,当它们存在于 prog
文件夹中但不存在于 doc
文件夹中时,您应该使用 svn:ignore
属性。没有可靠的方法可以使用全局忽略模式来实现这一点。