linux下SVN安装笔记

《linux下SVN安装笔记》

安装

# 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
点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注