Subversion简明手册--使用hook svn
2010-03-10 22:52
399 查看
使用
hook
,为了方便管理员
控制提交的过程
Subversion
提供了
hook
机制。当特定的
事件发生时,相应的
hook
会被调用,
hook
其实就相当于特定
事件的处理函数。每个
hook
会得到与它所处理的事件相关的参数,根据
hook
的
返回值,
Subversion
会决定是否继续当前的提交过程。
当前
Subversion
提
供了
5
种可以安装的
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
主
要作用是检查提交内容中是否包含说明信息,如果没有就放弃:
由于平台的脚本系统功能毕竟
有限(
unix
下的不太清楚,不过批命令就太差了),建议采用方法
2
、
3
和
4
。
从简易性方面的考虑,推荐方法
3
。因为象
python
就已经提供了
一些常用的功能,如发送邮件。
最后,就是
subversion
以
正在存取代码库的过程的所属用户来执行
hook
。因此,请确保这个用户具有足够的权限,可以访问
hook
可
以直接或间接访问的资源。
hook
,为了方便管理员
控制提交的过程
Subversion
提供了
hook
机制。当特定的
事件发生时,相应的
hook
会被调用,
hook
其实就相当于特定
事件的处理函数。每个
hook
会得到与它所处理的事件相关的参数,根据
hook
的
返回值,
Subversion
会决定是否继续当前的提交过程。
当前
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 的返回值被忽 略。 | 发送邮件通知。 |
只有安装之后才
会被执行,在
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简明手册--客户端使用(命令)
- Subversion简明手册--使用hook svn
- Subversion简明手册--使用hook
- 【奔跑的FPGA】part eight Qsys工具的使用方法简明手册
- Log4net 使用简明手册[转]
- RMAN简明使用手册1[转载]
- openssl简明使用手册
- StrutsTest使用简明手册
- StrutsTest使用简明手册
- StrutsTest使用简明手册
- Selenium简明使用手册(二)——运行TestRunner
- JunitPerf使用简明手册
- WinCVS与CVSNT简明使用手册
- junit使用简明手册
- subversion冲突解决和winmerge使用手册
- Junit使用简明手册
- 转:个人MSN简明使用手册
- Spring2.0简明手册(系列之一 Bean的配置及使用)