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

相关文章
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
612 3
|
10月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
507 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
9月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
573 3
|
9月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
395 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
安全 JavaScript 前端开发
AppSpider 7.5.020 发布 - Web 应用程序安全测试
AppSpider 7.5.020 for Windows - Web 应用程序安全测试
257 0
|
10月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
684 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
|
12月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
826 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
628 4
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
2588 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!