代码之家  ›  专栏  ›  技术社区  ›  Ryan Pedersen

当tfs生成由签入触发时,它如何执行get?

  •  1
  • Ryan Pedersen  · 技术社区  · 15 年前

    我在tfs 2008中设置了一个ci进程,这样每次签入时都会触发一个生成,但前提是生成尚未运行。配置中使用的确切设置是单选按钮,标记为:

    “累积签入,直到上一个生成完成(较少的生成)” 复选框“生成时间不超过每分钟”。未选中

    我还有其他可能正在进行的生成过程,因此我可以看到一个生成是用一个特定的“date queued”排队的。当生成服务器到达排队的生成时,假设它需要10分钟才能到达,它是使用排队生成的时间戳执行get还是使用生成执行“get latest”?

    1 回复  |  直到 15 年前
        1
  •  0
  •   JamesD    15 年前

    我相信tfs将使用最后一次触发提交的变更集(即,生成根据变更集id执行“获取特定版本”,而不是“获取最新版本”)。

    您可以通过查看生成报告并查找“源代码管理版本”字段的值来检查此问题,您应该会看到类似的内容:

    TFS Build Report Fragment, Source control version field http://i47.tinypic.com/a3ihhs.png

    因此,首先,我将检查您看到的值是否与您在构建工作区中看到的一致,以及构建是否引用了预期的变更集。

    假设您的生成正在按播发的方式工作(这对您来说是个问题),则您可能需要考虑更改此默认行为,并通过在生成的tfsbuild.rsp文件中重写“getversion”msbuild属性来强制您的CI生成执行“获取最新版本”,方法是添加以下内容:

    /p:GetVersion=T
    

    其中“t”代表“tip”(SVN术语中的“head”)。