Svn 使用提交后挂钩触发Cruise Control.net生成

Svn 使用提交后挂钩触发Cruise Control.net生成,svn,continuous-integration,cruisecontrol.net,Svn,Continuous Integration,Cruisecontrol.net,我正在寻找一种从subversion提交后钩子触发Cruise Control.net构建的方法 我希望这样做是为了在提交后直接启动构建。 我知道这样做的正常方式(轮询服务器),但似乎没有必要在可以使用钩子进行轮询时继续轮询服务器 一种想法是调用仪表板的“强制构建”功能,但这将触发构建,即使所有修改都在主干路径树之外,因此没有进行任何修改来保证构建。您使用“强制构建”的想法可能会起作用 我不理解你对主干路径树之外的修改的担忧? 难道你不能在post-commit钩子中检查这一点,并且只在修改的文

我正在寻找一种从subversion提交后钩子触发Cruise Control.net构建的方法

我希望这样做是为了在提交后直接启动构建。 我知道这样做的正常方式(轮询服务器),但似乎没有必要在可以使用钩子进行轮询时继续轮询服务器

一种想法是调用仪表板的“强制构建”功能,但这将触发构建,即使所有修改都在主干路径树之外,因此没有进行任何修改来保证构建。

您使用“强制构建”的想法可能会起作用

我不理解你对主干路径树之外的修改的担忧? 难道你不能在post-commit钩子中检查这一点,并且只在修改的文件位于/trunk下时才强制生成吗

你考虑过这样做的缺点吗

您有2个变更集。
提交变更集1、生成开始、提交变更集2,并且必须等待生成/测试完成,然后再开始另一个生成生成/测试变更集2。

过滤更改的问题正是CC.NET使用轮询机制的原因。(事实上,在某些情况下,希望在构建中包含来自多个开发人员的新更改。)


“Force build”功能是我能想到的实现这一点的唯一机制,但是如果您只想从主干中进行更改,这将需要您的post-commit钩子通过适当的过滤器设置执行与svn日志(可能是详细日志)等效的操作,那么就触发“Force build”只有在需要的时候才这样做。

我建议不要这样做,但如果你真的想这样做,我会从一开始

URL触发器监视任何URL的更改,因此您可以让提交后钩子更新html文件。或者,如果您使用的是viewvc,则可以让它监视以下url:

http://servername/viewvc/repos?view=rev&revision=HEAD

该URL将在每次提交到SVN后更新

实际上,svnlook将为您提供当前提交中的文件列表,而不是“SVN日志”。然后可以grep字符串/trunk/的列表。我在我的一篇帖子中就这么做了。(修正了评论中的拼写错误)我已经考虑过缺点,但我的典型场景(团队规模小,构建速度相对较快)优点会更大。聚合生成使您更难知道哪个版本破坏了生成。为此使用URL触发器与使用标准修改触发器基本相同。这仍然是一个轮询操作。顺便说一句,我可能也不会这么做。