【发布时间】:2016-12-11 10:55:11
【问题描述】:
我们有一个 CI 脚本,它对存储库中的所有 Python 文件进行样式检查,如下所示:
#!/usr/bin/env bash
find . -name \*.py -exec pep8 --ignore=E402 --max-line-length=120 {} +
if [ $? -ne 0 ]; then
>&2 echo "=== PEP8 errors need to be solved ==="
else
echo "=== PEP8 check ok ==="
fi
pytest
但是,有些东西要么没有签入,要么.gitignoreed。所以我想获取git ls-files 的输出并仅在它们上运行命令。我可以循环,但我不想对开发人员选择的 shell 做出假设。理想情况下,我想通过与git ls-files 设置差异来过滤finds 输出。
【问题讨论】:
-
管道到
xargs?git ls-files | xargs foo… -
pep8工具可以在命令行上获取目录名称,并支持--exclude和--filename选项以提供包含和排除的模式。在许多情况下,这足以选择您要检查的文件。