我可以在提交颠覆时运行脚本吗?

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的相当广泛的教程

【讨论】:

以上是关于我可以在提交颠覆时运行脚本吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何监视远程只读颠覆存储库的提交更改?

构建 Qt 一旦添加到颠覆?

如何在 Jenkins 中使用 Groovy 脚本设置颠覆工作区格式?

尝试使用 Eclipse 颠覆性插件提交时获取“只能在版本资源上执行 CHECKOUT”

作为错误用户提交的更改? TortoiseSVN,颠覆

颠覆大型回购导入/结帐