我们有一个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命令行退出代码
解决方法很简单但很烦人 - 触发其中一个构建,这将构建程序集的版本号,然后触发此构建.
我们如何可靠地完成这项工作?
更新:我们最终修改了TeamCity的构建触发配置,以创建构建"链",确保只有一次触发签入.
有一种记录的命令行参数用于tf checkin被调用/force.它已在使用情况和MSDN中列出,但在任何地方都没有描述.
这将设置CheckinParameters.AllowUnchangedContent标志,并允许您签入没有更改的文件.这应该可以解决您的问题.
| 归档时间: |
|
| 查看次数: |
2302 次 |
| 最近记录: |