使用eclipse进行开发时,在编译JAVA代码时的原则是:对于源代码目录中的所有*.java文件编译成同名的*.class文件,而对于如 abc.java中的内部类C,编译成abc$C.class;对于所有非java后缀后的文件与目录,连同编译后的文件复制到目标位置。


   这样就存在一个问题,如果代码是从svn库检出的,每个目录下都会有个.svn类型的目录,eclipse会把它们全都拷贝到编译目录(默 认为  bin),导致svn客户端会误认为bin目录是svn   co出来的,而bin目录下的svn信息又与该目录下的文件内容不符,这样很多svn客户端就错乱了。更有甚者,会把bin目录下的内容check  in到库中。

   解决这个问题很简单,修改项目属性(选中工程->右键->properties),选择Java Build   Path,在Sources选项卡中选择对应的源代码目录,选中Excluded,点击edit,在Exclusion pattems里填加  **/.svn/**  就可以了。这样eclipse在编译时会忽略掉.svn目录。

   对于TortoiseSVN可能会设置使用_svn代替.svn目录,做相应设置即可。


忽略文件和目录

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

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


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

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

如果你右键一个单独的未版本控制文件,并从菜单栏选择TortoiseSVN(加入忽略列表)Add to Ignore List,会出现一个子菜单允许你仅选择该文件,或者所有具有相同后缀的文件。如果你选择多种文件,那么就没有子菜单了,你仅能添加这些特定的文件/目录。

如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择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

Pattern  matching is case sensitive, which can cause problems on Windows. You  can force case insensitivity the hard way by pairing characters, e.g. to  ignore *.tmp regardless of case, you could use a pattern like *.[Tt][Mm][Pp].

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

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

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

附:tortoisesvn_1.6.16说明书

http://sourceforge.net/projects/tortoisesvn/files/1.6.16/Documentation/TortoiseMerge-1.6.16-zh_CN.pdf/download