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

相关文章
|
21天前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
21天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
31 4
|
27天前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
1天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
42 19
Selenium IDE:Web自动化测试的得力助手
|
3天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
65 16
Selenium:强大的 Web 自动化测试工具
|
2天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
39 6
Selenium IDE:Web自动化测试的得力助手
|
19天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
27 4
|
21天前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
26 4
|
22天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
36 3
|
7月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
239 0