【发布时间】:2020-09-29 04:28:30
【问题描述】:
我曾经在一个看起来像这样的文件中看到(不记得在哪里)lint 检查: “如果这个文件被修改了,如果文件 /somehwere/a 和 /somehwere/b 没有在同一个提交中被修改,我会抱怨”。
你知道任何 linter 能够处理这样的事情吗?也许不是 linter,而是可以集成到 github 存储库的东西?
【问题讨论】:
我曾经在一个看起来像这样的文件中看到(不记得在哪里)lint 检查: “如果这个文件被修改了,如果文件 /somehwere/a 和 /somehwere/b 没有在同一个提交中被修改,我会抱怨”。
你知道任何 linter 能够处理这样的事情吗?也许不是 linter,而是可以集成到 github 存储库的东西?
【问题讨论】:
如果您为存储库设置了 CI 系统,则可以运行如下命令,如果提交有问题,该命令将退出非零值,如果所有提交都正常,则退出零值($BASE 和 $HEAD适当设置):
git rev-list $BASE..$HEAD | \
xargs -L1 sh -c 'lines=$(git show --name-only $0 | grep -e somewhere/a -e somewhere/b | wc -l); \
test $lines -ne 1 || { echo "bad commit $0"; false; }'
任何合适的 CI 系统都可以通过运行 shell 脚本来测试这一点,如果它退出非零则失败。
【讨论】: