Subversion钩子(hooks)
关于subversion服务器端钩子的介绍:
我们经常提到的svn hooks(钩子)是一组“外挂”脚本程序, 是svn提供的一组由svn事件触发的特别有用的程序。 这些程序在服务器端执行,可以提供svn之外的一些附加功能。 钩子可以调用批处理文件、可执行文件或者一些类似于perl、python等的脚本。
svn服务端有9种钩子,
分别是:
A. 关于锁定的2种
a1. pre-lock
a2. post-lock
B. 关于解锁的2种
b1. pre-unlock
b2. post-unlock
C. 关于提交的3种
c1. start-commit
c2. pre-commit
c3. post-commit
D. 关于属性的2种
d1. pre-revprop-change
d2. post-revprop-change
在Svn的仓库目录D:\svn\hooks下面,默认有9种钩子的模板文件:
这些钩子模板文件的后缀是tmpl,文件内容可以用一般的文本编辑器进行修改。 如果我们在window2003的svn服务端要实现某种的钩子, 只要修改对应的钩子模板文件内容,加入自己的代码, 然后将文件另存为同名但后缀为bat的可执行批处理文件即可。
在本文中,我们主要介绍两个最常用的钩子及应用:
利用pre-commit钩子实现svn提交日志说明不能为空,至少10个字符
利用post-commit钩子实现svn提交修改代码实时同步到web服务器
1. 利用pre-commit钩子实现svn提交日志长短检查
避免开发人员对于提交的更改不添加任何说明或注释,
要求开发人员对于每一次的提交修改都要作出必要的说明或注释, 说明或注释的文字不能少于10个字符。
在Svn的仓库目录D:\svn\hooks下面创建钩子文件:pre-commit.bat 文件内容如下所示:
在本文中,我们主要介绍两个最常用的钩子及应用:
利用pre-commit钩子实现svn提交日志说明不能为空,至少10个字符 利用post-commit钩子实现svn提交修改代码实时同步到web服务器
1. 利用pre-commit钩子实现svn提交日志长短检查
避免开发人员对于提交的更改不添加任何说明或注释,
要求开发人员对于每一次的提交修改都要作出必要的说明或注释, 说明或注释的文字不能少于10个字符。
在Svn的仓库目录D:\svn\hooks下面创建钩子文件:pre-commit.bat 文件内容如下所示:
2. 利用post-commit钩子实现svn提交修改代码实时同步到web服务器
对于一般的中小型开发团队,很多时候,
既在window2003中搭建有web测试服务器,用于开发演示及功能测试, 又在其上建立svn代码仓库,用于开发小组的代码维护及开发。
在这种情况下,我们会希望 ——
如果开发人员在svn中提交或更新了新的代码,
svn的服务端能够实时将更新后的内容同步到web环境中, ok,这个实现很简单!
假定我们web测试服务器的代码目录为D:\www
首先我们需要用svn对web的D:\www目录checkout初始化一次:
在Svn的仓库目录D:\svn\hooks下面创建钩子文件:post-commit.bat
关于subversion服务器端钩子的介绍:
我们经常提到的svn hooks(钩子)是一组“外挂”脚本程序, 是svn提供的一组由svn事件触发的特别有用的程序。 这些程序在服务器端执行,可以提供svn之外的一些附加功能。 钩子可以调用批处理文件、可执行文件或者一些类似于perl、python等的脚本。
svn服务端有9种钩子,
分别是:
A. 关于锁定的2种
a1. pre-lock
a2. post-lock
B. 关于解锁的2种
b1. pre-unlock
b2. post-unlock
C. 关于提交的3种
c1. start-commit
c2. pre-commit
c3. post-commit
D. 关于属性的2种
d1. pre-revprop-change
d2. post-revprop-change
在Svn的仓库目录D:\svn\hooks下面,默认有9种钩子的模板文件:

这些钩子模板文件的后缀是tmpl,文件内容可以用一般的文本编辑器进行修改。 如果我们在window2003的svn服务端要实现某种的钩子, 只要修改对应的钩子模板文件内容,加入自己的代码, 然后将文件另存为同名但后缀为bat的可执行批处理文件即可。
在本文中,我们主要介绍两个最常用的钩子及应用:
利用pre-commit钩子实现svn提交日志说明不能为空,至少10个字符
利用post-commit钩子实现svn提交修改代码实时同步到web服务器
1. 利用pre-commit钩子实现svn提交日志长短检查
避免开发人员对于提交的更改不添加任何说明或注释,
要求开发人员对于每一次的提交修改都要作出必要的说明或注释, 说明或注释的文字不能少于10个字符。
在Svn的仓库目录D:\svn\hooks下面创建钩子文件:pre-commit.bat 文件内容如下所示:

在本文中,我们主要介绍两个最常用的钩子及应用:
利用pre-commit钩子实现svn提交日志说明不能为空,至少10个字符 利用post-commit钩子实现svn提交修改代码实时同步到web服务器
1. 利用pre-commit钩子实现svn提交日志长短检查
避免开发人员对于提交的更改不添加任何说明或注释,
要求开发人员对于每一次的提交修改都要作出必要的说明或注释, 说明或注释的文字不能少于10个字符。
在Svn的仓库目录D:\svn\hooks下面创建钩子文件:pre-commit.bat 文件内容如下所示:
2. 利用post-commit钩子实现svn提交修改代码实时同步到web服务器
对于一般的中小型开发团队,很多时候,
既在window2003中搭建有web测试服务器,用于开发演示及功能测试, 又在其上建立svn代码仓库,用于开发小组的代码维护及开发。
在这种情况下,我们会希望 ——
如果开发人员在svn中提交或更新了新的代码,
svn的服务端能够实时将更新后的内容同步到web环境中, ok,这个实现很简单!
假定我们web测试服务器的代码目录为D:\www
首先我们需要用svn对web的D:\www目录checkout初始化一次:

在Svn的仓库目录D:\svn\hooks下面创建钩子文件:post-commit.bat
文件内容如下所示:
1
2
3
4
5
|
@
echo
off
SET REPOS=
"%1"
SET TXN=
"%2"
"C:\Program Files\Subversion\bin\svn.exe"
update
"D:\www"
--quiet --username www --password wwwpassword
|