我们有一个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
Run Code Online (Sandbox Code Playgroud)
但是,有一些事情要么没有签入,要么被.gitignore编辑.所以我想获取输出git ls-files并仅在那些上运行命令.我可以循环,但我不想对开发人员选择的shell做出假设.理想情况下,我想find通过设置差异来过滤s输出git ls-files.
#!/usr/bin/env bash
git ls-files -z \*.py | xargs -0 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
Run Code Online (Sandbox Code Playgroud)
你应该做的.
git ls-files -z并xargs -0允许文件名中的空格等
来自那个xargs男人
-0, --null
输入项由空字符而不是空格终止,引号和反斜杠不是特殊的(每个字符都是字面意思).禁用文件字符串的结尾,该字符串与任何其他参数一样.输入项可能包含空格,引号或反斜杠时很有用.GNU查找-print0选项生成适合此模式的输入.
来自那个git ls-files男人
-z
\0输出上的行终止.
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |