我们正在使用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)
答案 0 :(得分:0)
嗯,这是一个正确的现象。由于您没有清理工作区,因此构建代理上仍存在此1.txt。当构建控件处理构建时,它将获得此版本。当然它会返回xxx已经存在。
请参阅MSDN的说明。
清理工作区
指定是否清除工作区或Git仓库 构建代理在处理构建之前选择True以删除 构建之前的所有现有输出和源代码文件 加工强>
选择True以在处理构建之前删除所有现有输出和源代码文件。如果您希望编译过程尽可能彻底地暴露构建过程中的问题,请使用此选项。如果您希望编译过程如此,请使用此选项 尽可能彻底地揭露构建过程中的问题。
来源:MSDN