我们有一个NAnt脚本来更新我们在TFS中的"预构建"程序集作为我们的TeamCity构建项目之一.构建由其他构建触发.它会进行TF检查,移动一些文件,然后进行TF检查.
相关目标(tf解析为TF.exe的路径):
<target name="checkin.assemblies">
<exec program="${tf}">
<arg value="checkin" />
<arg value="${dir.assemblies}" />
<arg value="/comment:${message}." />
<arg value="/noprompt" />
<arg value="/recursive" />
</exec>
</target>
Run Code Online (Sandbox Code Playgroud)
我们经常得到:
Checking in edit: ... The following changes were not checked in because the items were not modified. Undoing edit: ... There are no remaining changes to check in. External Program Failed: E:\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe (return code was 1) Process exited with code 1 BUILD FAILED - 0 non-fatal error(s), 1 warning(s)
我认为正在发生的是构建被触发一次太多次(有几个构建可以触发它).如果我们要更新的文件没有更改,TFS会跳过签入并"帮助"返回错误代码.不幸的是,它也将返回1"锁定退房"错误,这是严重的.
供参考:TF命令行退出代码
解决方法很简单但很烦人 …