Subversion 提交后钩子
我遇到了一个情况,正在考虑使用Subversion(svn)作为一个项目的版本控制系统。我想弄清楚是否可以在提交后(post commit)通过一个钩子(hook)来记录用户、文件、时间(也许还有消息),并把这些信息写入一个外部文件(比如csv格式)或者一个MySQL数据库。
一旦我能搞清楚如何调用这个提交后的钩子,把输出写入文件,我就可以修改我的问题追踪器/项目应用程序,基于用户角色以及版本库文件的成功或失败来实现一个基本的工作流程。
如果能提供一些简短的示例或指引,那就太好了。
我的测试环境是在CentOS 5上运行Subversion(svnserve),使用的脚本语言是PHP和Python。
2 个回答
0
确实是很有可能的,在你的代码库根目录下应该有一个叫做 hooks 的文件夹,里面应该有一个名为 post-commit 的文件(如果没有,就自己创建一个)。把你想要的 bash 代码放进去,这样每次提交代码后它就会自动执行。
需要注意的是,有两个变量会传递给这个脚本,$1 是代码库的名称,$2 是版本号(我想是这个意思)。你可以利用这两个变量来执行一些 svn 命令或查询,从中提取所需的数据,然后随心所欲地处理这些数据。
0
我觉得这是可能的,但你需要做一些工作来获取用户名、日期和提交信息。
Subversion在提交后会调用一个叫做post-commit的钩子,并传入仓库路径和刚刚提交的版本号作为参数。
为了获取你想要的信息,你需要使用一个叫做svnlook
的可执行文件,这个文件是和Subversion一起提供的。
你可以查看repo\hooks\post-commit.tmpl,这里有关于如何使用它的比较清晰的说明。
另外,看看svnlook help
,使用起来并不难。