之前安装过svn,今天在安装时,居然搞了半天,还是觉得有必要记录一下,主要是版本库中的配置文件
1.安装TortoiseSVN很简单,百度上一大把文章,不会的可以搜下,主要说下配置文件
2.svn安装好后,需要创建版本库,两种方式,第一种,手动创建,在需要的目录下创建一个文件夹,然后鼠标右键选择TortoiseSVN中的create repository here,会在文件夹下生成一些文件夹,conf,db,hooks,locks等,conf下有四个配置文件,后面会说怎么配置。第二种方式,在cmd上使用命令svnadmin create D:/svn/repository创建版本库,后面为创建的版本库。注:建立版本库的路径中的文件,文件名不能有空格,否则会建立不成功的。
3.配置用户和权限(设置配置时,等号前后需要有空格,否则会报错)
A.首先配置svnserve.conf
在D:/svn/repository/conf(这是我当时创建的版本库路径,具体根据自己实际创建的)打开svnserve.conf
[general]
anon-access = none //未验证用户无任何权限 ,如果这里不改,用户不用输入密码即可获得代码版本。
auth-access = write //已验证用户给予写权限
password-db = passwd //密码数据存放到passwd文件中
authz-db = authz //指定用户保存路径为authz文件,这个需要有,不然配置未验证用户无任何权限,无法连接svn服务器,报authentication failed错误,即无权限。启动服务器后需要,需重启服务器。
注:可以将上面的内容复制到svnserve.conf尾部,也可在svnserve.conf中,将上面项前面的#去掉即可,其中可以写成anon-access=read,表示无验证用户有读的权限。去掉#前面不能有空格,后面也不能有空格,否则会报错。修改svnserve.conf需要重启svn服务器。
B.配置passwd文件
原来配置:
[users]
#harry = harryssecret
#sally = sallyssecret
“=”号前面是用户名,后面是密码。
[users]
zhangsan = 123456 //账户 = 密码 (例如)
C.配置authz文件(权限文件)
需要配置两处,一个是组和用户的设置,另一个是版本库的目录格式配置以及权限分配。
a.组和用户配置。
(1)一个组group可以包含一个和多个用户,其中用户名必须在用户配置文件中已经定义。
(2)可以将指定具体组,比如开发组和运维组等。
b.版本库配置以及权限分配。
版本库目录格式为 :
[版本库:/项目/目录]
用户名 = 权限
@组名 = 权限
说明:
(1)权限,分为r,w,rw和空。空代表没有任何权限
(2)版本库目录多种写法,如果只写根/代表对这个项目以及下边所有目录都有权限,如果单独制定目录,可以加上具体目录名。
其中根是svn启动的时候我们指定的-r指定的版本库。
举例如下:
[/] 代表根目录下的资源都可以访问
[repo0:/] 代表对repo0所有版本库设置权限权限
[repo0:/21yunwei] 代表对repo0版本库下的21yunwei项目设置权限
[repo0:/21yunwei/demo] 代表对repo0版本库下的21yunwei项目的demo目录设置权限
21yunwei = r #代表admin对上面的目录(根目录下)的资源只有读权限
4.TortoiseSVN Repository Brower :url 中输入svn://127.0.0.1,再输入账户密码,也可访问。
5.自动启动svn服务器
cmd输入以下命令:
sc create SVNservice binpath= "D:/Program Files/TortoiseSVN/bin/svnserve.exe --service -r D:\svn\repository" displayname= "SVNservice" depend= Tcpip start= auto
解释:SVNservice 为服务的名称。所有的系统服务可以在dos下通过命令手动启动和停止。
启动:net start SVNservice 停止:net stop SVNservice
binpath为安装subversion的路径,可执行文件的路径。
D:\svn\repository为版本库的路径。
displayname= "SVNservice"为注册成的系统服务显示名称,注册成功后,可以在系统服务中找到这个名称。
depend= Tcpip为依赖Tcpip协议。
start= auto为注册成的系统服务启动类型为自动。
删除服务:sc delete SVNservice
6.svn报authentication failed错误,就是authz权限没配置对,或者是svnserve.conf文件修改了,没有重新启动。