yum安装subversion

yum install subversion

查看安装版本

svnserve —version
image.png

查看安装位置

rpm -ql subversion

创建版本库

创建用于存放版本库的目录

mkdir -p /usr/local/svn

创建svn版本库

svnadmin create /usr/local/svn

创建完后,版本库目录下会生成一些文件,进入conf目录下。conf目录中authz文件是权限控制文件,passwd是帐号密码文件,svnserve.conf是SVN服务配置文件
image.png

创建用户

修改passwd文件,加入用户,格式就是“用户名 = 密码”,如: admin = 123
image.png

设置用户读写权限

修改authz文件,加入用户权限: 备注: 格式为 账户=权限 rw权限为读.写 , r权限为读

修改svnserver配置文件,启用以上用户和权限设置

svnserve.conf
anon-access = read #匿名用户可读 此项一般不推荐启用. 启用后会导致SVN checkout时不用输入用户密码
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm =My First Repository # 认证空间名,版本库所在目录

启动svn服务

svnserve -d -r /usr/local/svn
-r的作用是设置根目录路径,访问svn://x.x.x.x/就能直接到版本库内
svnserver默认端口是3690,需要配置防火墙端口和安全组

TortoiseSVN连接

image.png
image.png

注意事项:

通常启动SVN服务,仅指定SVN版本库的根目录,如下:
svnserve -d -r /usr/local/svn
然后在/usr/local/svn下创建多个版本库:
cd /usr/local/svn
svnadmin create repos1
svnadmin create repos2
这个时候需要再依次配置repos1和repos2等版本库下的conf/svnserve.conf、conf/passwd、conf/authz文件。
问题便来了,因为大多数的时候,同一个用户需要用相同的帐号和密码去访问不同的版本库,这时的权限配置就不好处理了,以前看其他人的解决方法是在svnserve.conf中指定passwd和authz的路径时用相对路径指到同一个文件。这是一个可行的方法,但新增版本库的时候,就得更改svnserve.conf文件,不方便。
svnserve -h
image.png
有一个—config-file参数,这个参数就是用来指定svnserve.conf路径的
只要在启动SVN服务的时候,指定—config-file参数,只要指定了此参数,所有的权限都由参数指定的svnserve.conf控制,而每个版本库conf目录下的svnserve.conf的配置都会忽略掉。
svnserve -d -r /usr/local/svn —config-file /usr/local/svn/conf/svnserve.conf

Authorization failed

出现authorization failed异常,一般都是authz文件里,用户组或者用户权限没有配置好,只要设置[/]就可以,代表根目录下所有的资源,如果要限定资源,可以加上子目录即可
image.png

客户端连接

创建版本库

右键 create folder
注意不要使用中文目录
svn add
svn commit
image.png
image.png

svn有两种存储方式:BDB和FSFS,目前用的最多的是FSFS方式,这种方式的话,一般是存储在\db\revs文件夹下,里面有一堆以版本号命名的文件,如:0、1、2、3、4……,那个就是了
image.png

服务启动问题

svnserve: E000098: Can’t bind server socket: Address already in use

解决办法一:

killall svnserve
svnserve -d -r /usr/local/svn —config-file /usr/local/svn/conf/svnserve.conf

解决方法二:

启动另一个端口:
svnserve -d -r /usr/local/svn-repo-test —listen-port 3691