忽略文件和目录

图 4.31. 未受版本控制的文件之资源管理器上下文菜单

未受版本控制的文件之资源管理器上下文菜单


在多数项目中你总会有文件和目录不需要进行版本控制。这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹。只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件。当然你可以关闭这个显示,不过你可能会忘记添加新的源文件。

最好的避免类似问题的方法是添加参考文件到该项目的忽略列表。这样他们就永远不会出现在提交对话框中,而真正的未版本控制文件则仍然列出。

If you right click on a single unversioned file, and select the command TortoiseSVNAdd to Ignore List from the context menu, a submenu appears allowing you to select just that file, or all files with the same extension. Both submenus also have a (recursively) equivalent. If you select multiple files, there is no submenu and you can only add those specific files/folders.

如果你选择右键忽视菜单的递归版本,项目将不仅会被所选文件夹忽视,而且所有的子文件夹也将被忽视。然而,这需要SVN客户端版本1.8或者更改。

如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择TortoiseSVN从忽略列表删除。你也可以直接存取目录的svn:ignore属性。它允许你使用文件匹配来指定多个模式,这在下面的章节叙述,阅读“项目设置”一节获得更多关于直接设置属性的信息。请注意每个忽略模式占一行,不支持使用空格分割。

全局忽略列表

另一个忽略文件的方法是添加这些文件到global ignore list .他们最大的不同是全局忽略列表是一个客户端特性。它会作用到 所有的(all)subversion 项目。但只能在pc客户端使用。在全局尽可能更好的使用svn:ignore特性,因为他能够应用到特殊的项目区域,并却他作用于所有检出该项目的人。阅读“常规设置”一节获得更多信息。

忽略已版本控制的条目

已版本控制的文件或目录不能够忽略,这是subversion的一个特性。如果你错误的版本控制了一个文件,阅读“忽略已经版本控制的文件”一节介绍怎样取消版本控制(unversion)

忽略列表中的模式匹配

Subversion 的忽略模式使用了文件匹配,一种原先在Unix系统中使用meta字符作为通配符的技术。下面的字符有着特殊的意思:

*

匹配任何字符串,包括空串(没有字符)

?

匹配任何单字符

[...]

匹配任何单在方括号[]内的单字符,在方括号内,一对字符被-分隔,匹配任何词汇表(lexically)上在他们中间的字符。例如[AGm-p]匹配任何单个的A,G,m,n,o或者p

模式匹配是大小写敏感的,这在 Windows 平台下会出问题。你可以使用成对的字符来强制忽略大小写。例如,忽略不记 *.tmp 的大小写,那么你可以使用像 *.[Tt][Mm][Pp] 这样的模式。

如果你想要一个官方定义的匹配规则。你可以在关于shell命令行语言的IEEE规范Pattern Matching Notation中找到。

全局忽略列表中不要使用路径

不应该在模式中包含路径信息。模式匹配的目标是纯文本的文件名和文件夹名。如果你想忽略所有的 CVS 文件夹,只要向忽略列表中添加 CVS 即可。不再需要像在早先的版本中那样指定 CVS */CVS。如果你想忽略所有在 prog 文件夹下的 tmp 文件夹,但不忽略在 doc 文件夹下的,你应该使用 svn:ignore 属性来替代。使用全局忽略模式不能可靠的完成这一目标。