首先你需要搭建出自己的svn环境出来,并能成功导入导出,并且了解svn,这是看这篇文章的前提....

出于公司开发部需要svn同步更新服务器代码,需要用到svn钩子(hooks)技术,以前从来没听过,没办法只能google了,google半天再一次认同了一个道理:天下文章一大抄啊,东拼西凑终于算是完成了(为啥说算是呢?svn太强大了我所做的只是一点点),不多说了,上例子:

我们公司的部署很简单(svn服务和web服务在同一台主机上):

开发 ----- svn(存储)---- 线上服务器

以前是这样(没有用到hooks时):

开发部commit一个文件,线上服务的web文档并不同步,而是需要在svn服务上执行

svn update命令后才能同步。

现在是这样(用到hooks后):

开发部commit一个文件,线上服务(web目录)同步数据,不需要svn update命令了,这样就减少了中间的一个小繁琐,别看这只是一个小动作但是省了一大麻烦(对于web开发工程师来说尤其这样,你想啊,代码经常改,还得经常svn update,总是一件事来回来回,烦不烦啊,是吧!)

我们需要同步的网站目录是(当然之前在svn服务器上已经存有assets目录文件了):

这样就先在webdir目录下建立一个assets目录(记得切换到webdir目录下),并运行

那么怎么利用hooks实现数据同步呢?接下来

看到了绿色文件了吗?!这里面其实就是一个shell脚本:

其中的DIR变量存着需要同步的目录,利用svn update命令加上用户名、密码就能同步了(我做的也就只能这么简单,莫怪兄弟啊!),主要看上幅图,有很多.tmpl结尾的文件,这些就是hooks模板了,post-commit这个文件名不要更改(需要给它执行权限)

经过这几步后,不需要手动执行这个post-commit脚本就可以完成开发部所需要的要求了!

为什么这样呢?套用网上的话(我也抄了,sorry啊!):

post-commit
在提交完成,成功创建版本之后执行该钩子,提交已经完成,不可更改,因此本脚本的返回值被忽略。

post-lock
对文件进行加锁操作之后执行该脚本

post-revprop-change
在修改 revision 属性之后,执行该脚本。因为修改稿已经完成,不可更改,因此本脚本的返回值被忽略(不过实际上的实现似乎是该脚本的正确执行与否影响属性修改)

post-unlock
对文件进行解锁操作之后执行该脚本

pre-commit
在 Subversion transaction 完毕之后,在提交之前,执行该脚本

pre-lock
对文件进行加锁操作之前执行该脚本

pre-revprop-change
在修改 revision 属性之前,执行该脚本

pre-unlock
对文件进行解锁操作之前执行该脚本

start-commit
在客户端还没有向服务器提交数据之前,即还没有建立 Subversion transaction(缩写为 txn) 之前,执行执行该脚本

具体到我们的应用场景,我们要实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit提交操作之后,让钩子程序去自动更新测试服务器的文件即可!

附上我所做的svn目录介绍:

192.168.1.20就是我们公司内部服务器了(svn+web),svn的根目录就是svndate(svndate就是版本目录了,直接用svn客户端访问192.168.1.20就行)

他的auth文件是(这样就能看出来svndate就是根目录了,注意document目录,前面的图里面出现过):

svn钩子(hooks)的更多相关文章

  1. centos7配置svn钩子hooks脚本自动同步代码到项目目录

    由于项目需要,svn提交后的代码希望再测试服务器上测试,每次提交后还要手动去svn update一次 十分麻烦,配置好svn钩子以后就省去了这些麻烦. 进入svn版本库目录找到hooks目录找到文件p ...

  2. svn钩子(hooks)

    目录 钩子脚本的具体写法就是操作系统中shell脚本程序的写法,请根据自己SVN所在的操作系统和shell程序进行相应的写作 所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化 ...

  3. svn钩子(hooks)自动部署代码到web目录

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/li956732806/article/details/71158869   web目录:/hoe ...

  4. 钉钉自定义机器人配合SVN钩子事件进行消息的推送实践

    目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考 ...

  5. 使用svn钩子遇到的坑

    1.svn钩子(hooks)自动部署代码到web目录(以前公司用,很好奇怎么做的,折腾了两天,掉进了坑里)共勉!!! web目录:/home/www/xiaokai svn版本库目录:/svn/xia ...

  6. SVN 钩子 同步测试服务器

    http://blog.csdn.net/showso2006/article/details/6750441 多人开始使用subversion之后,就想着,要建立一个测试用的服务器,不需要把文件up ...

  7. 使用python编写svn钩子

    同上一篇trac中安装插件的文章的出发点一样,感觉用文档和口头制定规则在执行上会有偏差并且需要经常引导新人去熟悉规则. 所以,又费了几个小时去琢磨怎么改进svn提交代码的钩子,现有的钩子的功能比较简单 ...

  8. linux 设置svn钩子实现自动更新

    一.svn安装设置 1.安装svn启动 yum install subversion 2.建个svn的根目录,因为项目不止一个 mkdir -p /home/svn/3.新建一个新的空的版本仓库(su ...

  9. 使用SVN钩子强制提交日志和限制提交文件类型

    Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能.所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有 ...

随机推荐

  1. 【代码分享】简单html5足球射门游戏分享

    之前空余时间想玩玩html5, 于是使用2.2.2的cocos2d-html5 制作了个简单的足球射门游戏 ,美术是自己在纸上画完用手机拍下再ps扣的图,哈哈,赞一下自己的创意. 在我的主页可以玩这个 ...

  2. jconsole远程查看jvm性能

    Java VisualVM -- JDK自带的强大性能监测工具 这里给出了另一种,可以通过jdk下bin目录下的jconsole.exe来观察java程序内存的使用及变化情况 一般远程调试可以用,性能 ...

  3. BED format

    要用bedtools了, 当然要熟悉bed文件格式 一共十二列 1, chrom 不解释 2, start, 0-based 3, end, 说明书说是1-based, include. 不如理解为0 ...

  4. 2015GitWebRTC编译实录6

    2015.07.20 libbitrate_controller 编译通过依赖system_wrappers lib,编写测试代码时需要注意.[425/1600 ] CXX obj /webrtc/m ...

  5. new总结

    基础:c++中,什么时候用 A a;和什么时候用A a=new A; new是在堆上分配内存,它需要用delete释放,否则会造成内存泄漏(使用的内存没有即时释放,造成内存的浪费) int main( ...

  6. Linux 下WordPress FTP帐号解决办法

    自己用Ubuntu搭建WordPress后在更换主题时提示需要输入FTP帐号和密码,解决办法主要是把WordPress主目录的权限所有者弄为Apache: 找到apache服务所使用的用户名和用户组 ...

  7. 升级win10的理由

    微软也没给我钱,我免费给它打了次广告. 我还是非常喜欢linux的,无奈公司深度依赖windows. 废话不多说,直接进入主题: [开机速度] 这里先说句题外话,不那么缺钱的兄弟,一定要去换一块SSD ...

  8. install gcc under suse

    SUSE 11中安装GCC开发环境 SUSE11中安装GCC开发环境 安装包下载网站:http://213.174.32.130/sles/distribution/11.0-SP1/repo/dis ...

  9. 11g新特性与12c新特性

    1. 11g新特性概图 管理新特性> 开发新特性> 2. 12c 新特性概图

  10. Eclipse 复制按钮卡死

    复制按钮和按住CTRL链着超链接 有冲突,Eclipse不知道是复制还是链到元素,所以卡死 Eclipse/MyEclipse中使用复制粘贴功能卡的解决办法 最近在MyEclipse中编辑代码时,使用 ...