这是@Lars回答的一些详细说明:
创建触发器作业(我们称之为Trigger),它将检查每个分支到其工作区中的不同目录(顺便说一下,您可以使用--depth=empty
选项在工作区中手动创建这些目录,然后 Subversion 插件仍会检测到更改,但不会如果您有很多分支,请检查代码以节省空间)。
然后,您可以在Trigger作为构建步骤调用的脚本中使用SNV_REVISION_n
(其中n
1、2 等;请参阅Subversion Plugin Documentation )来检查哪个(或多个)分支确实发生了变化(当然,您需要存储结果,将在下一个触发器构建中使用)。
然后您只创建一个将分支名称作为参数的作业(我们称之为Worker )。触发器将使用 wget 或 curl 使用适当的参数(例如分支名称)通过 http调用Worker 。
或者,您可以为每个分支创建一个Trigger作业,并使用Parameterized Trigger Plugin调用Worker。缺点是您需要为每个分支创建一个触发器,并且您将拥有更多的 SVN 轮询(除非您使用SVN push)。另一方面,您不需要编写
检查哪个分支已更改的脚本,并且您可以使用Blame Subversion 插件将变更集从触发器传播到Worker(并且仅与该分支相关的更改)。
Worker将手动更新/签出作为参数传递给它的分支(svn co
等)并构建。
这样一来,您只有一项工作可以完成实际的繁重工作(这意味着更容易维护、更少错误等)
我在我们的构建系统中使用了这种方法。由于我们一次没有超过 2 个活动分支,因此我使用触发器每个分支的方法。