由于公司需要建立源码版本库,最近一段时间一直和SVN打交道,在配置使用过程中,觉得有一些问题有必要记录下来,防止忘记。
根据大多数网友的推荐,我选择了Apache+Subversion+Tortoise这种模式,为了简便起见,我选择了Apache2.2+Subversion1.5.6的集成版本CollabNetSubversion-server-1.5.6-2.win32.exe,这应该是一个比较稳定版本搭配。
安装过程也很简单,只有在一处需要配置的地方注意一下:
两个都勾选
svnserve的配置,因为我们不使用该方式,所以配置可以略过。
Apache的配置,Host Port是需要设置一个端口(80端口一般是不能用的),而且不能和别的服务使用的端口冲突,不然Apache的服务就启动不起来;Repository Path是版本库的路径,一般我们会设为D:/SVN。
其他的一般不管,接着就默认下一步,直到安装完成。
现在可以开始创建版本库了,打开命令行窗口(DOS窗口),进入d:/svn目录输入
svnadmin create --fs-type fsfs proj1
完成后就在d:/svn/proj1创建了一个新的版本库
然后到Subversion的安装目录下修改Apache的配置文件(通常是C:/Program Files/SubversionServer/httpd/conf/httpd.conf),做出如下修改:
去掉以下几行的注释(删除 '#
'标记):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
再将以下两行添加到 LoadModule
节的末尾:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在最后面有如下几行:
DAV svn
SVNParentPath d:/SVN
修改为:
DAV svn
SVNListParentPath on
SVNParentPath D:/SVN
#SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Fujin Teleway's repositories"
AuthUserFile D:/SVN/passwd
AuthzSVNAccessFile D:/SVN/svnaccessfile
Require valid-user
SVNAutoversioning on
ModMimeUsePathInfo on
注意:为什么在
有了上面的修改,当然得建立两个重要的文件:passwd和svnaccessfile
创建passwd文件:打开命令行提示符(DOS窗口),进入CollabNetSubversion的安装目录中Apache的bin目录(我这里是C:/Program Files/SubversionServer/httpd/bin),通过输入下面的命令创建文件
htpasswd -c d:/svn/passwd
它将会创建名为passwd的文件用于认证。用下面的命令增加其它用户
htpasswd d:/svn/passwd
创建svnaccessfile文件:在d:/svn目录下新建一个txt文本文件,录入以下内容:
[groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark docs = bob, jane, mike training = zak # Default access rule for ALL repositories # Everyone can read, admins can write, Dan German is excluded. [/] * = r @admin = rw dangerman = # Allow developers complete access to their project repos [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # Give the doc people write access to all the docs folders [/trunk/doc] @docs = rw # Give trainees write access in the training repository only [TrainingRepos:/] @training = rw
然后把该txt文件改名为svnaccessfile,不需要扩展名。
现在可以在IE上输入http://IP:port/svn/访问根目录。
在TSVN客户端上输入http://IP:port/svn/Project访问你所建的项目了。