首页 > 解决方案 > Git命令提取具有特定日期范围和路径的文件

问题描述

我正在构建一个 devops 管道,该管道将从 GIT 存储库中提取 OpenAPI ymal 文件,然后将一些 RestAPI 请求发送到另一个系统(API 管理产品)以使用 ymal 文件发布 API。

这个想法是创建一个 Jenkins 作业并每 10 分钟扫描一次 Git 存储库,搜索特定路径(例如 /myproject/openapi/)和文件扩展名(*.ymal)。如果它看到最近的更改(在 10 分钟内),它将提取这些文件并运行脚本来触发 API。

有人可以帮助提取 ymal 文件的 Git 命令吗?

请注意,Git 存储库可能非常大,我希望只下载和提取符合条件的文件。

谢谢你。

标签: git

解决方案


为了能够浏览 git 的历史记录,您需要在运行 Jenkins 的机器上拥有您的克隆。知道作业将每 10 分钟执行一次,您可以使用:

git clone --single-branch --shallow-since="10 minutes ago"

仅克隆所需的提交子集。

已经克隆了相关的提交,您可以使用类似于该命令的命令来获取有关在过去 10 分钟内更改的文件的信息:

git log --since "10 minutes ago" --format="" --name-only -- myproject/openapi/**/*.yaml

请记住,这个硬编码的 10 分钟限制可能不是一个好主意。这样,您就假设该作业确实每 10 分钟运行一次,这可能不会发生。

更好的选择是使用更大的重叠窗口或将上次成功执行时间存储在某处,并查找自那时以来引入的更改。


推荐阅读