配置SVN的hooks功能自动更新代码
时间:2022-07-25
本文章向大家介绍配置SVN的hooks功能自动更新代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言解读
用过SVN的小伙伴们,都应该知道hooks(钩子)这个功能,的确日常企业内部测试环境经常会用过这个“特殊”的功能,今天来聊一聊SVN hooks
为何而用?
传统的WEB网站代码发布基本依靠手工操作
大概的整个流程如下:
开发本地环境开发代码
提交SVN版本库
然后将本地环境代码使用工具上传至待发布目录
备份原WEB站点代码目录
发布新代码至WEB目录
基于这类重复操作的问题,为了提高效率,因此,引入了SVN hooks功能
配置SVN hooks
SVN安装这里就不赘述了,需要了解可参考以前的文章(如下链接)
安装完成,开始配置hooks功能
[root@centos ~]#cd /svndata/doc/hooks
[root@centos 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
备份下配置文件
[root@centos hooks]#cp post-commit.tmpl post-commit
[root@centos hooks]#chmod +x post-commit
修改post-commit配置文件
[root@centos 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
##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
[root@centos test]# pwd
/usr/local/apache-tomcat-8.5.9/webapps/test
[root@centos 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目录完成
- 数据结构之数组封装
- Centos下内网NDS主从环境部署记录
- 一搜解决,微信的这个功能厉害了!
- Saltstack自动化操作记录(2)-配置使用
- Saltstack自动化操作记录(1)-环境部署
- CentOS源码编译安装Nginx和tcp_proxy module
- 介绍一个MonoTouch开发的伦敦官方城市指南应用
- 虾说区块链-55-《精通比特币》笔记十
- SignalR QuickStart
- Node.js入门学习笔记-IDE选择/配置之WebStorm(windows)
- Captcha插件后门分析和修复
- log4net.SignalR - 日志即时发送客户端页面
- 科学家担心的智能爆炸,真会有这一天吗?
- RSA 2018:从大会议题看2018年网络安全趋势
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Apache IoTDB 系列教程-3:部署运维
- 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇)
- kali下安装beef并联合Metasploit
- 初次使用maven创建web工程发现只有一个idea目录,src,webapp目录都不见了,解决方案
- 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇,题目2)
- SQL注入原理及代码分析(一)
- SQL注入原理及代码分析(二)
- 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出 现的次数。
- SSRF漏洞简单分析
- 树莓派基础实验30:BMP180气压传感器实验
- DC-1靶机实战和分析
- 如何用Python优雅的登录校园网?
- PHP入门之类型与运算符
- 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇,题目3)
- Maven是什么? Maven的概念+作用+仓库的介绍+常用命令