一、准备工作:配置固定IP
命令行下输入ipconfig /all,记下ip ,submask ,gateway 和dns,再在相应网卡的tcp/ip协议里输入就行了。
二、建立版本库(Repository)
svnadmin create F:\svn\
你会看到该目录下新建了一堆文件和文件夹。
删除版本库的做法是:直接到Repository目录下删除相应的版本库文件夹
三、启动SVN服务
1.svnserve --daemon --root F:\svn
如果你是在cmd窗口运行的,注意不要关闭该窗口,否则svnserve也被关闭了。
在客户端访问subversion版本库时出现这个错误:
svnserve.conf:12: Option expected
原因:subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,去掉前面的空格
2.指定配置文件方式启动:
svnserve -d -r
/data/svn
--config-
file
=
/data/svn/svnserve
.conf
注:后面的参数,–config-file=/data/svn/svnserve.conf是告诉svn服务,调用/data/svn目录下的svn配置文件,用来统一管理/data/svn目录下创建的子svn版本,统一使用配置文件中的用户信息、权限信息来管理各版本库。
四、svn配置文件详解
版本库conf文件夹下有三个配置文件svnserve.conf、passwd、authz
1. svnserve.conf,该文件仅由一个[general]配置段组成。
[general]配置段中配置行格式如下:
<配置项> = <值>
配置项分为以下5项:
anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。
即"write"为可读可写,"read"为只读,"none"表示无访问权限。
缺省值:read
auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。
即"write"为可读可写,"read"为只读,"none"表示无访问权限。
缺省值:write
password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf
目录的相对路径。
缺省值:passwd
authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
缺省值:authz
realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的
认证域相同,建议使用相同的用户名口令数据文件。
缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
注:版本库认证域
在使用svn客户端访问svnserve服务器时,若需要用户登录,则提示信息如下:
[[email protected] root]# svn list svn://192.168.3.45/test
Authentication realm: <svn://192.168.3.45:3690> 0d545a49-4038-0410-99b4-c66dc73f754e
Password for ‘root‘:
在上述第2行"Authentication realm: <svn://192.168.3.45:3690>"之后显示的字符串为认证域名称。如果在配置文件中为设定认证域,就会提示一个UUID,如上述所示。
如果在配置文件中指定了如下配置项:
realm = test
将在svn客户端提示如下:
[[email protected] root]# svn list svn://192.168.3.45/test
Authentication realm: <svn://192.168.3.45:3690> test
Password for ‘root‘:
例1:svn服务配置文件conf/svnserve.conf的内容如下:
[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz
realm = test
上述配置文件设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为相对版本库conf目录的文件"../../conf/passwd";权限配置文件为相对版本库conf目录的文件"../../conf/authz";版本库的认证域为"test"。
2. 权限配置文件authz
权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。
[groups]配置段中配置行格式如下:
<用户组> = <用户列表>
用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"(如:引用用户组"all"要使用字符串"@all")。
版本库路径权限段的段名格式如下:
[<版本库名>:<路径>]
如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为"[/tmp]"的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录"/tmp"的访问权限。
版本库路径权限段中配置行格式有如下三种:
<用户名> = <权限>
<用户组> = <权限>
* = <权限>
其中,"*"表示任何用户;权限的取值范围为‘‘、‘r‘和‘rw‘,‘‘表示对该版本库路径无任何权限,‘r‘表示具有只读权限,‘rw‘表示有读写权限。
注意:每行配置只能配置单个用户或用户组。
例3:权限配置文件conf/authz的内容如下:
[groups]
g_admin = admin,thinker
[admintools:/]
@g_admin = rw
* =
[test:/home/thinker]
thinker = rw
* = r
在上述配置文件中,定义了一个用户组"g_admin",该用户组包含用户"admin"和"thinker"。然后定义了2个版本库路径权限段。其中,版本库"admintools"只有用户组"g_admin"可读写,其他用户无任何权限;版本库"test"中路径"/home/thinker"只有用户"thinker"有读写权限,其他用户只有可读权限。
四、如何运行多个版本库
大概思路如下:
在server端,新建一个目录用来存放所有的仓库。比如c:\svnrepos。然后在这个目录下建立两个独立版本库
svnadmin create "c:\svnrepos\rolex"
svnadmin create "c:\svnrepos\omega"
使用 svnserve -d -r "c:\svnrepos" 启动,这样你的项目的url是:
svn://IP/rolex
svn://IP/omega
详细设置见参考文章:
使用svn运行多个版本库
windows下架设SVN服务器并设置开机启动
http://www.cnblogs.com/jinmingjie/archive/2012/06/05/2536995.html