【问题标题】:How to detect if changes are made to files outside particular folder in git如何检测是否对git中特定文件夹之外的文件进行了更改
【发布时间】:2021-05-28 16:22:58
【问题描述】:

我在 github 上有一个 git 存储库。场景是这样的:在这个存储库中,有一个名为files 的文件夹。我的合作者非常频繁地更改此目录。我在这个 repo 中也有 Dockerfile。如果files 文件夹之外的任何内容发生更改,我只想再次构建 docker 映像。如果没有,我想使用预建的 docker 镜像。这个构建和使用 docker 镜像是在 Jenkins 中完成的。由于目录files 更改非常频繁,因此我不想每次此目录更改时都构建我的docker 映像。

如何确定在任何提交中,更改的文件是否在此目录中?

目前,我使用 pygithub 脚本对 github 进行 API 调用,但是这非常慢,而且我已经检查了存储库。我想知道我是否可以使用 git 命令来实现这一点。如果是这样,这可以很快完成。

【问题讨论】:

  • 我相信您正在寻找的答案是here。他们在那里告诉您如何获取已更改文件的列表,从那里您必须构建自己的解析和测试脚本来触发构建。

标签: git github


【解决方案1】:

在您的本地克隆中:

git show --format= --name-only -- ':!files/'

git show --format= --name-only 列出了当前提交 (HEAD) 中与之前提交(父)相比的所有更改文件。

':!files/' 从列表中排除目录files。请参阅 git 词汇表中的 pathspec

如果您想列出在任何提交之间更改的文件,请使用git diff --name-only。示例:

git diff --name-only HEAD~5 HEAD -- ':!files/'

最近 5 次提交。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2021-09-16
    • 2013-07-21
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多