TeamCity SVN Checkout 规则

TeamCity SVN Checkout rules

我在SVN中有如下结构

Code
|- DEV-BusinessLayer
|- DEV-DataModel
|- DEV-Engine
|- Dev-Main
    |- src
        |-BusinessLayer
        |-DataModel
        |-Engine
        |-Engine.sln
    |- lib

在构建解决方案文件之前,我需要将 SVN 将 DEV-Main 中的 Engine、BusinessLayer 和 Datamodel 子目录切换到 DEV-ENgine、DEV-BusinessLayer 和 DEV-DataModel。这个想法是,如果我切换,我在开发分支上工作,如果我不切换,我在主分支上。请注意,只有一个解决方案文件。

我正在尝试在 TeamCity 中添加以下签出规则,但签出的文件不是来自正确的分支(我登录到 teamcity 服务器,获取文件并与我的手动签出进行比较)。令人不安的是,随机它是正确的版本。这些是我的结帐规则,我应该更改什么以确保正确结帐?

+:Code/DEV-BusinessLayer=>./src/BusinessLayer
+:Code/DEV-DataModel=>./src/DataModel
+:Code/DEV-Engine=>./src/Engine
+:Code/DEV-Main/src=>./src
+:Code/DEV-Main/lib=>./lib

这是我在构建日志中看到的,我怀疑 src\ 文件夹多次出现。 DEV-* 文件夹是否以某种方式被覆盖?

[18:20:00][Updating sources] Removing C:\BuildAgent\work48493fca83a584
[18:20:00][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src\BusinessLayer
[18:20:00][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src\DataModel
[18:20:00][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src\Engine
[18:20:01][Updating sources] Updating C:\BuildAgent\work48493fca83a584\lib
[18:20:04][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src
[18:20:04][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src\Engine
[18:20:04][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src
[18:20:04][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src\BusinessLayer
[18:20:05][Updating sources] Updating C:\BuildAgent\work48493fca83a584\src

更新 1:documentation 说 "For each file the most specific rule will apply if the file is included, regardless of what order the rules are listed in." 所以如果我说 DEV-Main/src 作为一个整体,然后还指定 src/Engine,第二个应该选对?

更新2:SVN externals指的是这种替换目录吗?我是否应该设置这些文件夹的属性以使它们成为 SVN 外部文件?

我终于让它工作了。诀窍是简单地(明确地)排除那些您要从另一个 svn 位置替换的目录。所以我的结帐规则变成了:

+:Code/DEV-Main/src=>./src
+:Code/DEV-Main/lib=>./lib

-:Code/DEV-Main/src/BusinessLayer
-:Code/DEV-Main/src/DataModel
-:Code/DEV-Main/src/Engine

+:Code/DEV-BusinessLayer=>./src/BusinessLayer
+:Code/DEV-DataModel=>./src/DataModel
+:Code/DEV-Engine=>./src/Engine

我相信只有当您明确指定排除规则时,“对于每个文件,如果包含该文件,则最具体的规则将适用,无论这些规则以何种顺序列出。”开始。 请注意,一旦添加了排除规则,就无法在代理 属性 上使用结帐。使用 "Automatically on server"