如何为分支设置gated check in

时间:2011-11-15 11:29:52

标签: tfs msbuild tfs2010

我的项目有两个构建定义,它有两个分支。 发展与生活。

我已经为开发分支设置了手动构建,这运行得很好。 现在我想为实时分支设置门控检查,只有当开发人员进入实时分支时才会触发。这将映射到项目的根目录,而不仅仅是一个特定的分支,并在我将项目映射到构建之后。

然而,每当开发人员也进入开发分支时,我的设置就会被触发。

我做错了什么?

我的项目布局:

 $/KCTC/Lib/         (Contains all referenced dlls)    
 $/KCTC/Projects/    (contains branches)
 $/KCTC/Projects/Development
 $/KCTC/Projects/Live

分支怎么看不到Lib引用的文件:

  

考虑   “........ \ Lib \ fluentnhibernate-NH3.1-1.2 \ Iesi.Collections.dll”,但   它不存在。

我的实时门控版本的设置: 此外,我在项目中的NUnit中创建了单元测试,这是失败的,因为

  

Queries \ StarMetrics \ 20110613 \ StageTestSuite.cs(2):类型或   找不到命名空间名称“NUnit”(您是否错过了使用   指令或程序集引用?)

工作空间定义: enter image description here

和我的流程定义

enter image description here

3 个答案:

答案 0 :(得分:3)

对于为构建定义定义的工作空间映射的任何条目下存在的源控件项的任何尝试签入,都将触发门控签入。在你的情况下,你有

$/KCTC/Projects/    (contains branches) <-- remove this
$/KCTC/Projects/Development <-- remove this as well
$/KCTC/Projects/Live  <-- this should contain everything you need for the Live branch correct?

其中基本上说,“对此文件夹中包含的任何内容执行gated checkins”...您需要删除指示的行,以确保在从开发分支或父级检入代码时不会触发门控签入包含所有分支的文件夹。

至于你丢失的Lib二进制文件,我敢打赌相对路径略有不同。我会在构建机器上进行物理检查以确认。

答案 1 :(得分:1)

查看您的工作区定义屏幕截图,看来您通过在构建代理文件夹中包含“\ Moose”来破坏构建服务器上的相对路径。

你想:

$ / KCTC / Lib | $(SourceDir)\库
$ / KCTC / Projects / Live | $(SourceDir)\项目\活

答案 2 :(得分:1)

好的,解决方案是:

我已经去了并且手动添加了我需要进行门控检查的所有项目。我可以在哪里指定自定义程序集的版本控制路径。

注意 如果您有多个具有相同名称的dll,则会在tfs中出现错误(这不会影响构建但会出错)

enter image description here

或者替代方案是将项目所需的dll添加到构建资源中。

enter image description here