用SVN钩子实现SVN与WEB测试服务器同步

简介:

多人开始使用subversion之后,就想着,要建立一个测试用的服务器,不需要把文件update到本地再进行测试。
原理:基于subversion的钩子,即hook(在每个版本库下有hooks文件夹,里面有很多钩子程序)。在subversion执行一个操作时, 那会相应的首先去调用相关的钩子程序(如果存在的话)。那么实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit操作之后,让钩子程序去自动更新测试服务器的文件即可。通过这个思路,我们需要作的就是建立一个post-commit的钩子

1.页面同步按钮触发

update_develop_svn.sh

Java代码   收藏代码
  1. #!/bin/sh  
  2. SVN=/usr/bin/svn  
  3. WEB=$1  
  4. WWWROOT=/data/www/wwwroot/test.com/  
  5. SVNTMP=/data/www/svntmp/test.com/  
  6.   
  7. if [ ! -d "${WWWROOT}${WEB}" ]; then  
  8.       echo "arg error"  
  9.       exit  
  10. fi  
  11.   
  12. #export LANG =en_US.UTF-8  
  13. $SVN update $SVNTMP$WEB  --username *** --password **  
  14. /cp -rv $SVNTMP$WEB $WWWROOT #svn更新文件复制到项目中  
  15. find $WWWROOT$WEB -type d -name ".svn" | xargs rm -rf #先(递归)找到当前路径下含有 .svn的文件目录  
  16. chown www.www $WWWROOT$WEB -R  

php执行shell,网页可以访问

Java代码   收藏代码
  1. <?php  
  2. if (isset($_POST['Submit3']) &&$_POST['Submit3']){  
  3.     shell_exec("./update_develop_svn.sh");// exec("./update_develop_svn.sh",$output);  
  4. }  
  5. ?>  
  6. <form name="form3" method="post" action="">  
  7.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  8.     <label>  
  9.         <input name="Submit3" type="submit" id="Submit3" value="同步" onclick="return confirm('确认需要同步?')">  
  10.     </label>  
  11. </form>  

 

2.windows自动更新

On a Windows system, you should name the hook program 'post-commit.bat' or 'post-commit.exe',

在svn项目demo\hooks下面,新建post-commit.bat文件

Java代码   收藏代码
  1. @echo off  
  2. "C:\svn\bin\svn.exe"  update "c:\htdocs\demo" --quiet  --username XXX --password XXXX  
3. linux自动更新

 项目库的 hooks/ 目录下新建 post-commit 文件

Java代码   收藏代码
  1. #!/bin/sh   
  2. SVN=/usr/bin/svn           #这里配置的是svn安装bin目录下的svn文件   
  3. WEB=/var/www/html/test     #要更新的目录   
  4. $SVN update $WEB --username xxx --password xxx   

让post-commit有执行的权限,并将checkout的项目相关权限和宿主改一下

Java代码   收藏代码
  1. chmod 777 post-commit  
  2. chown -R www:www ./.svn  
  3. chown -R www:www ./.svn/*  
  4. chown -R www:www ./.svn/  
  5. chown -R www:www ./.svn  
  6. chown -R www:www ./  

 以上的实现原理参考hooks/post-commit.tmpl文件

相关文章
|
7天前
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
|
12天前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
38 3
|
15天前
|
网络协议 安全 测试技术
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
27 2
|
16天前
|
存储 弹性计算 运维
阿里云服务器ECS经济型e实例详细介绍_性能测试和租用价格
阿里云服务器ECS经济型e实例详细介绍_性能测试和租用价格,阿里云服务器ECS推出经济型e系列,经济型e实例是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,CPU采用Intel Xeon Platinum架构处理器,支持1:1、1:2、1:4多种处理器内存配比,e系列性价比优选
|
3天前
|
存储 网络协议 数据可视化
如何使用Synology Drive作为文件同步服务器实现云同步Obsidian笔记
如何使用Synology Drive作为文件同步服务器实现云同步Obsidian笔记
|
6天前
|
安全 网络安全 开发者
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
20 0
|
7天前
|
存储 缓存 网络协议
Go语言并发编程实战:构建高性能Web服务器
【2月更文挑战第6天】本文将通过构建一个高性能的Web服务器实战案例,深入探讨如何在Go语言中运用并发编程技术。我们将利用goroutine和channel实现高效的请求处理、资源管理和并发控制,以提升Web服务器的性能和稳定性。通过这一实战,你将更好地理解和掌握Go语言在并发编程方面的优势和应用。
|
10天前
|
Web App开发 测试技术 数据安全/隐私保护
Web自动化测试工具Selenium
Web自动化测试工具Selenium
|
13天前
|
负载均衡 JavaScript 应用服务中间件
强大的WEB服务器-Nginx
强大的WEB服务器-Nginx
19 0
|
13天前
|
人工智能 前端开发 Java
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
56 0

相关产品

  • 云迁移中心