一、hook简单介绍

为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook会得到与它所处理的事件相关的参数,根据 hook的返回值,Subversion会决定是否继续当前的提交过程

要实际安装一个可用的钩子,你需要在 repos/hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本。


二、本地机器SVN自动更新

1. export方式(备份)

在使用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-cache

注:
--force 是说强制覆盖d:/tomcat/opt/web这个文件夹,避免这个文件夹不为空时报错
--username abc --password 12345 是自动将用户名和密码作为参数传送进去
--no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑

2.update方式

修改hooks/post-commit

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大。


三、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

svn利用钩子脚本功能实现代码同步到web目录相关推荐

  1. CentOS6.8 搭建SVN并用钩子自动实现同步到web目录

    一 安装 yum install subversion 二 检查是否安装成功 svn --version 三 创建仓库目录 mkdir –p /home/svnroot/test 四 创建项目 svn ...

  2. svn同步文件到web服务器,Centos7上搭建SVN服务器并实现自动同步至web目录

    前言: 由于最近跟学长一起合作完成一个小项目,然后我俩比较熟悉的版本控制是SVN,就考虑着在服务器上搭建一个SVN服务器.现在在这里给出简单的搭建过程. (其实吧,能用Git就尽量用git吧,好处自己 ...

  3. CentOS 创建SVN 服务器,并且自动同步到WEB 目录

    CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报  分类: ...

  4. SVN 钩子操作-同步更新web目录

    一个简单的钩子演示:也可以网上搜索其他高级的 本次想要达到的功能是:每次用户commit 到仓库后,仓库的钩子会自动把程序又更新的www/的web发布目录 1.现在web目录下创建一个test.com ...

  5. 转:Windows下WSH/JS实现SVN服务器钩子脚本阻止提交空日志信息和垃圾文件

    http://blog.csdn.net/caikanxp/article/details/8279921 如何强制用户在提交SVN时填写日志信息? 如果用户使用的都是TortoiseSVN客户端,可 ...

  6. linux svn同步到本地目录,LINUX中SVN服务的搭建与实现SVN 自动同步到web目录,SVN自动启动...

    一,下载相关软件: [root@localhost test]# wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz ...

  7. linux svn上传目录_Linux系统下svn更新自动同步到web目录

    一.在web目录中checkout版本库 这一步算是比较关键的一步了,当时我搭建的时候试了无数次,就是缺少了这一步.把刚才checkout的版本库删掉,我们来一次比较正式的checkout: svn ...

  8. GIT上传服务器同步到web目录

    实现自动同步到站点目录(www) 就比如刚才我们往远程仓库推送了index.php文件,虽然提示推送成功,但是我们现在在服务器端还看不到效果,心理总是不爽.又比如我写了个html页面,我想在站点中马上 ...

  9. 利用JS脚本快速删除百度网盘同一目录下的不需要文件(可以参考这个方法删除重复文件)

    比如百度网盘某目录下存有如下文件: 要求:将如上图文件目录下的文件,每个月只保留最后(新)一个(根据文件名中包含的日期),其它删除. 比如7月份有3个文件,只保留2019-07-21那天的文件,删除7 ...

最新文章

  1. 最小字典序问题java版
  2. Linux学习系列之Nginx调优实战
  3. 曝光原理_泰国精戈咖啡效果反馈 作用原理曝光
  4. java ReentrantLock 使用
  5. 【kafka】kafka 启动 KafkaController 相关源码分析
  6. 数据存储之偏好设置NSUserDefaults
  7. poj 3267 -- The Cow Lexicon
  8. Python解法华为OJ机试-迷宫问题
  9. 取整函数access_ACCESS常用函数总结
  10. python3图片裁剪+转换pdf+压缩
  11. [多图]非线性格兰杰因果检验,eveiws详细实现步骤
  12. 4-2-1 求e的近似值 (15分)
  13. 修改Win7开机登录界面背景图片
  14. css文本框圆角不兼容,CSS教程之重置默认样式与IE兼容圆角的解决方法
  15. Qt6.2.3 QWebEngineView 咋就默认无痕浏览模式了?
  16. 新药发明专利的专利权期限。
  17. 通往网站启动、停止、重启服务
  18. android 辅助功能 翻页,Android RecyclerView自动翻页方案
  19. iPod磁带播放器:复古与现代的完美结合
  20. 【运维】--服务器之间文件备份

热门文章

  1. Python之Eclipse环境下安装与配置
  2. markown编辑器截图粘贴预览,并将图片传至七牛云
  3. js将数字转成大写中文
  4. 12.15daily_scrum
  5. 微软silverlight视频教程
  6. CV学习笔记-图像滤波器
  7. html5选择状态,HTML5 Canvas 状态
  8. linux下mysql数据库目录迁移_mysql实现linux下数据库目录迁移
  9. python os path dirname_python中的os.path.dirname(__file__)的使用
  10. 过年用计算机弹奏,过年实用,你可能需要的亲戚称呼计算器