提交Subversion时可以运行脚本吗?
时间:2020-03-06 14:46:55 来源:igfitidea点击:
我想运行一个脚本,为我的php项目构建文档。它基本上只是使用wget来运行phpdoc。
解决方案
这是有关SVN挂钩的相当广泛的教程
(回答我自己的问题,我只是以为别人也想知道)。是的,TortoiseSVN也支持它。我们要查找的词是"钩子"。
对于TortoiseSVN,打开设置和"挂钩脚本"。单击"添加...",然后选择post_commit_hook(在提交完成后运行)。然后添加我们正在运行的任何脚本以及该脚本的工作路径。
我使用了一个批处理文件并称为wget(有一个Windows版本已移植,用google搜索)。为了使wget将来自phpdoc的日志存储在一个特定路径中,必须指定完整路径,否则日志将存储在提交位置的当前文件夹中,因此我的批处理文件如下所示:
SET BUILDLOG=%~dp0%build_log.html rem %~dp0 returns the full working path *of this script* SET PHPDOCURL=http://localhost/PHPDocumentor/docbuilder SET PHPDOCCONFIG=yourconfigfile wget -O %BUILDLOG% "%PHPDOCURL%/builder.php?setting_useconfig=%PHPDOCCONFIG%&setting_output=HTML%3ASmarty%3Adefault&ConverterSetting=HTML%3ASmarty%3Adefault&setting_title=Generated+Documentation&setting_defaultpackagename=default&setting_defaultcategoryname=default&interface=web&dataform=true"
现在,无论何时提交,批处理脚本都将被调用。当然,我们也可以将php用作命令行工具,但是我没有使用phpdoc来研究它,我只是在这方面采取了阻力最小的方法。
我们可能想查看Phing,以获取完整的构建脚本工具。我们可以在一处管理提交,文档和其他与构建相关的活动。
使用SVN挂钩的替代方法是使用连续集成引擎。就个人而言,我是哈德森的粉丝。 CruiseControl是经典的,但还有很多其他的。
为什么要使用持续集成引擎?通常,它们比仅使用SVN钩子(如果要切换为使用Mercurial,Git等该怎么办?)更强大,功能丰富且可移植。