多人开始使用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 XXXX3.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文件
相关推荐
使用 svn 的hook 自动发布到web服务器 省着每次还得提出版本一个一个上传
svn上传管理时,经常需要规定固定的评论格式,还有文件格式限制,本示例实现了上述逻辑,需要的同学可以参考
通过在pre-commit文件查看用户的动作来限制删除文件的动作,通过查看用户输入的log信息长度,限制用户提交log
SVN限制删除和强制添加注释的hook脚本 windows版本
svn 修改 提交注释信息 是 提示:此版本库不允许修改版本属性; 请管理员创建 pre-revprop-change 钩子 请将此文件解压到 版本库 hooks 文件夹下。即可。
svn控制项目过程中,通过此文件,可以控制相应的人员必须填写日志信息及信息的长度
在Windows下SVN服务器缺省是不能修改log的,需要修改Hook脚本。与大多数纯bat方式不同,资源中的脚本通过.bat文件调用.js文件实现,可以实现一些更高级的功能,代码也更更容易维护,对类似需求有参考价值。 使用方法...
局域网搭建SVN服务器 希望对大家有用
在windows环境下,提交代码到svn中,使用钩子脚本,获取项目名称,提交人,提交时间,提交的日志信息,版本号,纯bat脚本。ps:不是pre-commit.bat文件,因为在该文件中获取不到真正的版本号。
SVN+mantis(version1.1.8)集成管理
svn 备份 可以和hook脚本结合,每有更新就可以同步到备份服务器中
包含内容: 邮件通知 强制写日志 禁止修改log ..............
6. 启动服务器端并将svn设为系统服务 打开cmd 输入 sc create svnserver binPath= "D:/Program Files/Subversion/bin/svnserve.exe --service --root D:/svnserver" (注:“=”前不得有空格,后必须有空格。 svn...
SVN禁止删除和强制注释操作的钩子脚本 只有用户lyj能删除 注释内容不能少于10个字符
http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/commit-email.pl.in 下载脚本文件,保存为commit-email.pl。 需要注意的是如果该文件是在windows下创建的,在拷贝到Ubuntu或Linux环境下...
流坞-svn-钩Subversion钩子将事件发送到Flowdock 如果您已经了解Ruby和Subversion提交挂钩,那么您正在寻找 。要求该软件必须可供托管资源库的用户使用。 Ruby-支持1.8.7和1.9.x 使用操作系统的程序包管理器进行安装...
如果您需要自己动手,这个钩子是一个很好的起点。 否则,您可以为分支设置所需的键并检查消息内容。
4.29. 与基于 WEB 的版本库浏览器集成 4.30. TortoiseSVN的设置 4.30.1. 常规设置 4.30.1.1. 右键菜单配置 4.30.1.2. TSVN对话框设置一 4.30.1.3. TSVN对话框设置二 4.30.1.4. TortoiseSVN 颜色设置 4.30.2. ...
WScript.exe "D:\Program Files\TortoiseSVN\SvnHook\log_message_from_LogMsg.js" Wait for the script to finish 选中 --------------------- Log大小Check HookType: Pre_commit_hook E:\AMANO\CSharp_Work\SVN ...
SVN软件安装及使用说明 安装技巧 案例说明 服务端配置 hook机制