我学习 Python,我想使用 GitHub 操作,但我对 Black Formatter 有疑问,因为它检查拉请求中的所有文件(也来自主分支),但我不需要它。我已尝试使用命令包含/排除搜索的任何选项,但都不起作用。
我的问题是什么?
我在 .yml 中使用此代码:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
- run: pip install black flake8 isort mypy
- run: black --check . || false
- run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
- run: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=88 --show-source --statistics
- run: isort --check-only --profile black . || false
- run: pip install -r requirements.txt || true
- run: mypy --install-types --non-interactive . || false
并且我尝试了以下命令:
- run: black --check . --verbose --exclude="homework2\" || false
- run: black --check . --verbose --exclude=".\homework2\" || false
- run: black --check . --verbose --exclude="homework2" || false
- run: black --check . --exclude=^/homework2$ || false
- run: black --check . --exclude=.\_python_course\homework1\.py || false
- run: black . --include 'homework1\/.*\.py?$|homework2\/.*\.py?$' --check || false
- run: black . --exclude "/(_python_course/homework1)/"
- run: black . --check || false
遇到的问题在于,
actions/checkout@v3
操作默认会获取整个仓库的历史记录,包括主分支。这就是为什么即使尝试排除某些文件夹,Black 依然会检查它们的原因,因为它们存在于被检查的仓库历史记录中。
为了解决这个问题,需要配置
actions/checkout@v3
只获取正在进行更改的分支。可以通过在
checkout
步骤中添加
fetch-depth: 0
参数来实现这一点。
以下是更新后的
.yml
文件代码:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # 只获取当前分支
- uses: actions/setup-python@v3
- run: pip install black flake8 isort mypy
- run: black --check . || false
- run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
- run: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=88 --show-source --statistics
- run: isort --check-only --profile black . || false
- run: pip install -r requirements.txt || true
- run: mypy --install-types --non-interactive . || false
通过设置
fetch-depth: 0
,指示
checkout
操作只获取当前分支,而不获取整个仓库的历史记录。这样一来,Black 就只会检查在当前分支中修改的文件,而不会检查主分支中的文件。
此外,确保的排除模式正确。如果只想排除
homework2
文件夹及其所有内容,可以使用以下命令:
- run: black --check . --exclude "homework2/*" || false
这个命令会排除
homework2
文件夹下的所有文件和子文件夹。
希望这些信息对有所帮助!如果还有其他问题,请随时提问。
标签:python,github-actions,cicd From: 78772258