分类: WINDOWS
2009-07-21 13:42:07
由于公司需要建立源码版本库,最近一段时间一直和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,不需要扩展名。