我可以在提交颠覆时运行脚本吗?
Posted
技术标签:
【中文标题】我可以在提交颠覆时运行脚本吗?【英文标题】:Can I run a script when I commit to subversion? 【发布时间】:2010-09-13 10:48:34 【问题描述】:我想运行一个脚本来为我的 php 项目构建文档。它基本上只是使用 wget 来运行 phpdoc。
【问题讨论】:
【参考方案1】:使用 SVN 挂钩的替代方法是使用持续集成引擎。就个人而言,我是Hudson 的粉丝。 CruiseControl 是经典,但others 太多了。
为什么要使用持续集成引擎?一般来说,它们比简单地使用 SVN 钩子更强大、功能丰富且可移植(如果您想切换到使用 Mercurial、Git 等怎么办?)。
【讨论】:
【参考方案2】:您可能想查看Phing 以获取完整的构建脚本工具。您可以在一处管理提交、文档和其他与构建相关的活动。
【讨论】:
【参考方案3】:(回答我自己的问题,我只是认为其他人也想知道)。是的,而且 TortoiseSVN 也支持它。您正在寻找的词是“钩子”。
对于 TortoiseSVN,打开设置和“挂钩脚本”。单击“添加...”并选择 post_commit_hook(用于在提交完成后运行)。然后添加您正在运行的任何脚本和脚本的工作路径。
我使用了一个批处理文件并称为 wget(有一个 windows 版本移植,谷歌它)。要让 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 研究过——我只是选择了阻力最小的路径。
【讨论】:
【参考方案4】:这是关于SVN hooks的相当广泛的教程
【讨论】:
以上是关于我可以在提交颠覆时运行脚本吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jenkins 中使用 Groovy 脚本设置颠覆工作区格式?