`
hudeyong926
  • 浏览: 2033131 次
  • 来自: 武汉
社区版块
存档分类
最新评论

SVN hook实现SVN与WEB测试服务器同步

 
阅读更多

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

1.页面同步按钮触发

update_develop_svn.sh

#!/bin/sh
SVN=/usr/bin/svn
WEB=$1
WWWROOT=/data/www/wwwroot/test.com/
SVNTMP=/data/www/svntmp/test.com/

if [ ! -d "${WWWROOT}${WEB}" ]; then
      echo "arg error"
      exit
fi

#export LANG =en_US.UTF-8
$SVN update $SVNTMP$WEB  --username *** --password **
/cp -rv $SVNTMP$WEB $WWWROOT #svn更新文件复制到项目中
find $WWWROOT$WEB -type d -name ".svn" | xargs rm -rf #先(递归)找到当前路径下含有 .svn的文件目录
chown www.www $WWWROOT$WEB -R

php执行shell,网页可以访问

<?php
if (isset($_POST['Submit3']) &&$_POST['Submit3']){
    shell_exec("./update_develop_svn.sh");// exec("./update_develop_svn.sh",$output);
}
?>
<form name="form3" method="post" action="">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <label>
        <input name="Submit3" type="submit" id="Submit3" value="同步" onclick="return confirm('确认需要同步?')">
    </label>
</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文件

@echo off
"C:\svn\bin\svn.exe"  cleanup "c:\htdocs\demo"
"C:\svn\bin\svn.exe"  update "c:\htdocs\demo" --quiet  --username XXX --password XXXX
3.linux自动更新

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

#!/bin/sh 
SVN=/usr/bin/svn           #这里配置的是svn安装bin目录下的svn文件 
WEB=/var/www/html/test     #要更新的目录 
$SVN update $WEB --username xxx --password xxx 

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

chmod 777 post-commit
chown -R www:www ./.svn
chown -R www:www ./.svn/*
chown -R www:www ./.svn/
chown -R www:www ./.svn
chown -R www:www ./

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

 
 
 
 
 
 
  • 大小: 92.6 KB
分享到:
评论

相关推荐

    SVN Windows 下 利用hook 自动发布到 web服务器

    通过以上分析,我们可以看到该脚本巧妙地利用了SVN的hook机制,实现了版本控制系统的提交与Web服务器部署之间的自动化连接,极大地提高了开发效率和部署速度。同时,通过对脚本的深入理解,我们还可以根据实际需求对...

    svn hook脚本,实现commit提交逻辑检查,评论格式,文件格式逻辑设定

    svn上传管理时,经常需要规定固定的评论格式,还有文件格式限制,本示例实现了上述逻辑,需要的同学可以参考

    Web方式的SVN全文搜索功能实现

    ### Web方式的SVN全文搜索功能实现 #### 一、背景与目标 ##### 背景 随着软件项目的不断扩展,代码量日益增加,对于代码的管理和维护提出了更高的要求。Subversion (SVN) 作为一种分布式版本控制系统,在项目管理...

    svn hook pre-commit禁止删除文件和强制添加注释

    ### SVN Hook预提交(pre-commit)控制机制:禁止删除文件与强制添加注释 #### 一、SVN(Subversion)简介 SVN 是一个集中式的版本控制系统,它可以帮助团队管理和跟踪项目的开发过程。通过SVN,开发人员可以保存...

    互不连接的两个SVN双向同步方法

    当开发团队分布在不同的地理位置,且出于安全原因无法直接访问同一SVN仓库时,实现仓库间的双向同步就显得尤为必要。SVN虽然原生支持单向的仓库镜像,但不直接支持双向同步。面对这种情况,我们可以采取手动操作的...

    svn同步数据

    本文主要介绍如何在Windows和Linux环境下配置Subversion(简称svn)进行数据同步,特别是将svn的提交操作同步到Web服务器的根目录,实现版本控制系统与Web服务的实时联动。 一、Windows下的svn同步配置 1. **安装*...

    windows环境下svn同步web文件.docx

    在描述中提到的"svn同步web文件"是指通过SVN的hook机制,实现在每次提交(commit)到SVN服务器后,自动将更新的数据发布到Web服务器上,简化项目开发和测试流程。 实现这一功能的关键在于使用SVN的hook脚本,特别是...

    SVN里通过hook钩子填写日志信息

    在版本控制系统Subversion(SVN)中,"hook"钩子是一种强大的机制,允许管理员执行自定义脚本或程序来实现特定的自动化操作。当SVN仓库中的某些事件发生时,比如提交、更新或者合并,这些钩子会被触发。在这个场景中...

    Windows 下 SVN 修改 信息 hook

    在SVN中,这可以通过设置hooks来实现。 `pre-revprop-change`钩子是SVN服务器端的一种特殊脚本,它在用户尝试更改已提交版本的属性(如作者、日期或注释)之前执行。如果未正确配置此钩子,用户可能会收到错误提示...

    svn hooks 全集,包含常用示例代码

    在 SVN 中,hooks 是一种强大的功能,它们是服务器端的脚本,可以在特定事件(如提交、更新等)发生时自动执行,以实现自定义的行为或限制。下面我们将详细讨论 SVN hooks 的相关知识点,以及如何利用它们来增强 SVN...

    svn服务用svnsync命令双机热备

    在SVN环境中实现双机热备,主要是利用`svnsync`工具进行数据同步,保证两台服务器上的版本库保持一致。 #### 实现步骤 1. **创建目标目录** 首先在备用服务器上创建一个与主服务器版本库结构相同的目录,并初始...

    SVN限制删除和强制添加注释的hook脚本

    在版本控制系统Subversion (SVN) 中,Hook脚本是一种非常有用的功能,它允许管理员对特定的操作进行自动化处理和限制,比如预提交检查、权限控制等。本篇将详细讲解如何利用SVN的Hook脚本来限制用户删除文件,并强制...

    详细介绍Windows下SVN服务器的配置

    【Windows下SVN服务器配置详解】 Subversion (简称SVN) 是一款强大的版本控制系统,它在Windows环境下同样可以被高效地配置和使用。本指南将详细介绍如何在Windows上搭建SVN服务器,包括Apache HTTP Server的安装、...

    用JScript实现SVN服务器修改log的Hook脚本

    在Windows下SVN服务器缺省是不能修改log的,需要修改Hook脚本。与大多数纯bat方式不同,资源中的脚本通过.bat文件调用.js文件实现,可以实现一些更高级的功能,代码也更更容易维护,对类似需求有参考价值。 使用方法...

    windows下在svn钩子中获取,项目名称,作者,日志,时间,版本号

    在windows环境下,提交代码到svn中,使用钩子脚本,获取项目名称,提交人,提交时间,提交的日志信息,版本号,纯bat脚本。ps:不是pre-commit.bat文件,因为在该文件中获取不到真正的版本号。

    SVN各种错误提示产生原因及处理方法大全

    该错误提示的原因是服务器地址错误,是普通 Web 页面,不支持 SVN 的 WebDAV 协议。解决方法是确认输入正确的 SVN 服务地址,可以在浏览器中输入该地址进行确认。 5. The version of your subversion (client) is ...

Global site tag (gtag.js) - Google Analytics