【问题标题】:How to identify files that have changed during TFS Build 2015如何识别在 TFS Build 2015 期间发生更改的文件
【发布时间】:2016-03-06 16:51:06
【问题描述】:

我需要将一个分支的更改合并到一个发布分支,并且只将这些更改的文件部署到生产环境。这些文件是 Maestro 和 SQL 文件,因此没有“构建”,只是需要移动的单个文件。这个过程全是手动的,我想使用 TFS 2015 CI 构建和/或 Release Management vNext 2015 Update2 来自动化这个过程。

我的主要问题是如何识别更改的文件。使用构建代理工作区并不可靠,因为文件上的时间戳是在执行 getlatest 时设置的。

我认为识别已更改文件的最可靠方法是查看合并更改集并获取该文件列表并编写自定义包以移动到生产环境。

有其他人解决过这个问题吗?如果有,你是怎么解决的?

谢谢

【问题讨论】:

    标签: tfs tfsbuild


    【解决方案1】:

    人们不需要/不想使用文件日期戳来获取此类信息,正如您所说的那样不可靠。

    1. TF FolderDiff 可以容纳场景的第一(差异)部分: https://msdn.microsoft.com/en-us/library/bb385992(v=vs.140).aspx

    2。 TF Merge 可以容纳场景的第二部分(合并)。 https://msdn.microsoft.com/en-us/library/bd6dxhfy.aspx

    3. 可能需要将其包装在控制脚本(可能是 PowerShell)中并从构建过程中调用

    以下是一些在 PowerShell 中包装 TF 命令的一般示例:

    Expand output of TF.exe results from PowerShell

    外部:

    http://www.tomsitpro.com/articles/how-to-commit-code-tfs-powershell,2-990.html

    https://github.com/adbertram/Random-PowerShell-Work/blob/master/TFS/TFSClientFunctions.ps1

    【讨论】:

    • 使用 TF 命令的问题是我没有任何东西可以与之比较。一旦将更改移至生产分支并开始构建,就没有我可以可靠地比较的服务器或本地文件夹。我最终编写了一个控制台应用程序,该应用程序利用了 Microsoft.TeamFoundation.Client.WebApi 库并传入了允许我获取相关变更集的 BuildId。然后,我找到了每个变更集中的所有更改,并确定了我需要复制的文件。
    【解决方案2】:

    我建议您在每次部署时部署整个应用程序,但是您可以采取一些措施来最大限度地减少运行部署所花费的时间。

    如果您正在部署 SQL,请考虑使用带有编号脚本的文件夹并记录数据库中的最后运行编号。 ReadyRoll 和 SSW SQL Deploy 等工具可以帮助实现自动化,但最终这很容易解决。

    对于像图像和其他二进制文件这样的资产文件,您需要进行日期戳比较。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2016-01-23
      • 2023-03-30
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多