git - 如何在 TFS Build (Git) 中单独获取修改后的文件
问题描述
我需要在我的 TFS 构建获取源任务中单独获取修改后的/新文件。
到目前为止,我发现我们可以通过定义变量来禁用 Get Source 任务 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 源代码控制中的问题有很多文件我不希望在构建时全部获取,而不是在提交/PR 合并中修改的文件我需要获取。
我怎样才能做到这一点?
解决方案
一旦构建服务器同步了 Git 存储库,它将能够获取上次构建之间的差异。由于 Git 依赖于存在的完整存储库状态(提交是指向工作文件夹状态的指针,其中包括该状态下的所有文件),因此不可能仅获取更改的文件。
在代理阶段步骤中有一个开关,用于控制是否清理工作目录,在这种情况下,代理必须同步整个 git 存储库。还有一个选项可以只获取最新的快照,而不是完整的历史记录:
Shallow Fetch:允许您仅下载存储库的最新快照。下载速度会更快,但可能会导致 GitVersion 等工具失败(它依赖历史数据来计算版本号)。
Clean:False:将保留先前构建的内容,允许您对源进行增量获取,使用支持它的工具进行增量构建。您可以将 Clean:False 与执行更有针对性的清理的自定义步骤结合使用。
如果您需要更改的文件,您可以发出 git 命令从同步的 git 存储库中复制它们。请参阅: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 。
推荐阅读
- rest - 使用 gouv.fr 中的 ScanR API 进行 POST 请求,给定公司名称,返回其 id
- html - 如何在Angular 6中将值从打字稿代码传递到css
- postgresql - 使用 ST_Area 将结果保留为小数点后两位
- arrays - 静态 const 数组是否已预处理?
- c# - CarouselView 中的 Xamarin 错误行为 - CurrentItemChanged 事件意外触发?
- c - C语言比较两个字符数组
- java - Long 和 Integer 的常用算法
- laravel - 如何以错误的日期格式启动迁移?
- awk - 如何使用 awk 将 0.1.88 更新到 1.0.88?
- java - 如何伪造单元测试的最后修改时间?