TeamCity SVN Checkout规则

时间:2015-01-13 13:10:56

标签: svn teamcity

我在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\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:documentation说“对于每个文件,如果包含该文件,则将应用最具体的规则,无论规则的列出顺序如何。”那么如果我说DEV-Main / src作为一个整体,然后还指定src / Engine,那么第二个应该被选中了吗?

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

1 个答案:

答案 0 :(得分:0)

我终于开始工作了。诀窍是简单地排除那些你要从另一个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

我相信只有当您明确指定排除规则时," 对于每个文件,如果包含该文件,将应用最具体的规则,而不管列出规则的顺序。"起作用。 请注意,添加排除规则后,您无法在代理属性上使用checkout。在服务器上使用"自动"