安装svn
[root@localhost ~]# yum install subversion
查看是否安装安装成功
[root@localhost ~]# svnserve --version
基础配置
创建一个空文件夹,例如 svn,作为所有版本库的根目录
[root@localhost ~]# mkdir -p /svn/
进入svn目录,创建版本库,比如 repo
[root@localhost ~]# cd /svn/
[root@localhost svn]# svnadmin create --fs-type fsfs repo
# 查看repo目录文件
[root@localhost svn]# cd repo/
[root@localhost repo]# ls
conf db format hooks locks README.txt
[root@localhost repo]# cd conf/
[root@localhost conf]# ls
authz passwd svnserve.conf
文件说明:
1、svnserve.conf文件
该文件用于控制svnserve守护进程(svnserve daemon)的配置,以便访问svn版本库。如果仅是通过http://或者file:URLs方式访问版本库,则与该文件配置不起作用。
[general]结点
anon-access(匿名访问)和auth-access(认证访问)选项,分别用于控制未认证用户和与认证用户对svn版本库的访问,其可选值包含 write,read,none,如果设置为none则无对版本库的读写访问权限;设置为write则有可读可写权限;设置为read则只有读权限。
password-db用于控制密码数据库文件的位置,除非指定了一个带符号‘/’ 的路径,否则文件的位置为包含该配置文件的相对路径,如果开启了SASL,则该文件配置不起作用。
authz-db选项控制基于路径访问控制的认证规则的位置。除非指定了带‘/’的路径,否则该文件位置为包含该配置文件的相对位置。如果不指定authz-db,则没有基于路径的访问控制。
realm 选项指定了版本库的认证域(authentication realm)。如果两个版本库有同样的认认证域(authentication realm),他们应该有相同的密码数据库,反之亦然。缺省的 realm为版本库的uuid
force-username-case 选项,在authz-db文件配置的规则下,让svnserve比较用户名之前,规范化用户名大小写(case-normalize)。合法值有 lowser 转小写;upper转大写;none采用默认的,不进行大小写转化。
[sasl]结点
用于指定是否为认证使用 Cyrus SASL类库。默认的false。如果svnserve不带Cyrus SASL支持编译的,那么该小节会被忽略。运行'svnserve --version,查找如下行'Cyrus SASL authentication is available.'则表示支持。
该选项指定了想让SASL提供的安全级别,0表示加密,1表示仅集成检查,大于1的的值是和用于加密的有效密匙长度相关的。 (e.g. 128 代表 128-bit加密). 默认值如下
# min-encryption = 0
# max-encryption = 256
2、password文件
该文件为svnserve密码文件实例,每行代表一个svn用户账户
[users]
用户名1 = 用户密码1
用户名2 = 用户密码2
……
用户名n = 用户密码n
3、authz文件
该文件为svnserve认证实例文件,定义路径和版本库(可选)的认证
其中每一行记录可能代表
1)单个用户
2)定义的一组用户([groups]节点中定义的
3)定义的一个别名([aliases]节点中定义的
4)使用$authenticated token的所有认证用户
5)仅使用$anonymous token的匿名用户
6)* 任何人
[aliases]
暂时只知道是设置别名,但是具体是怎么定义的,不是很清楚,先不管吧
[groups]
自定义分组名1 = 用户1,用户2,……
自定义分组名2 = 用户3,用户4,……
……
自定义分组名n = 用户n1,用户n2,……
说明:用户名之间用英文逗号分隔
[repository_name:dir_path]
用户名1 = 权限1
用户名2 = 权限2
……
用户名n = 权限n
@自定义分组名1 = 权限1
@自定义分组名2 = 权限2
……
@自定义分组名n = 权限n
&别名1 = 权限1
&别名2 = 权限2
……
&别名n = 权限n
* = 权限
[dir_path]
用户名1 = 权限1
用户名2 = 权限2
……
用户名n = 权限n
@自定义分组名1 = 权限1
@自定义分组名2 = 权限2
……
@自定义分组名n = 权限n
&别名1 = 权限1
&别名2 = 权限2
……
&别名n = 权限n
* = 权限
说明:
1) [repository_name:dir_path]表示名为repository_name的版本库的dir_path目录,比如 [repo:/]表示repo版本的库的根目录
举例:
svn版本库目录结构为:/svn/repo,,其中/svn为所有版本库的根,repo为其中一个版本库名称,启动方式:svnserve -d -r /svn/,
那么可以如下设置
[repo:/] /代表 /svn/
[repo:/test1]
[repo:/test1/test2]
如果只有一个版本库,等效做法如下
[/]
[/test1]
[/test1/test2]
其中,test1,test2都是通过svn客户端创建的目录
3) 权限可为r、w、rw,分别代表只可读,只可写,可读可写,这里r、w、rw只针对dir_path最后层级的目录生效
例:
[repo:/test1/test2]
shouke = rw
那么svn:192.168.1.103/test1 进行访问,会提示认证失败
4) 别名,用户名,自定义分组不分先后顺序
5) * = 权限,如果无任何权限则不填写,直接 * = ,这里,*表示除了指定的用户,自定义分组,别名之外的任何人
修改svnserve.conf配置
[root@localhost conf]# vi svnserve.conf
[root@localhost conf]# useradd shouke
[root@localhost conf]# passwd shouke
[root@localhost conf]# vi passwd
[root@localhost conf]# vi authz
修改authz配置文件
[root@localhost conf]# vim authz
……(略)
找到如下内容
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
在其下新增一行内容,如下
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
group1 = shouke
找到如下内容
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
在其下新增内容,如下
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[repo:/]
@group1 = rw
启动SVN
[root@localhost conf]# svnserve -d -r /svn/
说明:-d 表示以daemon的方式运行,-r dir_path 表示把dir_path当作版本库的根目录,比如/svn/repo,svn://192.168.1.103/repo,访问的就是/svn/repo
查看
[root@localhost conf]# netstat -antp | grep svn
安装学习来自于https://www.linuxidc.com/Linux/2016-12/138636.htm
接下来是eclipse安装svn, 由于最新eclipse没有svn, 所以得手动加载进来。
学习来自https://www.linuxidc.com/Linux/2016-12/138636.htm
成功连接。