使用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目录,做相应设置即可。
忽略文件和目录
在多数项目中你总会有文件和目录不需要进行版本控制。这可能包括一些由编译器生成的文件,*.obj,*.lst
,或许是一个用于存放可执行程序的输出文件夹。只要你提交修改,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