LNMP环境SVN钩子脚本的使用

post-commit封面

在做版本的时候,需要SVN做一些自动化的事情,比如提交前自动更新;提交一些文件后关联着提交另一些。所以需要写一点自动化脚本。

什么是SVN钩子

官方说法:

钩子是通过版本库事件触发,例如新版本的创建或一个未版本化属性的修改。一些钩子(叫做“pre hooks”)在事件发生前运行,可以用来报告发生了什么以及防止它发生。还有一些钩子(“post hooks”)在版本库事件之后发生,只是用来报告。每个钩子能够获得事件的足够信息,例如提出的(或完成的)版本库修改细节,还有触发事件的用户名

SVN钩子的使用

以web目录:/usr/share/nginx/html 、svn版本库目录:/var/svn/project 为例:

在 /var/svn/project/hooks下新建 post-commit 文件

[root@VM_0_4_centos hooks]# vim post-commit

并加入以下内容

#!/bin/sh

EPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN=/usr/bin/svn            #这里配置的是svn安装bin目录下的svn文件
WEB=/usr/share/nginx/html      #要更新的目录
$SVN update --username svn库用户名 --password svn库密码 $WEB

保存后,给post-commit加执行的权限

[root@VM_0_4_centos hooks]# chmod a+x post-commit

基本到这就已经OK了

测试:

/usr/bin/svn update –usename svn库用户名 –password svn库密码 /usr/share/nginx/html

如果能正常update就已经ok了

我的因为web目录下之前就已经有文件了,会和库中的版本冲突

下面是解决方法

SVN报错:Node remains in conflict显示冲突的解决办法

如果是提示文件冲突:

svn revert –depth=infinity 有冲突的文件名

如果提示目录有冲突:

svn revert –depth=infinity 目录名

拓展

svn有9种钩子,上面只是其中一种

发表评论

电子邮件地址不会被公开。 必填项已用*标注