2011-04-29 2 views
3

여러 개의 하위 프로젝트가있는 중앙 hg 리포지토리가 있습니다. 다소 이런 : 나는 그것의 디렉토리가 업데이트 된 경우에만 하위 프로젝트를 빌드하도록 cc.net 서버를 설정하려고단일 수은 리포에서 ccnet 여러 프로젝트를 독립적으로 업데이트하는 방법은 무엇입니까?

/Hg_central 
    /subproject-a 
    /subproject-b 
    /... 

.

현재 문제는 하위 프로젝트 중 하나가 업데이트되고 빌드 된 후, mercurial이 전체 ​​저장소를 업데이트했기 때문에 서버가 다른 하위 프로젝트에 대한 수정 사항을 찾지 못합니다. CC.NET은 다른 업데이트가 완료되지 않는 한 다른 하위 프로젝트를 빌드하지 않습니다. 나는 성공적으로 inclusionFilters를 사용해 보았습니다. 또한 각 하위 프로젝트마다 별도의 WorkingDirectory를 가질 여유가 없습니다. 이것을 가능하게하기 위해 무엇을 놓치고 있습니까?

내 ccnet 설정 파일은 다음과 같이 현재 : SVN으로

<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

이 마법처럼 작동하므로 내가 조금 수은 놀랐어요되어 없습니다.

어느 경우 든 가능한 해결 방법은 소스를 업데이트하는 것이 목적 인 단일 프로젝트를 정의하고 다른 모든 프로젝트는 해당 프로젝트에 대해 Project trigger이어야합니다.

HTH

+0

수은의 문제는, 당신이 한 번에 전체의 repo를 업데이트해야 CC.NET을 올바르게 처리하지 않는 것 있도록 하위 폴더를 업데이트 할 수 있습니다. 해결책을 시도했지만 문제가없는 것 같습니다. 감사합니다. – TwoMasters

관련 문제