TFS Gated Build:为什么它在构建工作区获取最新代码之前将sheveset与现有构建工作区进行比较?

时间:2016-01-15 00:35:29

标签: tfs build

我们正在使用TFS门控签入,并且在Gated构建定义中,CleanWorkspace选项设置为"输出"。

我们最近发现,如果您重命名文件,例如将1.txt重命名为2.txt,通过Gated build进行检查。然后将1.txt添加为新文件,尝试通过Gated build进行检入。门控构建将失败并抱怨文件1.txt已存在(请参阅下面的详细错误)。

从我的调查来看,看起来Gated构建会将sheveset与现有构建工作区版本进行比较,但不会将源控件中的最新代码进行比较。 有没有人见过类似的问题?解决办法是什么? (我们不希望将CleanWorkspace设置为All,因为它非常耗时)。

提前致谢!

  

错误消息:项目D:... \ 1.txt已存在。货架   Gated_XXX for request XXX无法取消搁置。例外消息:   TF400921:此版本没有搁置的搁架。构建   不会继续(类型NoShelvesetException)异常堆栈跟踪:   在System.Activities.Statements.Throw.Execute(CodeActivityContext   上下文)   System.Activities.CodeActivity.InternalExecute(ActivityInstance   实例,ActivityExecutor执行程序,BookmarkManager bookmarkManager)   在   System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor   executor,BookmarkManager bookmarkManager,Location resultLocation)

1 个答案:

答案 0 :(得分:0)

嗯,这是一个正确的现象。由于您没有清理工作区,因此构建代理上仍存在此1.txt。当构建控件处理构建时,它将获得此版本。当然它会返回xxx已经存在。

请参阅MSDN的说明。

  

清理工作区

     

指定是否清除工作区或Git仓库   构建代理在处理构建之前选择True以删除   构建之前的所有现有输出和源代码文件   加工

     

选择True以在处理构建之前删除所有现有输出和源代码文件。如果您希望编译过程尽可能彻底地暴露构建过程中的问题,请使用此选项。如果您希望编译过程如此,请使用此选项   尽可能彻底地揭露构建过程中的问题。

     

来源:MSDN