我在项目中使用pre-commit hooks。
当我从command-line
提交时,一切都很好,钩子也在工作,但当我尝试从IDE提交时,它失败了,并显示以下消息:
0个文件已提交,2个文件未能提交:未找到虚拟提交pre-commit
。你忘了激活你的virtualenv了吗?
我的virtualenv
处于活动状态:
x1c 0d1x的数据
我错过了什么?
编辑1
Ubuntu 20.04.4 LTSgrep ^INSTALL .git/hooks/pre-commit
-> INSTALL_PYTHON=/home/lioriz/anaconda3/envs/py36/bin/python
which pre-commit
-> /home/lioriz/anaconda3/envs/py36/bin/pre-commit
head -1 $(which pre-commit)
-> #!/home/lioriz/anaconda3/envs/py36/bin/python
pre-commit --version
-> pre-commit 2.17.0
编辑2
.pre-commit-config.yaml:
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
字符串
.git/hooks/pre-commit:
#!/usr/bin/env bash
# File generated by pre-commit: https://pre-commit.com
# ID: 138fd403232d2ddd5efb44317e38bf03
# start templated
INSTALL_PYTHON=/home/lioriz/anaconda3/envs/py36/bin/python
ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=pre-commit)
# end templated
HERE="$(cd "$(dirname "$0")" && pwd)"
ARGS+=(--hook-dir "$HERE" -- "$@")
if [ -x "$INSTALL_PYTHON" ]; then
exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}"
elif command -v pre-commit > /dev/null; then
exec pre-commit "${ARGS[@]}"
else
echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2
exit 1
fi
型test -x /home/lioriz/anaconda3/envs/py36/bin/python; echo $?
-> 0
编辑3
IntelliJ在Windows 11
和WSL2
上运行,pre-commit
安装在wsl2
-Ubuntu 20.04.4 LTS
上。
1条答案
按热度按时间7rfyedvj1#
看看这个线程https://youtrack.jetbrains.com/issue/PY-12988,检查最后一次重播。
我在我的案例中设置了Git可执行文件的路径\wsl$\Ubuntu-20.04\usr\bin\git,并且全局安装了预提交(不在venv内部)
x1c 0d1x的数据
我在我的ENV - Windows 10上用IntelliJ IDEA 2023. 1. 4(终极版)和WSL试过这个-这个工作得很好。