硬广:《SVN与TortoiseSVN实战》系列已经写了七篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解。
关于属性的奇技淫巧较多,分为两篇来写,第一篇详见《SVN与TortoiseSVN实战:属性的奇技淫巧(一)》,内容概要:
1、属性的概念和基础操作;
2、属性的关键字展开;
3、使用属性忽略某些文件;
4、设置Mime类型;
5、自动设置属性;
6、引用外部项目;
7、设置签入日志限制;
8、属性冲突;
4、设置Mime类型
SVN将项目仓库中的文件分为两种:文本文件和二进制文件。
由于二进制文件是不可读的,因此SVN对于合并文件、处理冲突时会对二进制文件进行区别对待。
使用TortoiseSVN的Properties菜单打开属性窗口,使用New按钮选择Minme-Type,如下图进行设置:
大家可以试一下设置为二进制后产生冲突与文本类型的差别。
5、自动设置属性
自动设置属性其实就是SVN对所有某个类型的文件进行相同的属性自动设置。
比如把所有的.java文件设置一个属性,可以使用如下配置:
class="brush:cpp;gutter:true;">enable-auto-props = yes [auto-props] *.java = svn :keywords =Date Rev Id *.txt = svn :keywords =LastChangedDate LastChangedRevision
自动设置属性仅在本地有效。
6、引用外部项目
有时候,你的SVN中的项目可能依赖了另一个项目仓库中的代码,通常这些共用和通用的代码会有一个独立的项目仓库。
SVN提供了externals属性来把其它项目仓库中的代码纳入到你的本地拷贝中,而这些签出的外部依赖项建议作为只读拷贝,不要对其修改。
新建一个目录,使用TortoiseSVN的Properties菜单打开属性窗口,使用New按钮选择Externals:
在URL中输入外部依赖项的SVN地址即可。
7、设置签入日志限制
在团队管理中要求每次提交必须填写提交日志是强烈推荐的做法,可以帮助团队成员了解其他成员的修改情况,也便于做历史追踪。
TortoiseSVN通过自有的属性,允许设置提交日志和锁定日志的最小长度。如果你输入的日志短于预设值,提交会被禁止,这两个属性如下:
tsvn:logminsize;
tsvn:lockmsgminsize;
由于是通过TortoiseSVN自有的属性来设置的,因此只有使用TortoiseSVN客户端才有效。
在项目根目录上右键,使用TortoiseSVN的Properties菜单打开属性窗口,使用New按钮选择Log Sizes:
1、2分别是签入和加锁的日志最小字符数。
还有一种实现这种限制的方法是在SVN服务端编写钩子,不过稍微麻烦一点。
8、属性冲突
属性跟文件一样,不同成员同时对同样位置的修改也会产生冲突,更简单点说是对同一个属性的修改。
如果因为其他用户已经提交了同样的属性,提交时出现冲突,会产生一个 .prej
文件。
冲突的处理窗口如下:
对于冲突处理,可以参考《SVN与TortoiseSVN实战:冲突详解(一)》讲解的比较清楚,触类旁通。
记录,为更好的自己!