Как да накарам ccnet да актуализира множество проекти независимо в едно mercurial repo?

Имам централно hg хранилище с множество подпроекти в него. Донякъде като това:

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

Опитвам се да настроя сървър cc.net, така че да изгражда подпроект САМО ако директорията му е актуализирана.

Текущият ми проблем е, че след като един от подпроектите бъде актуализиран и изграден, сървърът няма да намери никакви модификации за другите подпроекти, тъй като mercurial е актуализирал цялото хранилище. CC.NET няма да изгражда другите подпроекти, освен ако не е направена друга актуализация. Опитах се да използвам inclusionFilters без успех. Също така не мога да си позволя да имам отделен 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>

person TwoMasters    schedule 29.04.2011    source източник


Отговори (1)


Със svn това работи като чар, така че съм малко изненадан, че mercurial не е така.

Така или иначе, възможно заобиколно решение е да се дефинира един проект, чиято цел е да актуализира източника, а всички останали проекти трябва да имат Задействане на проекта за този проект.

HTH

person Hertzel Guinness    schedule 03.06.2011
comment
Проблемът с mercurial е, че не можете да актуализирате само подпапка, трябва да актуализирате цялото репо наведнъж, така че CC.NET изглежда не се справя правилно с това. Изпробвах вашето решение и изглежда работи добре! Благодаря много! - person TwoMasters; 06.06.2011