配置SVN的hooks功能自动更新代码


前言解读

用过SVN的小伙伴们,都应该知道hooks(钩子)这个功能,的确日常企业内部测试环境经常会用过这个“特殊”的功能,今天来聊一聊SVN hooks

为何而用?

传统的WEB网站代码发布基本依靠手工操作

大概的整个流程如下:

开发本地环境开发代码

提交SVN版本库

然后将本地环境代码使用工具上传至待发布目录

备份原WEB站点代码目录

发布新代码至WEB目录

基于这类重复操作的问题,为了提高效率,因此,引入了SVN hooks功能

配置SVN hooks

SVN安装这里就不赘述了,需要了解可参考以前的文章(如下链接)

http://blog.51cto.com/13505030/2089531

安装完成,开始配置hooks功能

[[email protected] ~]#cd /svndata/doc/hooks

[[email protected] hooks]#ll

total 40

-rw-r--r-- 1 root root 1977 Jun  8 23:50 post-commit.tmpl

-rw-r--r-- 1 root root 1638 Jun  8 23:50 post-lock.tmpl

-rw-r--r-- 1 root root 2289 Jun  8 23:50 post-revprop-change.tmpl

-rw-r--r-- 1 root root 1567 Jun  8 23:50 post-unlock.tmpl

-rw-r--r-- 1 root root 3426 Jun  8 23:50 pre-commit.tmpl

-rw-r--r-- 1 root root 2410 Jun  8 23:50 pre-lock.tmpl

-rw-r--r-- 1 root root 2786 Jun  8 23:50 pre-revprop-change.tmpl

-rw-r--r-- 1 root root 2100 Jun  8 23:50 pre-unlock.tmpl

-rw-r--r-- 1 root root 2780 Jun  8 23:50 start-commit.tmpl

备份下配置文件

[[email protected] hooks]#cp post-commit.tmpl post-commit

[[email protected] hooks]#chmod +x post-commit

修改post-commit配置文件

[[email protected] hooks]# vim post-commit

#!/bin/sh

REPOS="$1"

REV="$2"

export LC_CTYPE="en_US.UTF-8"

export LC_ALL=

LOCALPATH="/svncode/test/"

WEBPATH=/usr/local/apache-tomcat-8.5.9/webapps/

DATE=`date +%F`

SVN=/usr/bin/svn

[ ! -d ${LOCALPATH} ] && mkdir ${LOCALPATH} -p

##update code

$SVN update ${LOCALPATH} --username=test --password=test123

#backup web dir

cd /usr/local/apache-tomcat-8.5.9/webapps/

mv test test.${DATE}

##update code and restart Tomcat service

ln -s $LOCALPATH  $WEBPATH

cd /usr/local/apache-tomcat-8.5.9/bin/

./shutdown.sh

sleep 2

./startup.sh

备注:SVN服务器与WEB在同一台服务器上,如果分开,配置是需要有所变化的,以上配置供参考,但方法与步骤相同

测试访问

首先我们在WEB站点目录下更新下当前的代码,这个更新的动作相当于将SVN的代码目录在WEB目录下复制了一个“副本”

svn co svn://192.168.4.254:/doc/test /svncode/test/ --username=test01 --password=test123

[[email protected] test]# pwd

/usr/local/apache-tomcat-8.5.9/webapps/test

[[email protected] test]# ll

total 216

-rw-r--r-- 1 root root   1241 Jun 11 04:06 index.html

-rw-r--r-- 1 root root 142943 Jun 10 20:12 server.jpg

-rw-r--r-- 1 root root  68533 Jun 10 20:12 u.jpg

打开浏览器测试访问

接下来模拟开发修改相关代码文件,重新提交了代码至SVN版本库

重新打开浏览器测试访问页面是否更新?

代码自动更新至WEB目录完成

原文地址:http://blog.51cto.com/13505030/2089532

时间: 2024-10-12 06:20:23

配置SVN的hooks功能自动更新代码的相关文章

centos7配置svn钩子hooks脚本自动同步代码到项目目录

由于项目需要,svn提交后的代码希望再测试服务器上测试,每次提交后还要手动去svn update一次 十分麻烦,配置好svn钩子以后就省去了这些麻烦. 进入svn版本库目录找到hooks目录找到文件post-commit.tmpl 复制出一个命名为post-commit的文件,并修改权限为可执行权限 命令如下: cd /var/data/svndata/myproject/hooks cp post-commit.tmpl post-commit chmod 755 post-commit vi

svn采用hooks钩子自动同步代码

在Apache初次拉取svn代码到根目录比如:运行后再输入用户密码svn co svn://10.0.1.120/work/ --username jiangsq在仓库hooks/post-commit编辑如下参数(如果没有复制模块即可)#!/bin/shREPOS="$1"REV="$2"export LC_ALL="zh_CN.UTF-8"export LANG="en_US.UTF-8"SVN_PATH=/usr/bin

svn服务器端的客户端自动更新

先说这个方式的一个弊端,那就是服务器端这边代码不能与svn服务器出现冲突,一旦冲突就失效. 实现原理是,利用svn版本库,hooks目录的bat钩子开展工作. 共在hooks目录下建立3个文件如下:post-commit.bat 作用是:钩子入口!postcommit.log 作用是:记录最后一次执行的结果(可以记录最后一次报错)建立一个空文件就好!post-commit-run.bat 作用是:自动更新的核心部分! post-commit.bat的代码是: call %~dp0post-com

ubuntu 下搭建svn服务器,以及自动更新到web服务器。

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在网上找了很多的教程,但是试了很多个.写的都是略微粗糙,也有很多问题.整了三天终于是搞定了.我在这整理下,发上来给大家看看.希望有相同需求的道友少走些弯路.大家有什么问题可以在下面留言.</span> <span style="font-family: Ari

更新svn版本后,在更新代码报错

Eclipse 导入项目与 svn 插件关联全过程记录 今天想整理一下相关项目的前端代码以及目录结构,故利用svn客户端(TortoiseSVN 1.7.2)从trunk上新建了一个branches,然后checkout到本地. 打开Eclipse,点击 File -> Import -> General -> Existing Projects Workspace -> Next -> 选中 select root directory,点击 Browse 浏览,确认项目本地

svn利用钩子post-commit自动更新到线上测试服务器

创建一个新的版本库: [[email protected] svn]# pwd /home/svn [[email protected] svn]# svnadmin create webtest [[email protected] svn]# tree webtest/ webtest/ ├── conf │   ├── authz │   ├── passwd │   └── svnserve.conf ├── db │   ├── current │   ├── format │   ├

SVN的Hooks功能--强制添加注释

所谓hooks,可以类似 理解Linux内核Netfilter框架的hook点和hook函数的概念.当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就 会去执行对应hook点的脚本. SVN版本库目录下有hooks目录,里面有很多.tmpl的文件.这些文件用以定义某些动作触发的 hook脚本.默认状态下,这些脚本的后缀都是.tmpl,是没有起作用的.相当于Netfilter的各个hook点没有注册hook函数.所以,当用 户执行相关维护代码动作的时候,也不会触发hook脚本.

STM32学习日志--使用DMA功能自动更新PWM的输出

/******************************************************************************* 编译环境: EWARM V5.30 硬件环境: DZY2.PCB STM32 FW: V3.0.0 作者 : szlihongtao ****************************************************************************** REV : V1.00 DATE : 2011

分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2