作者:sbn3552505 | 来源:互联网 | 2023-09-17 19:11
tags:svn,hooks,svn钩子,tortoisesvn钩子在第一篇中提到过,服务器钩子有9种,客户端钩子有6中,但是细心的人会发现其中服务器和客户端都有关于commit的钩子,那就会引出几
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.客户端和服务器端触发序列如何?
如下图。
![](https://img1.php1.cn/3cd4a/24c6f/5a0/c8f7b7db8ccada43.jpeg)