代码之家  ›  专栏  ›  技术社区  ›  Jayendran

如何在TFS Build(Git)中单独获取修改过的文件

  •  1
  • Jayendran  · 技术社区  · 6 年前

    我需要在TFS build get source任务中单独获取修改的/新的文件。

    到目前为止,我发现我们可以通过定义 variable Build.SyncSources = false

    这会忽略所有的信息来源,最终会让我 CopyFile 由于使用了 $(Build.SourcesDirectory) 作为源头

    > 2018-07-28T03:13:46.5709194Z Task         : 
    > Copy Files 2018-07-28T03:13:46.5709194Z Description  : Copy files from source
    > folder to target folder using match patterns (The match patterns will
    > only match file paths, not folder paths) 2018-07-28T03:13:46.5709194Z
    > Version      : 2.117.0 2018-07-28T03:13:46.5709194Z Author       :
    > Microsoft Corporation 2018-07-28T03:13:46.5709194Z Help         :
    > [More Information](https://go.microsoft.com/fwlink/?LinkID=708389)
    > 2018-07-28T03:13:46.5709194Z
    >     ============================================================================== 2018-07-28T03:13:47.1855024Z ##[error]Unhandled: Not found
    > SourceFolder: $(Build.SourcesDirectory)
    

    我的Git源代码管理中的问题是,在构建时有许多文件我不想全部获取,而不是我需要获取在commit/PR合并中修改的文件。

    我怎样才能做到这一点?

    1 回复  |  直到 6 年前
        1
  •  0
  •   jessehouwing    6 年前

    一旦构建服务器同步了Git存储库,它就可以获取上一个构建之间的差异。由于Git依赖于存在的完整存储库状态(commit是指向包含处于该状态的所有文件的工作文件夹状态的指针),因此不可能只获取已更改的文件。

    代理阶段步骤中有一个开关,用于控制是否清理工作目录,在这种情况下,代理必须同步整个git repo。这里还有一个选项,只获取最新的快照,而不是完整的历史记录:

    Control clean and fetch

    浅取:只允许您下载存储库的最新快照。下载速度会快得多,但可能会导致GitVersion等工具失败(它依赖于历史数据来计算版本号)。

    Clean:False:将保留上一个生成的内容,允许您对源进行增量获取,增量生成使用支持它的工具。您可以将Clean:False与执行更有针对性清理的自定义步骤结合起来。

    如果需要更改的文件,可以发出git命令从同步的git repo中复制它们。见: https://stackoverflow.com/a/4126342/736079 .

    或者,不要同步源代码,在Powershell中使用基于VSTS Git REST API的自定义脚本来获取所需的确切文件。见: https://docs.microsoft.com/en-us/rest/api/vsts/git/items?view=vsts-rest-4.1 .

    推荐文章