在Linux 搭建SVN服务

发布 : 2019-01-11 分类 : 版本控制 浏览 :

需要在Centos7系统搭建一个SVN服务用于管理代码
分为服务端和用户端

服务端

安装svnadmin

1
yum install subversion

查看svnadmin版本

1
svnadmin --version

创建版本库

1
2
mkdir /svn/
svnadmin create /svn/svnLearn

设置开机启动

1
systemctl enable svnserve

添加用户

需要进入conf目录(该svn版本库配置文件)

  • authz文件是权限控制文件

  • passwd是帐号密码文件

  • svnserve.conf SVN服务配置文件

  • 注意:3个配置文件 在配置前都是没有空格的 等号 = 前后有一个空格 一定要遵守这个规则,否则会报错

    1
    2
    cd /svn/svnLearn/conf
    vim passed

    在最后加上

    1
    2
    zhouinfo = 123456
    test=123456
  • 帐号=密码

为添加的用户设置权限

1
vim authz

在最后面添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[/]
zhouinfo=rw
test=r
* =

[svnLearn:/]
zhouinfo=rw
test=r
* =


[svnLearn:/src/conf/]
zhouinfo=r
* =

  • [/] 所有仓库 [svnLearn:/] 指定svnLearn仓库 [svnLearn:/src/conf/] 指定svnLearn仓库下某个路径 的权限
  • 用户名= r:读权限 w:写权限 空:为没有读写权限
  • zhouinfo用户就有这个仓库的读写权限了
  • test只有读权限
  • * 除开(zhouinfo和test)其他的用户和匿名用户 都没有读写权限

修改SVN服务配置文件

1
vim svnserve.conf
  • anon-access = read #匿名用户可读
  • anon-access = none #匿名用户不可读
  • auth-access = write #授权用户可写
  • password-db = passwd #使用哪个文件作为账号文件 ‘/svn/passwd’ 绝对路径
  • authz-db = authz #使用哪个文件作为权限文件 ‘/svn/authz’ 绝对路径
  • realm = /svn/svnLearn # 认证空间名,版本库所在目录 或者写仓库名称(相对位置) svnLearn
  • 当svn管理的多个仓库时 可以使用 password-db authz-db 指定文件 统一处理用户和权限

启动svn服务器

1
2
3
4
5
6
svnserve -d -r /svn

# 如果是使用了其他用户启动 并且 该用户 没有/svn 的读写权限 那么提交时就会权限报错
# 可以加 sodu 使用root权限执行

sudo svnserve -d -r /svn
  • -d 后台运行
  • -r 自定仓库路径

检查是否成功启动

1
ps -ef | grep 'svnserve'

SVN默认的打开端口是3690
可以用命令行查看

1
netstat -antp | grep svn

重启SVN服务

重启可以 kill 后在启动

1
2
3
4
5
6
7
8
查找对应pid
ps -ef |grep svn

杀掉进程
sudo kill -9 PID

运行
sudo svnserve -d -r /svn

防火墙

如果开启了防火墙就需要打开防火墙端口

firewall-cmd –permanent –zone=public –add-port=3690/tcp
firewall-cmd –reload

用户端

需要安装好svn
如果是用TotoiseSVN安装svn,那么在安装时需要注意勾选 svn 命令行工具

检出项目

安装好svn后
使用命令行就可以检出项目 也可以在任意的目录下右键检出

1
2
#svn checkout svn://118.24.75.xxx:3690/svnLearn --username zhouinfo --password 123456
svn checkout svn://zhouinfo.site:/svnLearn

提交更新

添加数据后提交
因为之前服务器上配置仓库的权限
可以匿名访问这个仓库 但不能提交数据所以需要加上用户名和密码进行提交
svn会记住密码以后就不需要加账号密码了

1
2
3
4
5
6
7
echo "test" > test.txt
#把文件加入到版本控制器中
svn add test.txt
#提交到svn服务器
svn commit -m "add test.txt" --username zhouinfo --password 123456
#从svn服务器更新下来
svn update

使用http访问svn

需要安装 httpdmod_dav_svn

yum install -y httpd mod_dav_svn

vim /etc/httpd/conf.d/subversion.conf

1
2
3
4
5
6
7
8
9
10
<Location /svn >
DAV svn
SVNListParentPath on
SVNParentPath /gzpykj/svn/repository
AuthType Basic
AuthName "yl.gzpykj.com svnversion"
AuthzSVNAccessFile /gzpykj/svn/authz
AuthUserFile /gzpykj/svn/password
Require valid-user
</Location>

修改httpd端口
vim /etc/httpd/conf/httpd.conf
Listen 3691

service httpd stop
service httpd status
service httpd start

本文作者 : zhouinfo
原文链接 : http://blog.zhouinfo.site/2019/01/11/%E5%9C%A8Linux-%E6%90%AD%E5%BB%BASVN%E6%9C%8D%E5%8A%A1/
版权声明 : 本博客所有文章除特别声明外,均采用 CC Apache License 2.0 许可协议。转载请注明出处!
留下足迹