hook代码 svn_利用SVN的钩子同步更新代码的方法详解

https://blog.csdn.net/y_server/article/details/56281409

利用SVN的钩子同步更新代码的方法详解

先普及一下小常识

SVN的钩子,即hook(在每个版本库下有hooks文件夹,里面有很多钩子程序,我的目录是/home/svn/fitness/hooks/)。在subversion执行一个操作时,就会相应的首先去调用相关的钩子程序。

我们在开发时都会建立测试环境,不需要每个人都Update到本地再测试。

基于SVN的这种特性,要想实现一个同步的测试服务器,我们只需要在用户执行完毕commit操作后,让钩子程序自动更新测试服务器的文件即可。

有了这样的思路,我们就开始建立post-commit的钩子吧

1、在网站的目录下,使用checkout命令建立一个副本

#svn co SVN_URL /var/www/mySite/

2、现在设置钩子,复制/home/svn/fitness/hooks/post-commit.temp文件为post-commit,并修改文件的权限#chmod

755 post-commit

3、编辑post-commit,把以下代码写入

#!/bin/sh

REPOS="$1"

REV="$2"

svn up /var/www/mySite/ --username=user1 --password=123456

大功告成,可以使用了

----------------------------

https://www.cnblogs.com/chenqionghe/p/4527763.html

实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现Linux下SVN自动更新web目录配置。

第一步:建立你的web程序目录

1

mkdir /var/www/html/test

进入你建立的web程序目录(svn

checkout可以简写为co)

1

2

svn checkout svn://localhost/svntest //不重命名文件夹,直接在当前目录下检出

svn checkout svn://localhost/svntest test //检出文件并且重命名文件夹

第二步:在项目库的 hooks/

目录下新建 post-commit 文件 【钩子脚本】

添加脚本内容如下

1

2

3

4

5

export LANG=en_US.UTF-8

SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件

WEB=/var/www/html/test #要更新的目录

$SVN update$WEB --username cqh --password 123456

chown -R

www:www$WEB

其中SVN=右边改成 svn

命令位置

WEB=右边改成你实际的web目录

第三步:让post-commit有执行的权限

1

chmod a+x post-commit

第四步:这里就已经完成了,第四步就是测试了。

说明:

export

LANG=en_US.UTF-8是为了解决svn post commit

中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为

1

svn: Can't convert string from native encoding to

'GBK'

/usr/bin/svn update

--username cqh --password 123456 /var/www/html/test

执行更新操作

如果提示:

1

post-commit hook failed (exit code 255) with no output

赋予post-commit文件可执行权限

如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交

--------------------------------

https://blog.csdn.net/arbben/article/details/79737503

----------------------

一,安装svn

安装很简单,采用的是yum安装。

yum install subversion // yum方式安装SVN

二,创建svn库和项目

mkdir -p /var/svn 创建svn库

svnadmin create /var/svn/project2 //传教project2项目 svn库文件有

conf,db,format,hookes,locks,README.txt

conf:配置文件 hooks:钩子文件夹

三,修改conf文件里的配置文件

1)修改authz文件

2.png

注意:admin = rw 待办 admin 拥有该项目下的所有权限 ,* = 代表除了admin 禁止其他账号访问

2)修改passwd文件

4.png

添加 admin 密码为123456

3)修改svnserve.conf

5.png

注意:realm = /var/svn/project2 项目路径

四,配置钩子文件,用于将上传的文件更新到网站目录

cd /test/svn/hooks

cp post-commit.tmpl post-commit

vi post-commit

输入

export LANG=en_US.UTF-8

SVN_PATH=/usr/bin

WEB_PATH=/usr/local/nginx/html

这里是设置的网站目录,我们以之前安装的nginx下的默认根目录

SVN_USER=user 设置的svn用户名

SVN_PASS=111111 密码

LOG_PATH=/tmp/svn.log

echo date "+%Y-%m-%d %H:%M:%S" >>

$LOG_PATH

echo whoami,$REPOS,$REV >> $LOG_PATH

$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password

$SVN_PASS --no-auth-cache >> $LOG_PATH

6.png

五,给post-commit 添加可执行权限

chmod a+x post-commit

六,如果有防火墙设置,则添加防火墙(默认3690端口)

firewall-cmd --zone=pulic --add-post=3690/tcp --permanent

七,开启svn

systemctl start svnserve

八,然后我们进入网站目录,先用账号检出下,按图示操作

cd /var/www/

svn checkout svn://ip地址/project2

先输入root密码, 在输入svn账户 , 在输入svn密码, yes 保存密码

7.png

作者:一梦三四年lyp

链接:https://www.jianshu.com/p/10325aaa9e6d

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值