关于SVN Hooks(钩子)的使用 (3)

来源:互联网 发布:隋唐英雄传java安卓 编辑:程序博客网 时间:2024/05/17 03:47

tags:svn,hooks,svn钩子,tortoisesvn钩子

 

在第一篇中提到过,服务器钩子有9种,客户端钩子有6中,但是细心的人会发现其中服务器和客户端都有关于commit的钩子,那就会引出几个问题:

 

1.他们一样吗?

2.他们之间有什么关系?

3.客户端和服务器端触发序列如何?

为了回答清楚这些问题,必须先看看服务器端的钩子如何运作的,然后再想办法进行研究。

 

服务器端的钩子需要运行的话,需要将原有的×.tmpl改成对应的.bat或者.exe或者其他可执行文件,这个时候svn会识别出可运行的钩子,自动运行。

 

每个tmpl文件其实都是一个文本文件,使用记事本或者notepad++等打开后,可以看到里面的注释和详细的说明,这些是我们可以使用的第一手的帮助文件,当然网上也有大量关于hook的说明和用法,大家可以认真研究。

 

在这里只是为了研究时序,所以我对于大部分的内容先忽略,只是简单的使用来进行信息沟通。

 

1.在hooks目录下,新建三个文本文件,改名为:

 

start-commit.bat

pre-commit.bat

post-commit.bat

 

2.分别在这三个文件中输入:

echo "Start-Commit!" 1>&2
exit 1

 

每个文件中只有红色字体不同,

使用echo将提示信息返回给客户端,在Windows平台下,必须使用“1>&2”作为结尾,

exit 0表示结果正确,exit 1或者其他非零数值,表示结果错误,svn只将错误结果返回给客户端

3.保存

 

4.按照start,pre和post的顺序依次将exit 1改为exit 0进行提交实验,可以发现服务器和客户端的信息交互大概顺序为如下图片所示

 

 

1.他们一样吗?

很显然,客户端和服务端的这些钩子不一样,只是名称一样而已。 

 

2.他们之间有什么关系?

他们之间没有特别大的关系,但是依靠消息的传递互相协作工作。 

 

3.客户端和服务器端触发序列如何?

 

如下图。

原创粉丝点击