1、hook简单介绍web
为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就至关于特定事件的处理函数。每一个hook会获得与它所处理的事件相关的参数,根据 hook的返回值,Subversion会决定是否继续当前的提交过程shell
要实际安装一个可用的钩子,你须要在 repos/hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本。
centos
2、本地机器SVN自动更新
缓存
1. export方式(备份)tomcat
在使用svn客户端时,有可能须要对某一个版本进行本地备份,好比制做成压缩包进行发布,这时候须要从svn文件夹中提取出内容,去除.svn等隐藏的svn配置文件。最笨的方法拷贝一份出来,而后显示隐藏文件,把全部 .svn文件夹都删掉。在svn菜单中,能够找到export命令,这个命令能够将当前svn目录中的内容干净地导出到指定的目录
安全
例如你版本库的svn访问地址是http://10.30.11.12:8080/svn/project1,你想把这个版本库下的/trunk/web文件夹发布到tomcat上,发布到tomcat的文件夹地址是d:/tomcat/opt/web,svn的管理员用户名是abc,密码是12345,那么这个钩子程序应该就是:
svn export http://10.30.11.12:8080/svn/project1/trunk/web d:/tomcat/opt/web --force --username abc --password 12345 --no-auth-cachebash
注:
--force 是说强制覆盖d:/tomcat/opt/web这个文件夹,避免这个文件夹不为空时报错
--username abc --password 12345 是自动将用户名和密码做为参数传送进去
--no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑网络
2.update方式ssh
修改hooks/post-commit svn
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
STATIC_DIR=/web/root/wwwdeng #注意权限问题
$SVN update $STATIC_DIR --username deng --password 123456 --no-auth-cache
#必须加上--no-auth-cache否则会报错!!
默认使用的shell类型是sh,最好改为bash,sh是bash的子集,centos中sh其实就是软连接到bash
3.update和export比较
update会生成一个隐藏.svn文件夹,这个文件夹是咱们不须要的,固然了,若是整个发布的内容不少的话,建议仍是用update,而不用export,由于update只更新有变化的部分,而export将从新导出全部内容,网络消耗比update大。
3、svn实现远程机器自动更新
首先实现A机器经过ssh无密码登录B机器, 修改A机器的post-commit文件
/usr/bin/ssh -l root 192.168.127.183 "/bin/bash /home/www/svnup.sh"
而后在B机器的/home/www/目录建立svnup.sh可执行文件
/usr/bin/svn update /web/root/code
版本库有提交请求的时候自动会执行post-commit脚本,post-commit脚本经过ssh让远程机器执行shell脚本自动更新svn。
附注:
@echo off并非DOS程序中的,
而是DOS批处理中的。
当年的DOS,全部操做都用键盘命令来完成,
当你每次都要输入相同的命令时,
能够把这么多命令存为一个批处理,
今后之后,只要运行这个批处理,
就至关于打了几行、几十行命令。
DOS在运行批处理时,
会依次执行批处理中的每条命令,
而且会在显示器上显示,
若是你不想让它们显示,
能够加一个“echo off”
固然,“echo off”也是命令,
它自己也会显示,
若是连这条也不显示,
就在前面加个“@”。
说了这么多,
我以为很是详细了,
可能你仍是不懂。
没有通过DOS时代的人,
想法跟咱们是有区别的。
本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1655385