subversion配置记录

  

服务器

CentOS 7

安装svn

[root@localhost conf]# yum install -y subversion

  

建立仓库

[root@localhost conf]# mkdir /svn
[root@localhost conf]# svnadmin create /svn/repo

  

查看

[root@localhost svn]# ls /svn
repo  runservice.sh
[root@localhost svn]# ls /svn/repo
conf  conf-20200410-bak.zip  db  format  hooks  locks  README.txt
[root@localhost svn]# ls /svn/repo/conf
authz  passwd  svnserve.conf
[root@localhost svn]#

  

配置

主要是修改/svn/repo/conf目录下的三个文件

1、修改svnserve.conf

只要去掉里面关键5行的注释即可,参见下图。

2、修改passwd

在“[users]”下面逐行添加用户名和密码即可。

[users]
zhangsan = 123456
lisi = 123456
wangwu = 123456

  

3、修改authz

# 这里表示添加用户组
[groups]
admin = zhangsan
sw_team = lisi,zhangsan
hw_team = wangwu
#上面添加了admin,sw_team,hw_team三个组


# 这里根据目录来限制用户权限
# “[/]”表示仓库的根目录
[/]
@admin = rw
* =
# 上面 “@admin” 表示用户组具有读写权限
# 上面 “*”表示出去已经列明的用户、组之外的人员不具备任何权限


# 这里根据具体的目录进行权限限制
[/project1/bootload]
@admin = rw
wangwu = r
* =
# 上面用"@"开头的表示用户,否则表示用户

  

4、启动SVN服务

[root@localhost conf]# svnserve -d -r /svn/repo

  

5、客户端访问SVN仓库

如果是管理员用户,按照上面的配置可以直接访问仓库根目录,那么直接访问“svn://192.168.1.114”就可以。

如果不是管理员,只能按照权限访问,按照上面的配置,比如“wangwu”可以访问“svn://192.168.1.114/project1/bootload”下的内容,但是他无法访问“svn://192.168.1.114/project1”这个目录。

开机自启动

如果你试图在“/etc/rc.d/rc.local”中添加脚本进行启动,是无法实现的。我们需要创建 systemd service 来启动服务。

先查看“/lib/systemd/system/svnserve.service”中的内容:

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS

[Install]
WantedBy=multi-user.target

里面的“ExecStart”表示启动SVN服务,最后的“$OPTIONS”就是对应的启动参数。

我们前面手动启动时,输入的是“svnserve -d -r /svn/repo”,对照一看,这个OPTIONS就应该是“-d -r /svn/repo”这些。

那在哪里添加这个参数?

看上面一行“EnvironmentFile”定义的地方,我们打开看看

# OPTIONS is used to pass command-line arguments to svnserve.
# 
# Specify the repository location in -r parameter:
OPTIONS="-r /var/svn"

第一行明确说了是svnserve的参数,那么我们修改成我们自己的仓库地址就行了。

然后在命令行使能服务

[root@localhost ~]# systemctl enable svnserve.service
Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.
[root@localhost ~]# ps aux | grep svn
root      3929  0.0  0.1 112724   988 pts/0    S+   10:30   0:00 grep --color=auto svn
[root@localhost ~]# shutdown -r now

重启之后,我们查看一下是不是真的启动了。

[C:~]$ ssh root@192.168.1.110


Connecting to 192.168.1.110:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Fri Apr 10 10:17:40 2020 from 192.168.1.95
[root@localhost ~]# ps aux | grep svn
root      3635  0.0  0.1 185116  1228 ?        Ss   10:31   0:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -d -r /svn/repo
root      3900  0.0  0.1 112724   988 pts/0    S+   10:31   0:00 grep --color=auto svn
[root@localhost ~]#

问题

昨天在创建一个tag的时候,提示说“Unreadable path encountered; access denied”,网上查找了以下,在https://www.cnblogs.com/you-jia/p/4549350.html中提到说是“在项目的conf/svnserve.conf 中, 设置 anon-access = none 即可. 然后重启Subversion 服务.”

照着做了,果然可以,特此记录。

<完>

如果转载,请注明出处。https://www.cnblogs.com/ssdq/
原文地址:https://www.cnblogs.com/ssdq/p/12669294.html