Subversion简明手册--使用hook svn (事件处理)
来源:互联网 发布:电子商务专用软件 编辑:程序博客网 时间:2024/05/20 18:48
当前 Subversion 提 供了 5 种可以安装的 hook :
事 件名
时 机
与 hook 交 互
一 般用途
start-commit
事务创建之前。
传给 hook 的 参数:
- 参 数 1 , 代码库路径。
- 参 数 2 , 试图提交的用户名。
hook 的返回值:非 0 则 终止。
判断用户是否有权限进行提交 操作。
pre-commit
事务完成,但未提交。
- 参 数 1 , 代码库路径。
- 参 数 2 , 事务名。
hook 的返回值:非 0 则 终止提交,操作回滚。
对提交内容进行检查。如要求 提交必须填写提交信息。
post-commit
事务提交完毕,新的修订版被 创建。
传给 hook 的 参数:
- 参 数 1 , 代码库路径。
- 参 数 2 , 刚创建的修订版号。
hook 的返回值被忽 略。
发送邮件通知,或备份代码 库。
pre-revprop-change
修改修订版属性(如提交时提 供的信息 message )之前。
由于修订版属性一旦修改就会 永久的丢失,除非安装这个事件的 hook , subversion 的 客户端不允许远程修改修订版属性。
传给 hook 的 参数:
- 参 数 1 , 代码库路径。
- 参 数 2 , 要修改的修订版号。
- 参 数 3 , 操作用户名。
- 要 修改的属性。
hook 的返回值:非 0 则 终止。
保存修订版属性的改变记录。
post-revprop-change
修订版属性值被修改之后。
如果没有安装 pre-revprop-change 的 hook , 这个事件的 hook 不会被执行。
传给 hook 的 参数:
- 参 数 1 , 代码库路径。
- 参 数 2 , 要修改的修订版号。
- 参 数 3 , 操作用户名。
- 要 修改的属性。
hook 的返回值被忽 略。
发送邮件通知。
hook 只有安装之后才 会被执行,在 Subversion 中这一过程相当简单。只需将 hook 放 在代码库目录的 hooks 子目录下即可。为了能顺利地找到它们, Subversion 规 定 hook 的 命名与上表的事件名同名,如 pre-commit 的 hook 名就是 pre-commit (请 确保它是可执行的,在 windows 平台下需要添加对应的扩展名,如 bat 、 exe 、 com 。)。 创建代码库之后, Subversion 会创建对应的这 5 个事件的 hook 模 版。选取所需的模版,然后将其改名,在修改内容。这样 hook 就可以工作了,当 然请先确保 hook 本身能正常的执行。
hook 的编写非常简 单,通常的做法:
- 法 1 : 使用所在平台的脚本语言,如 unix 下的 shell ,或 windows/dos 的 批处理命令。
- 法 2 : 使用相关的语言,如 c 。
- 法 3 : 使用脚本语言,如 Python 或 perl 等实现主体。然后 通过法 1 来调用。
- 法 4 : 使用相关的语言实现主体,然后通过法 1 来调用。
这里给出在 windows 下 使用 bat 的例子,它实现了 pre-commit hook 主 要作用是检查提交内容中是否包含说明信息,如果没有就放弃:
set REPOS=%1
set TXN=%2
set SVNLOOK="D:/Program Files/Subversion/bin/SVNLOOK.exe"
rem 此处不太严格, 因为把空格也算了
FOR /F "usebackq delims==" %%i IN (`%%SVNLOOK%% log -t %TXN% %REPOS%`) DO exit 0
exit 1
由于平台的脚本系统功能毕竟 有限( unix 下的不太清楚,不过批命令就太差了),建议采用方法 2 、 3 和 4 。 从简易性方面的考虑,推荐方法 3 。因为象 python 就已经提供了 一些常用的功能,如发送邮件。
最后,就是 subversion 以 正在存取代码库的过程的所属用户来执行 hook 。因此,请确保这个用户具有足够的权限,可以访问 hook 可 以直接或间接访问的资源。
- Subversion简明手册--使用hook svn (事件处理)
- Subversion简明手册--使用hook svn
- Subversion简明手册--使用hook svn
- Subversion简明手册--使用hook svn
- Subversion简明手册--使用hook
- (转)Subversion简明手册--客户端使用(命令)
- subversion钩子svn hook
- Subversion(SVN)使用
- SVN (subversion) 简明实用课程
- SVN (subversion) 简明实用课程
- SVN (subversion) 简明实用课程
- SVN (subversion) 简明实用课程
- SVN (subversion) 简明实用课程
- 安装SVN简明手册
- Junit使用简明手册(转载)
- Radasm使用简明手册(中文版)
- junit使用简明手册
- EasyMock使用简明手册
- dynamic_cast <new_type> (expression)
- iOS开发自动布局代码篇NSLayoutConstraint
- Dashgo-D1 带陀螺仪的建图导航
- Android Apk 文件反编译和重新打包的过程分析
- [LeetCode]138. Copy List with Random Pointer
- Subversion简明手册--使用hook svn (事件处理)
- View 相关介绍
- 【BZOJ 4199】[Noi2015]品酒大会 后缀自动机构造后缀树+dp
- javascript中的正则表达式
- 仿射变换&透视变换
- eclipse无法进入调试程序
- 编译安装vim-8.0 (centos)
- 关于服务器operating system not found的一些问题
- JVM如何判断一个Java对象是否可以回收