SVN可行性分析

时间:2022-04-22 16:41:42

Subversion是近几年崛起的版本管理工具,已经有人宣称它会是CVS的接班人,SVNCVS的功能类似,一个很贴切的比喻:SVN=版本控制+备份服务器。下面是摘自百度百科的二者对比:“CVSSVN的比较类似与比较C++Java,很明显CVSSVN都远比SourceSafe强大的多,如同C++JavaBasic强大的多,CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便,SVN修正并添加了一些CVS并不拥有功能。”在实际的使用中,感觉二者的操作基本类似,由于模仿自CVSSVN修正并添加了CVS所没有的功能,所以它的功能非常完善;另外,SVN支持的文件类型非常丰富,不用再向CVS中那样判断二进制还是编码文件那么麻烦;再次,SVN的速度明显的比CVS快,查询资料后发现,由于架构的不同,SVN完全备份文件,所以在网络上它只传输很少的信息并支持更多的离线模式的功能,自然会快。但SVN也有些瑕疵:首先,SVN在配置方面都可以在记事本中实现,虽较CVS的命令行要简单一点,但密码配置文件都是明文,安全性令人怀疑;其次,SVN是完全备份文件,虽然速度提升,但比较占用硬盘空间,时间久了,数据存储会成为问题;再次,不知是否为电脑的原因,客户端工具TortoiseSVN在体现文件是否修改或提交的标示刷新不及时。

SVN的版本控制原理以及关键概念均可参考CVS,具体到它的应用如下

服务器配置,用的是Subversion-1.6.15,安装后,将安装目录下/bin加入系统路径,并将辅助工具SVNService解压至该目录,先创建一个文件库(最好选用空文件夹),利用命令svnadmin create 库目录创建一个库,成功后进入该目录设置项目的用户信息,conf目录下passwd文件为用户密码文件,密码都是明文显示,按实例格式添加用户,authz文件为权限配置文件,按照示例,修改如下:[groups]  repository=user1,user2,user3
[/user1]  user1=rw    [/]  user2=rw  *=r
,即可实现权限分配,svnserve.conf中的anon-accessauth-access分别为匿名和有权限用户的权限(默认给匿名用户只读的权限,如果想拒绝匿名用户的访问,只需把read改成none即可),去掉password-db = passwd的注释从而允许使用passwd文件做用户校验,去掉authz-db=authz允许使用authz文件标准做权限分配,修改realm=My First Repository为自己期望的库标示,这样就完成了用户配置。接下来启动Subversion,命令行输入SVNService -install -d -r 库目录,从而将SVN封装成Windows服务,进而可以用Windows服务方式管理(可以在服务管理器中设置为自动运行),服务器搭建完成。本机访问svn://localhost/库目录试验是否成功。要向库中添加文件,可执行svn import 上传文件 svn://localhost/库目录 -m "initial import" --username username --password password即可上传文件到库中,导出命令为svn co svn://localhost/库目录 --username username --password password,也可简单一点,在服务端安装TortoiseSVN,从而集成到右键管理服务器文件。

客户端安装TortoiseSVN-1.6.12.20536,方便集成到右键管理文件,要使用时,先创建一个工作目录,在文件夹上右键选择SVN Checkout,在URL上填写svn://服务器IP/库目录,确定后便可将文件签出到本机,注意,SVN在签出文件前会将工作目录清空!默认是签出整个文件库,可以在地址后再加”/项目名来提取特定项目,若不记得项目名,可以右键Repo-browser查看库文件目录(类似CVSls命令)。要向库中添加文件,则右键Import即可,前提是要有权限。