【问题标题】:Using TFS to generate version header file使用 TFS 生成版本头文件
【发布时间】:2013-01-12 02:29:13
【问题描述】:

我们正在考虑将自动版本控制添加到由 Team Foundation Server 开发和自动构建的本机 c++ 项目中。理想情况下,我们将开始构建(从 TFS 检查所有最新版本),然后作为第一步,从 TFS 获取构建号,创建一个头文件,然后在继续构建之前检查该文件。这甚至可以在这样的构建过程中进行签出/签入吗?

我不太熟悉 TFS 的工作原理以及从中检索信息的功能,我们团队中的其他人也不是,这是我们第一次使用它...

【问题讨论】:

    标签: c++ tfs


    【解决方案1】:

    是的,你可以。这是一个很棒的网站,展示了如何为 AssemblyInfo 的 C# 执行此操作,因此您必须稍微调整解决方案,但它应该足以让您完成任务。

    在大量构建环境中对签出/签入要非常小心。您往往会得到很多“无法签出已锁定的文件”,并且签入时会发生冲突,因为在此构建签出后签入了另一个构建。使用具有大量错误处理和验证以及处理冲突能力的自定义任务。不要大量使用 TF.EXE。

    Web Site

    【讨论】:

      【解决方案2】:

      有趣的想法,我不知道是否可以使用内置的构建活动(可能不会),但是,您可以使用 Invoke Process 调用几乎任何您想要的东西,所以您可以尝试调用 tf.exe(即,将 FileName 设置为 path\tf.exe 并将参数设置为“checkout fullpathtothefile”)以签出文件,进行编辑/更改(可能在另一个 Invoke Process 活动中),然后使用 Invoke Process 重新签入。

      只是把想法扔在那里!

      【讨论】:

        【解决方案3】:

        不要签入版本文件——它会带来无穷无尽的麻烦。相反,使用 TFS 提供的构建名称即时生成它,并使用它进行编译。我们从 Wintelect's solution(支持 C++、C# 和其他语言)开始,并对其进行了修改,以将构建的实际版本字符串作为字符串包含在内。

        警告:每次创建文件都会中断增量构建。我们最终仅在文件不存在时才重新创建该文件,这意味着增量构建具有不正确的构建编号 - 但我们的“官方”构建不是增量构建,并且具有正确的编号。

        【讨论】:

        • 好的,我现在正在努力,至少有一些想法。我的经理一直坚持要签入生成的标头,以便我们可以回顾并跟踪版本。我也认为这会导致一些问题。
        • 跟踪版本的正确方法是通过标签。任何非门控构建(手动、CI、滚动、计划)都会创建一个标签,您可以通过这种方式查看哪个版本包含什么。
        猜你喜欢
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 2014-08-17
        相关资源
        最近更新 更多