你是否为了开发人员提交了一大堆内容,但是对修改了什么只字不提?
本文将减轻你的烦恼,当然不可能根除,填写内容的质量是没法检测的.
Subversion提供了一种叫做"Hook"的东西,当然对于开发人员来说这很熟悉的概念了.
Subversion提供的Hook支持多种语言/脚本,例如shell脚本,python,perl,exe等等
我们暂且不管其他步骤的Hook,我们只研究这个提交前的检测,在Subversion中叫做"pre-commit" ,默认Subversion提供了一些hook的模板,位于每个仓库的hooks目录下,打开模板可以看到默认提供了一些功能,按照自己的需要修改即可.
例如我的Subversion服务是用Apache做验证的,那么就需要去掉相关的验证.
为了用户用户,还需要加上自己的一些信息提示,告诉用户为什么不能提交成功.
默认的pre-commit部分内容是这样的:
从pre-commit.tmpl的最上一行(这里没贴出),可以知道这个是shell脚本.
检测的步骤主要包括:
- 提交的log里面必须包含ascii字符,对于英语国家来说,这足够了,但是对于中文用户来说,这个需要改
- 没有给用户任何提示信息
- 利用commit-access-control来检测权限控制,在这里我们不需要了
于是我们开始动手术,总之很简单吧,不过也遇到很多问题,几个主要关键点在于:
- 提交的log必须要包含非空格字符
- 报告给用户错误原因
我开始是这样写的:
可惜就是不知道为什么不行,总是提交成功,似乎 exit 1没有被执行.
最后改成了这样,更方便一点了,可以随意添加内容:
把这个文件命名为pre-commit,放在仓库的hooks目录下,文件的拥有者为仓库目录的拥有者,改为可以执行的权限.
然后试试提交吧,写备注和不写备注,是否ok? |