我有一个中央hg存储库,里面有多个子项目。有点像这样:
/Hg_central
/subproject-a
/subproject-b
/...
我正在尝试设置一个cc.net服务器,以便仅在其目录更新时才构建子项目。
我当前的问题是,一旦其中一个子项目被更新和构建,服务器将找不到其他子项目的任何修改,因为mercurial已更新整个存储库。除非已完成另一个更新,否则CC.NET不会构建其他子项目。我尝试过使用inclusFilters但没有成功。我也无法为每个子项目分配一个单独的WorkingDirectory。为了实现这一点,我错过了什么?
我的ccnet配置文件目前是这样的:
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<project name="subproject-a">
<workingDirectory>G:\Hg-clone\</workingDirectory>
<triggers>
<intervalTrigger name="continuous" seconds="60" buildCondition="IfModificationExists" initialSeconds="20" />
</triggers>
<sourcecontrol type="filtered">
<inclusionFilters>
<pathFilter>
<pattern>/subproject-a/**/*</pattern>
</pathFilter>
</inclusionFilters>
<sourceControlProvider type="hg" autoGetSource="true" >
<repo>http://myserver/myproject</repo>
<multipleHeadsFail>false</multipleHeadsFail>
</sourceControlProvider>
</sourcecontrol>
<tasks>
<exec>
<executable>mybuild.bat</executable>
</exec>
</tasks>
</project>
<project name="subproject-b">
<workingDirectory>G:\Hg-clone\</workingDirectory>
<triggers>
<intervalTrigger name="continuous" seconds="60" buildCondition="IfModificationExists" initialSeconds="20" />
</triggers>
<sourcecontrol type="filtered">
<inclusionFilters>
<pathFilter>
<pattern>/subproject-b/**/*</pattern>
</pathFilter>
</inclusionFilters>
<sourceControlProvider type="hg" autoGetSource="true" >
<repo>http://myserver/myproject</repo>
<multipleHeadsFail>false</multipleHeadsFail>
</sourceControlProvider>
</sourcecontrol>
<tasks>
<exec>
<executable>mybuild.bat</executable>
</exec>
</tasks>
</project>
</cruisecontrol>
答案 0 :(得分:0)
使用svn这就像一个魅力,所以我有点惊讶mercurial不是。
无论哪种方式,一种可能的解决方法是定义一个项目,其目的是更新源,而所有其他项目应该具有该项目的Project trigger。
HTH