TeamCity SVN签出规则

TeamCity SVN签出规则,svn,teamcity,Svn,Teamcity,我在SVN中有以下结构 Code |- DEV-BusinessLayer |- DEV-DataModel |- DEV-Engine |- Dev-Main |- src |-BusinessLayer |-DataModel |-Engine |-Engine.sln |- lib 在构建解决方案文件之前,我需要将DEV Main中的Engine、BusinessLayer和Datamodel子目录切换到DE

我在SVN中有以下结构

Code
|- DEV-BusinessLayer
|- DEV-DataModel
|- DEV-Engine
|- Dev-Main
    |- src
        |-BusinessLayer
        |-DataModel
        |-Engine
        |-Engine.sln
    |- lib
在构建解决方案文件之前,我需要将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\work\6148493fca83a584
[18:20:00][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src\BusinessLayer
[18:20:00][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src\DataModel
[18:20:00][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src\Engine
[18:20:01][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\lib
[18:20:04][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src
[18:20:04][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src\Engine
[18:20:04][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src
[18:20:04][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src\BusinessLayer
[18:20:05][Updating sources] Updating C:\BuildAgent\work\6148493fca83a584\src
更新1:上面说“对于每个文件,如果包含该文件,则将应用最具体的规则,无论规则以什么顺序列出。”因此,如果我说DEV Main/src作为一个整体,然后还指定src/Engine,那么应该选择第二个规则,对吗


更新2:SVN外部是否指这种替换目录?我是否应该设置这些文件夹的属性,使其成为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
我相信,只有当您明确指定排除规则时,“对于每个文件,如果包含该文件,则最具体的规则将适用,而不管这些规则以什么顺序列出。”这一点才会生效。 请注意,添加排除规则后,将无法使用代理上的签出属性。使用“在服务器上自动”