到svn官方网站http://subversion.trigris.org/下载服务器安装包svn-win32-1.6.1.zip,将该压缩包解压到D:\subversion目录下,出现D:\subversion\bin。建立D:\svn,在命令行该目录(D:\subversion\bin\)下输入svnadmin create D:/svn/repos1,如果创建成功,D:\svn下将会多一个repos1目录。
2、 让svnservice服务随Windows系统一起启动,在命令行下输入:sc create svnservice binPath= "\"D:\subversion\bin\svnserve.exe\" --service -r D:\svn" start= auto
3、 权限配置:
在进行权限配置前,所有的用户都能进行任何操作,在很多情况下是不允许的。在创建仓库时,仓库目录(如:D:\svn\repos1)下都会生成好几个文件夹,其中conf里面存储的是配置信息,包括三个文件:
authz:访问权限配置
passwd:用户名和密码配置
svnserve.conf:基本配置信息
⑴先配置svnserve.conf,将里面几项配置前的注释去掉,最后的内容如下:
[general]
#anon-access = read
#auth-access = write
password-db = passwd
authz-db = authz
这些参数的含义文件里都有详细说明,其中,anon-access和auth-access分别是对匿名用户以及认证用户的访问控制,password- db指明用户密码文件路径,authz-db指明权限配置文件路径。另外还有一个参数realm用于指明仓库所属的认证域,默认情况下每个仓库位于不同的域(每个仓库有一个唯一的uuid),因此我们可以不设置该项,除非多个仓库需要共用同一份passwd配置。
⑵passwd文件的配置很简单,格式如下(等号前面为用户名,后面为密码):
[users]
#harry = 123
#sally = 123
sunxiaoyong = 11111111[A1]
⑶authz则可以创建用户组并精确配置某个用户或用户组对某个文件或目录的访问权限,下面是一个例子:
[groups]
#harry_and_sally = harry,sally
[/]
sunxiaoyong = rw
* = r[A2]
#[/project1]
#* =
#harry = rw
#sally = r
#[/project1/foo]
#sally =
#[/project2]
#@harry_and_sally = rw
#guest = r
文件内容其实很简单易懂,groups用于定义用户组,后面便是对资源的具体访问控制,/表示仓库根目录,*表示所有用户,用户组前面需加上@符号,r表示可读,w表示可写,等号右边为空则表示没有权限。注意对于目录结构,当用户访问某个资源时,SVN会先看有没有直接针对该资源的访问控制,如果没有找到,则会继承上一级目录的访问权限,如此递推。
补充再提一点,当我们有多个仓库时,我们会发现这些仓库的用户帐号在大多数情况下都是相同的,因此,我们可以将passwd文件放到公共的地方,然后将所有仓库的password-db配置都指向该文件。相应的,authz-db也可以共用一个文件,不过需要在配置具体的访问控制时指明所属的仓库,如下:
[/]
* = r
[repos1:/project1]
* = r
harry = rw
[repos2:/project1]
* = r
sally = rw
上述配置表明,所有人对所有仓库的根目录都有读权限,但只有harry对仓库repos1里的project1有读写权限,只有sally对仓库repos2里的project1有读写权限。