Как заставить ccnet обновлять несколько проектов независимо в одном репозитории Mercurial? - PullRequest
3 голосов
/ 29 апреля 2011

У меня есть центральный репозиторий hg с несколькими подпроектами.Примерно так:

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

Я пытаюсь настроить сервер cc.net так, чтобы он строил подпроект ТОЛЬКО, если его каталог обновлен.

Моя текущая проблема однаждыиз подпроектов был обновлен и собран, сервер не найдет никаких изменений для других подпроектов, так как Mercurial обновил весь репозиторий.CC.NET не будет создавать другие подпроекты, если не будет выполнено другое обновление.Я пытался использовать includeFilters безуспешно.Я также не могу позволить себе иметь отдельный рабочий каталог для каждого подпроекта.Чего мне не хватает, чтобы сделать это возможным?

Мой конфигурационный файл 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>

1 Ответ

0 голосов
/ 03 июня 2011

С SVN это работает как шарм, поэтому я немного удивлен, что Mercurial не так.

В любом случае, возможный обходной путь - это определить один проект, целью которого является обновление источника, и для всех других проектов должен быть Триггер проекта для этого проекта.

НТН

...