svn 的使用(二)

来源:互联网
更新时间:2016/12/12 2:49:11
责任编辑:王亮
字体:

这篇主要介绍下 svn 钩子的使用,svn 的安装以及配置等可以查看 svn 的使用(一)

我们可以在svn创建的仓库文件夹下看到 hooks 文件夹。

这里面就存放这个各种svn操作同时会执行的脚本文件。

(你可以自己查看每个脚本文件,文件开始都有英文的介绍包括功能,参数以及返回值。

   我翻译的不好所以就采用网上其它资料的解释吧 - -! )

1.start-commit  开始提交的通知

输入参数:传递给你钩子程序的命令行参数,顺序如下:

    1. 版本库路径

    2. 已经认证过的提交的用户名

它在提交事务产生前已运行,通常用来判定一个用户是否有权提交。返回0表示认证通过。

2.pre-commit 在提交结束之前提醒

输入参数:传递给你钩子程序的命令行参数。顺序是:

     1. 版本库路径

     2. 提交事务的名称

在事务完成提交之前运行,通常这个钩子是用来保护因为内容或位置(例如,你要求所有到一个特定分支的提交必须包括一个bug追踪的ticket号,或者是 要求日志信息不为空)而不允许的提交。无错误返回0。

 

3.post-commit  成功提交的通知

传递给你钩子程序的命令行参数,顺序为:

     1. 版本库路径

     2. 提交创建的修订版本号

它在事务完成后运行,创建一个新的修订版本。无错误程序正常退出。

 

4.pre-revprop-change 版本属性修改

因为Subversion的修订版本属性不是版本化的,对这类属性的修改(例如提交日志属性svn:log)将会永久覆盖以前的属性值。因为数据在此可能 丢失,所以Subversion提供了这种钩子(及与之对应的post-revprop-change),因此版本库管理员可用一些外部方法记录变化。作 为对丢失未版本化属性数据的防范,Subversion客户端不能远程修改修订版本属性,除非为你的版本库实现这个钩子。

5.post-revprop-change 版本属性修改

这个钩子与pre-revprop-change对应。事实上,因为多疑的原因,只有存在pre-revprop-change时这个脚本才会执行。当这 两个钩子都存在时,post-revprop-change在修订版本属性被改变之后运行,通常用来发送包含新属性的email。版本库传递四个参数给该 钩子:到版本库的路径,属性存在的修订版本,经过校验的产生变化的用户名,和属性自身的名字。

使用这些钩子最简单的方法就是

拷贝某个脚本,去掉.tmpl扩展名,然后自定义钩子的内容,确定脚本是可运行的。

PS:一定要确保钩子脚本是可执行的。而且名称就是去掉.tmpl后的名字。

另外要注意要使用SVN的钩子一定要开设权限,而且是要用运行SVN的账号进行执行这些钩子

(如果不是可以运行的会提示错误,错误代码为255,其他错误可以自行尝试。。)

我想要做的就是 用户commit 后服务器(测试环境的)自动同步 即做update操作

这里我的web服务器和svn服务器 在一台。(如果是远程的web服务器可以在

先使用ssh命令登入

那么我们需要使用的钩子是post-commit

我们可以使用命令

cp post-commit.tmpl post-commit.tmpl.bak

mv post-commit.tmpl post-commit

(别忘了 chmod 设置为可执行的)

chmod 755 post-commit

vi post-commit

这里我们可以先做一个测试

即在文件最后加上一行

/bin/echo "commit" >> /tmp/commit.out

然后执行commit 操作 看一下 commit.out 是不是多了 commit这个单词

那么编写我们的脚本在post-commit 文件最后添加命令

/usr/bin/svn update /www/project --username m0sh1 --password m0sh1

PS:这里要 加上绝对路径 , update 后面的是checkout 下来的项目路径

如果提示错误 svn: Can't convert string from native encoding to 'UTF-8'

则需要添加一行命令

export lang = en_US.UTF-8

此时去工作目录看下是不是更新了。。

再举个例子,有很多开发人员为了快,往往忽略掉提交日志信息(也可能无意为之),那么我们可以在pre-commit脚本

中做出必须提交日志信息的限制:

REPOS="$1"

TXN="$2"

# Make sure that the log message contains some text.

SVNLOOK=/usr/bin/svnlook

$SVNLOOK log -t "$TXN" "$REPOS" | \

   grep "[a-zA-Z0-9]" > /dev/null || exit 1

# Check that the author of this commit has the rights to perform

# the commit on the files and directories being modified.

commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

# All checks passed, so allow the commit.

exit 0

(上面内容直接就是pre-commit脚本中的内容,那么只需要给pre-commit可执行的权限就可以了。)

之后我们就可以以此,类推出其它想要实现的功能了。

www.xue163.com true /5/55096.html report 3322 svn的使用(二),这篇主要介绍下svn钩子的使用,svn的安装以及配置等可以查看svn的使用(一)我们可以在svn创建的仓库文件夹下看到hooks文件夹。这里面就存放这个各种svn操作同时会执行的脚本文件。(你可以自己查看每个脚本文件,文件开始都有英文的介绍包括功能,...
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. 学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
荐闻 | 学网头条知识问答 | 装修 | 作业 | 荐闻 | 学网头条精彩微信 | 新闻中心 | 软件教室 | 设计大全 | 网络相关 | 英语学习 | 开发编程 | 考试中心 | 参考范文 | 管理文库 | 营销中心 | 站长之家 | IT信息中心 | 商学院 | 数码大全 | 硬件DIY | 企业服务 | 网吧在线 | 问吧 | 百科 | 硬件知识 | 本网视点 | 文库 | 手机 | 平板 | 汽车 | 游戏 | 家电 | 精彩摄影 | 时尚科技 | 现代家居 | IT女人 | 经验 | 每日新闻 | 健康养生 | 图书馆 | 猎奇 | 精彩看点 | 图库 | 新闻中心 | 软件教室 | 设计大全 | 网络相关 | 英语学习 | 开发编程 | 考试中心 | 参考范文 | 管理文库 | 营销中心 | 站长之家 | IT信息中心 | 商学院 | 数码大全 | 硬件DIY | 企业服务 | 网吧在线 | 问吧 | 百科 | 硬件知识 | 本网视点 | 文库 | 手机 | 平板 | 汽车 | 游戏 | 家电 | 精彩摄影 | 时尚科技 | 现代家居 | IT女人 | 经验 | 每日新闻 | 健康养生 | 图书馆 | 精彩微信 | 猎奇 | 精彩看点 | 图库编程 方案 信息windows方案windows answer文档机构教育文档问答中心IT编程数码信息解决方案信息中心IT科技