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

相关文章
|
1天前
|
存储 安全 数据安全/隐私保护
Web应用程序的会话管理是一种跟踪和识别特定用户与Web服务器之间交互的技术
Python Web开发中,会话管理用于跟踪用户与服务器交互,如Flask框架提供的内置功能。以下是一个简单示例:安装Flask后,设置应用密钥,通过session读写用户状态。例如,创建一个显示和设置用户名称的Web应用,用户提交的名字将保存在会话中。在生产环境中,应安全存储密钥,如使用环境变量。扩展会话管理可借助第三方库实现更多功能,但可能需更多配置。
6 2
|
1天前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
8 3
|
3天前
|
JSON 监控 安全
LabVIEW测试和调试Web服务
LabVIEW测试和调试Web服务
|
6天前
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。
|
7天前
|
SQL 安全 数据处理
Web 测试神器:HackBar 保姆级教程
Web 测试神器:HackBar 保姆级教程
|
15天前
|
中间件 Go API
Golang深入浅出之-Go语言标准库net/http:构建Web服务器
【4月更文挑战第25天】Go语言的`net/http`包是构建高性能Web服务器的核心,提供创建服务器和发起请求的功能。本文讨论了使用中的常见问题和解决方案,包括:使用第三方路由库改进路由设计、引入中间件处理通用逻辑、设置合适的超时和连接管理以防止资源泄露。通过基础服务器和中间件的代码示例,展示了如何有效运用`net/http`包。掌握这些最佳实践,有助于开发出高效、易维护的Web服务。
28 1
|
18天前
|
机器学习/深度学习 数据挖掘 Python
使用Python实现简单的Web服务器
使用Python内置的http.server模块,本文演示了创建基本Web服务器的步骤。通过编写简单的代码,实现响应GET请求并返回“Hello, World!”。此外,还展示了如何扩展服务器功能,处理不同URL路径,如根路径和/about路径,并实现404错误页面。这个基础教程为理解HTTP服务器原理和Python网络编程入门提供了帮助。对于复杂Web应用,建议使用Flask或Django等高级框架。
|
19天前
|
负载均衡 监控 Unix
[AIGC] Nginx:一个高性能的 Web 服务器和反向代理
[AIGC] Nginx:一个高性能的 Web 服务器和反向代理
|
3天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
20 0
|
21小时前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线