执行这个命令
pre-commit run --all-files
有时候会卡在Initializing environment for https://github.com/xxx那里,如下图:
这个情况可以这样复现:
git clone git@github.com:TheKevJames/coveralls-python
cd coveralls-python
python3.12 -m venv .venv
source .venv/*/activate
pip install -U pip pre-commit
pre-commit run --all-files
===================
慢的原因是初始化时,需要克隆插件,即:git clone https://github.com/user/repo
解决方法也很简单:
1. 方法一:开启VPN
2. 方法二:手动把.pre-commit-config.yaml文件里的URL改成ssh的型式
3. 方法三:像我一样修改pre-commit的源代码
====================
这里大致列举一下方法三的步骤:
1. 找到pre-commit的路径:
which pre-commit
我的是:~/trying/coveralls-python/.venv/bin/pre-commit
2. cd到该包的安装位置
cd ~/trying/coveralls-python/.venv/lib/python3.12/site-packages/pre_commit
3. 全局查找clone相关的代码
grep -rn clone **/*.py
结果如下:
4. 修改clone策略
vi store.py
在193行那里增加这个代码:
repo = repo.replace('https://github.com/', 'git@github.com:')
保存文件后,回到原来的目录,重新执行pre-commit的命令就会发现快很多了