git - Git命令提取具有特定日期范围和路径的文件
问题描述
我正在构建一个 devops 管道,该管道将从 GIT 存储库中提取 OpenAPI ymal 文件,然后将一些 RestAPI 请求发送到另一个系统(API 管理产品)以使用 ymal 文件发布 API。
这个想法是创建一个 Jenkins 作业并每 10 分钟扫描一次 Git 存储库,搜索特定路径(例如 /myproject/openapi/)和文件扩展名(*.ymal)。如果它看到最近的更改(在 10 分钟内),它将提取这些文件并运行脚本来触发 API。
有人可以帮助提取 ymal 文件的 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 分钟运行一次,这可能不会发生。
更好的选择是使用更大的重叠窗口或将上次成功执行时间存储在某处,并查找自那时以来引入的更改。
推荐阅读
- php - 模型构造函数中的赋值不起作用
- c++ - 使用 std::copy 复制数组时出现分段错误
- python - 创建集合列表的交集长度的DataFrame的方法是什么
- wordpress - .htpasswd 要求在整个站点上进行身份验证
- regex - RegEx 用于匹配 VB.net 中的特殊模式
- docker - Drone.io 不会触发 git push
- email - 如何使电子邮件模板中的图像显示在每个客户中?
- excel - 如果另一列有值,如何向列中的每个单元格添加公式
- django - Django 的 Views.py 中 Select 选项的值
- python - python-vlc 不会将 gtk 小部件嵌入到窗口中,而是打开一个新窗口