用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文件

相关文章
|
12小时前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
7 3
|
2天前
|
JSON 监控 安全
LabVIEW测试和调试Web服务
LabVIEW测试和调试Web服务
|
2天前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
14 1
|
2天前
|
JSON 应用服务中间件 Linux
skywalking内部测试服务器安装记录
skywalking内部测试服务器安装记录
|
2天前
|
监控 测试技术 Apache
如何测试服务器性能?
通过以上步骤,您可以全面评估服务器的性能,找出潜在问题,并采取措施来提高服务器的性能和稳定性。这对于确保服务器在实际生产环境中能够高效运行非常重要。
12 1
|
5天前
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。
|
6天前
|
SQL 安全 数据处理
Web 测试神器:HackBar 保姆级教程
Web 测试神器:HackBar 保姆级教程
|
20天前
|
XML Web App开发 测试技术
python的Web自动化测试
【4月更文挑战第16天】Python在Web自动化测试中广泛应用,借助Selenium(支持多浏览器交互)、BeautifulSoup(解析HTML/XML)、Requests(发送HTTP请求)和Unittest(测试框架)等工具。测试步骤包括环境搭建、编写测试用例、初始化浏览器、访问页面、操作元素、验证结果、关闭浏览器及运行报告。注意浏览器兼容性、动态内容处理和错误处理。这些组合能提升测试效率和质量。
15 6
|
1月前
|
存储 缓存 网络协议
Web客户/服务器程序
Web客户/服务器程序
|
1月前
|
Linux
winscp文件增量同步到linux服务器
winscp文件增量同步到linux服务器
35 9