基本上从来都是自己写代码,没有和其他人共同开发过,不免也是一个遗憾,少了互相学习的机会。但是在一个人的代码开发过程中,版本管理也是十分重要和必要的,从前一直用VSS,现在都到了并行时代,CPU都已经4核了,版本管理也不能停留在VSS的单一状态了,花了点时间学习了一下当下比较流行的SVN,有点收获,不过短时间的学习太肤浅了,只能把粗略的了解记录下来,以后再来回望。
我想说说这几天看的3个可以用来配置SVN的软件,Tortoisesvn、Subversion和Apache。
Tortoisesvn本身是一个svn客户端,由于其可以通过file://协议访问svn库,所以实际上可以不在需要svn服务器就能实现版本管理。但是通过file://协议无法实现根据用户进行代码管理,也无法配置用户权限管理。
Subversion本身是一个svn服务器,以svn://协议访问,安装了Subversion之后,使用Tortoisesvn即可更方便实现版本管理,并且可以根据用户进行代码管理和用户权限配置。
为了版本库可以在网络上使用http://协议访问,并且也实现根据用户进行代码管理和用户权限配置,可以把Subversion整合到Apache上,就进一步扩展了svn的使用面。
Tortoisesvn的使用就不多说了,coder我想主要接触的就是这个东东,我自己也是刚上手,一起慢慢学习吧。接下想来说说Subversion服务器的配置和Subversion与Apache整合的方法。
1.Subversion的配置
直接安装Subversion,安装后系统变量path中会添加Subversion的bin文件夹,因此可以直接使用Subversion的bin文件夹下的命令,常用命令包括:
svnadmin create e:\svnroot\proj表示在创建e盘svnroot文件夹下的proj文件夹(需要保证svnroot首先存在),并在其中自动创建版本库必须的文件,也就是在e盘svnroot下创建了proj版本库。这个过程也可以用Tortoisesvn右键菜单创建。版本库创建以后,修改其中conf文件夹下的相关文件,即可完成用户和用户权限配置,特别要注意authz文件不以#开头的行都要顶格写,不能留空格,否则会出错,此处passwd文件中的用户名和密码用=隔开,并且密码是明码。
svnserve -d -r e:\svnroot表示临时启动Subversion服务,启动后cmd窗口不能关闭。服务启动后,即可通过svn://协议对版本库进行访问,例如svn://localhost/proj。如果启动服务时root路径设置到了版本库,即svnserve -d -r e:\svnroot\proj,那么通过svn://localhost就直接访问版本库了。如果不想每次都临时启动svn服务,可以把其注册成一个windows服务,注册方法见网上搜搜吧。
通过这样的配置,结合上Tortoisesvn即可通过svn协议进行版本管理了。
2.Subversion整合到Apache
Subversion整合到Apache的方法要复杂一些,但是整合以后只要启动Apache就可以直接提供svn服务,并且可以通过浏览器http访问,不需要单独再启动Subversion服务。
首先先安装Apache,再安装Subversion。安装完成后将Subversion的bin文件夹下的mod_authz_svn.so和mod_dav_svn.so文件复制到Apache的modules文件夹下,再打开apache安装目录下的conf文件夹,打开httpd.conf文件.取消如下两行开头的#号,
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
然后增加如下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
然后在Apache的httpd.conf最后增加虚拟路径,把svnroot作为虚拟路径
<Location /svn>
DAV svn
SVNParentPath E:\svnroot
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "E:\svnroot\proj\conf\passwd"
AuthzSVNAccessFile E:\svnroot\proj\conf\authz"
Require valid-user
</Location>
这样设置以后,可以通过http://localhost/svn就访问到E:\svnroot。注意此处的passwd文件需要通过Apache的bin目录下的htpasswd.exe创建,因为Apache的用户配置时采用:分割用户名和密码,并且默认时密码采用md5加密。命令格式如下
htpasswd -c "E:\svnroot\proj\conf\passwd" username (此命令为创建passwd文件,test为用户名)
passwd文件创建后,就用-m命令来添加用户了,更改用户的密码也用此命令
htpasswd -m "E:\svnroot\proj\conf\passwd" username
htpasswd –D passwd svntest为删除用户(此处命令用大写的D)
authz文件的设置和单独使用Subversion时相同。通过这些设置就完成了Subversion与Apache的整合,