Linux搭建svn并使用hooks同步到测试服务器

本文介绍了如何在Linux上使用yum安装Subversion(SVN),配置用户权限,以及设置SVN hooks来实现实时同步到测试服务器。通过详细步骤展示了SVN的权限管理,包括创建用户权限、配置服务文件,并提供了Windows端的检出测试。此外,还讲解了如何利用hooks功能实现本地提交直接更新到测试服务器。
摘要由CSDN通过智能技术生成

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。

SVN相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。

虽然现阶段git普遍流行,但是svn还是对于权限的控制,和并不需要分布式的公司与团体还是非常好用的。
下面介绍使用yum 来安装svn

[root@lgy home]# yum install subversion
创建svn的库
[root@lgy home]# mkdir -p svn/php
[root@lgy home]# ls
liu  svn  www
[root@lgy home]# cd svn/
[root@lgy svn]# ls
php
初始化 创建svn的配置文件
[root@lgy svn]# svnadmin create /home/svn/php
[root@lgy svn]# ls 
php
[root@lgy svn]# cd php/
查看svn的配置文件
[root@lgy php]# ls
conf  db  format  hooks  locks  README.txt
[root@lgy php]# cd conf/
[root@lgy conf]# ls
authz  passwd  svnserve.conf

创建用户权限 [/] 为当前库权限 [/tech/php]为库下文件夹权限
*= 表示除配置人外都没有权限
也可以使用groups 用户组权限 我没操作 可以百度一下

[root@lgy conf]# vim authz

这里写图片描述

设置密码
[root@lgy conf]# vim passwd 

这里写图片描述

配置服务文件

[root@lgy conf]# vim svnserve.conf 

这里写图片描述
打开
anon-access = read修改成none确保位配置的人都无法读
auth-access =write
password-db =passwd
authz-db = authz
realm = php//这个是写库的名字 也可以不去掉注释
注意:这几项一定要顶格写 前面不能有控制 否则会出错

启动svn服务器
[root@lgy conf]# svnserve -d -r /home/svn
关闭svn服务器
[root@lgy conf]# killall svnserve

windows端测试一下
右键选择检出
这里写图片描述
填写用户名 密码 就是我们在passwd里面设置的
这里写图片描述
好检出成功
这里写图片描述

可以在版本库里面分成多个文件夹 在authz权限设置里面设置权限
比如 我的库为php 我要控制php库下面的 /tech/app文件夹权限

# vim authz
在里面增加
[/tech/app]
zhangsan = rw
*=

这样除了根目录管理员 和张三 其他人都不能操作。

继续介绍svn的hooks 钩子功能。
如果我们想本地svn直接提交到测试服务器就可以直接测试,那么我们就需要svn的hooks钩子功能,很简单。下面来看实现

[root@lgy php]# cd /home/svn/php
[root@lgy php]# ls
conf  db  format  hooks  locks  README.txt
[root@lgy php]# cd hooks
[root@lgy hooks]# ls
//出现下列文件
post-unlock.tmpl         pre-unlock.tmpl    post-commit.tmpl          pre-commit.tmpl          start-commit.tmpl  post-lock.tmpl            pre-lock.tmpl            post-revprop-change.tmpl  pre-revprop-change.tmpl
[root@lgy hooks]# cp post-commit.tmpl post-commit
[root@lgy hooks] vim post-commit

填写如下图

看我以前总监写的是 
$SVN_PATH update svn://127.0.0.1/php/tech/php $DEV_PATH --username webser --password 123456 --no-auth-cache 但是我写成这样报错为svn://127.0.0.1不是本地路径 于是我去掉了。发现可以跟shell一样运行,也没有问题

这里写图片描述
填好后我们测试一下

[root@lgy hooks] ./post-commit

成功
这里写图片描述
在本地用SVN 上传个文件试一下。
发现目标目录下有则成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值