安装
# yum list --enablerepo=remi | grep subversion //查看包
# dnf module list subversion //centos8
# yum install subversion //安装
# dnf module install subversion //centos8
# svnserve --version //查看版本
建立版本库
//subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置。
//根目录!! 多个版本库是放在根目录下!!
# vi /etc/sysconfig/svnserve
----------------------
#OPTIONS="-r /var/svn"
----------------------
使用svnadmin建立多个版本库svntest
# mkdir -p /var/svn //递归创建多个目录
# svnadmin create /var/svn/www.xxx1.cn
# svnadmin create /var/svn/test.xxx2.cn
# svnadmin create /var/svn/h5.xxx3.com
# svnadmin create /var/svn/test.xxx4.com
# svnadmin create /var/svn/www.xxx5.com
# svnadmin create /var/svn/collect.xxx6.com
查看目录中内容
# ll /var/svn/www.aibaohao.cn
drwxr-xr-x. 2 root root 51 May 10 14:42 conf
drwxr-sr-x. 6 root root 4096 May 10 14:42 db
-r--r--r--. 1 root root 2 May 10 14:42 format
drwxr-xr-x. 2 root root 4096 May 10 14:42 hooks
drwxr-xr-x. 2 root root 39 May 10 14:42 locks
-rw-r--r--. 1 root root 229 May 10 14:42 README.txt
添加用户
将其中一个仓库下的passwd和authz文件复制到 根目录!! 下面,并且设置密码和权限:
#/var/svn/passwd
#/var/svn/authz
//编辑用户文件passwd,新增两个用户:admin和user。
# vi conf/passwd
[users]
admin = xxx
weiguo = xxx
user1 = xxx
对用户进行分组,用户权限设置
//编辑权限文件authz,
# vi conf/authz
#对用户进行分组 , 然后设置组具有的权限
[groups]
admin = admin1,admin2
develop = user1,user2,user3
#表示对所有版本库都有权限
[/]
admin = rw
user1 = r
#表示根目录(/var/svn/www/www.xxx.cn),www.xxx.cn: 对应前面配置的realm =www.xxx.cn 最高权限
[www.xxx.cn:/]
@admin = rw
#* =
#* = 表示其他用户都不许访问组目录根允许匿名要用这个;
#表示只对当根目录下的api目录有效
[www.xxx.cn:/api]
@develop = rw
[test.xxx.cn:/]
@admin = rw
@develop = rw
对当前版本库(/var/svn/www/www.xxx.cn)进行配置
# cd /var/svn/www/www.xxx.cn
# vi ./conf/svnserve.conf
[general]
anon-access = none #匿名用户可读
auth-access = write #授权用户权限
password-db = /var/svn/passwd #使用哪个文件作为账号文件 指定为根目录下的文件
authz-db = /var/svn/authz #使用哪个文件作为权限文件 指定为根目录下的文件
#realm = /var/svn/www #认证空间名,版本库所在目录 可不认证
服务器相关的命令
# service svnserve status
# service svnserve restart
# systemctl enable svnserve.service 开机启动
配置防火墙端口
查看所有打开的端口:
# firewall-cmd --list-all
subversion的默认端口为3690,如果没有打开会报错:
# firewall-cmd --permanent --zone=public --add-port=3690/tcp
# firewall-cmd --reload
删除
# firewall-cmd --permanent --zone= public --remove-port=80/tcp
钩挂文件 同步文件
//假设目录在/usr/share/nginx/html/tpshop01
//将文件检出到目录内,并尝试手动更新,检出操作:
# svn co svn://127.0.0.1/test.xxx.cn/ /usr/share/nginx/html/test.tpshop --username admin --password 'xxx'
# svn co svn://127.0.0.1/test.xxx.com/ /usr/share/nginx/html/test.xxx.com --username admin --password 'xxx'
# svn checkout svn://127.0.0.1/www.xxx.cn/ /usr/share/nginx/html/tpshop --username admin --password 'xxx'
# svn co svn://127.0.0.1/test.xxx.com/ /usr/share/nginx/html/test.xxx.com --username admin --password 'xxx'
# svn co svn://127.0.0.1/policy-headline/ /usr/share/nginx/html/policy-headline --username admin --password 'xxx'
# svn co svn://127.0.0.1/h5.xxx.com/ /usr/share/nginx/html/h5.xxx.com --username admin --password 'xxx'
# svn co svn://127.0.0.1/collect.xxx.com/ /usr/share/nginx/html/collect.xxx.com --username admin --password 'xxx'
更新操作
# svn up /usr/share/nginx/html/test.tpshop --username admin --password 'xxx'
# svn update /usr/share/nginx/html/tpshop --username admin --password 'xxx'
# svn up /usr/share/nginx/html/policy-headline --username admin --password 'xxx'
查看最后提交的版本信息
# svn info
清扫操作
# svn cleanup /usr/share/nginx/html/tpshop_20181116
钩挂目录
# cd /var/svn/www/test.xxx.cn/hooks/
# cp post-commit.tmpl post-commit
清空文件内的所有内容:
# vi post-commit
输入以下内容:
----------------------------------
#!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn cleanup /usr/share/nginx/html/tpshop
/usr/bin/svn update /usr/share/nginx/html/tpshop --username admin --password xxx
----------------------------------
//即将完成 --最后一步,修改权限:
# chmod +x post-commit
# chmod 755 post-commit
测试钩挂是否成功
# svn update /usr/share/nginx/html/test.tpshop --username admin --password xxx