据悉Subversion1.6.11发布已经揭晓,共所周知现在互联网上免费的版本控制服务多基于Subversion,因为它是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。下面先看一下它和CVS的比较:
1.对重命名、删除文件的支持
CVS:不支持本地文件重命名提交
删除分remove和erase两种前者把本地和库中文件都删除后者只是删除本地文件
不能删除文件夹
SVN:支持文件重命名提交系统会提示删除旧文件,创建新文件
删除本地文件提交库中文件也被删除
2.对中文路径名的支持
CVS:支持的比较好
SVN:要将权限控制文件保存为SVN支持的UTF-8格式
3.本地文件与库的对应关系
CVS:可以多对多
SVN:一个库可以有多个工作目录但一个工作目录只能对应一个库虽然可以更改库位置但是要求很严格
4.库中文件存放方式
CVS:完全用户可见方式与客户端文件夹结构完全一直(CVS生成文件除外)
SVN:与vss相似,看不到文件真正的内容
5.用户、权限管理
CVS:管理员很难清楚的知道一个项目到底有多少个用户各用户的权限和密码是什么只能用分组的方式管理用户而且密码和权限还是不清晰
SVN:查看、修改配置文件即可
6.权限
CVS:有read、write、creat、none这四种权限,任何人不能删除文件夹。
SVN:只有read、write、none三种权限creat和delete权限好象和write是捆绑在一起的
Subversion1.6.11发布体现了Subversion的快速发展,通过与ConcurrentVersionsSystem(CVS)的比较我们可以看到它的优势。
优于CVS之处
原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例,如传输中断,不会引起数据库的不完整和数据损坏。重命名、复制、删除文件等动作都保存在版本历史记录当中。对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。分支的开销非常小。优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。
使用情况
虽然在2006年时Subversion的使用族群仍然远少于传统的CVS,但已经有许多开放原码团体决定将CVS转换为Subversion。已经转换使用Subversion的包括了FreeBSD、ApacheSoftware Foundation、KDE、GNOME、GCC、Python、Samba、Mono以及许多团体。有许多的团队换用Subversion是因为Trac所提供的专案管理环境。除此之外,一些自由软件开发的协作网如SourceForge除了提供CVS外,现在也提供专案开发者使用Subversion作为原码管理系统,JavaForge、GoogleCode以及BountySource则以Subversion作为官方的原码管理系统。那么Subversion1.6.11发布后和以前的版本有什么改进的地方呢?请看下文;
该版本改进内容:
User-visiblechanges:
◆fixforrepositoriesmountedviaNFS(issue#3501)
◆enableTCPkeep-alivesinSVNserve(r880552)
◆tightenrestrictionsonrevpropsfor'SVNadminverify'(r904594)
◆makera_serfgivebetterout-of-dateinformation(issue#3561)
◆improveerrormessageuponconnectionfailurewithSVN+ssh://(r922516)
◆allow'SVNlog'onanuncommittedcopy/movedestination(r901752)
◆make'SVNadminhotcopy'copythefsfsconfigfile(r905303)
◆mergeinfoimprovementswithnon-inheritablemergeinfo(issue#3573)
◆makemergeinfoqueriesnotrequireaccesstothereporoot(issue#3242)
◆updateURLstoreferthethenewapache.orgrepository(r904301,-94)
◆updaterelativeexternalsduringaswitch(issue#3390)
◆fix'merge--reintegrate'withself-referentialmergeinfo(r892050,-85)
◆improvewc-ngworkingcopydetection(r929382)
◆improvehandlingofmergeinfowhenusingserf(r880461)
◆fixed:'SVNlookplist--revprop'with'-tTXN_NAME'(r917640,-8211)
◆fixed:fileexternalfromURLcannotoverwriteexistingitem(issue#3552)
◆fixed:potentialmemoryerrorin'SVNstatus'(r923674,-9)
◆fixed:mergerecordsmergeinfofromnaturalhistorygaps(issue#3432)
◆fixed:theoreticalpossibilityofDBcorruption(r926151,-67)
Developer-visiblechanges:
◆disablechecksforwc-ngworkingcopieswhenrunningthetestsuite
◆onWindows,don'tignoremoveoperationerrorcodes(r896915)
◆moreprecisereportingoferrorsoccuringwithsqliteinit(r927323,-8)
◆ensurerangelistAPIsarecommutative(r923389,-91)
【编辑推荐】