Python pre-commit hook 設置步驟
開始前的小觀念
Pre-commit的設定是針對個別的local repositories的,也就是說每個local repository都要針對需求個別設定。
開始設定
打開Terminal,安裝”pre-commit”
pip3 install pre-commit
安裝需要一些時間,完成後進入local repository目錄(.git所在目錄)
cd /Users/{Your_Name}/Documents/LocalRepo
檢查.pre-commit-config.yaml 這個 config 檔,是否在目錄內。
ls -a
如果config檔不在,可以參考以下設置:
先用 vi 創建一個 .pre-commit-config.yaml 檔
vi .pre-commit-config.yaml
並在 vi 編輯器貼上以下內容,編輯完畢後退出保存。
repos:
— repo: https://github.com/jleclanche/tan
rev: stable
hooks:
— id: black
entry: tan
args: [ — use-tabs]
language_version: python3.8
— repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.0.0
hooks:
— id: flake8
設定完 .pre-commit-config.yaml 檔後,就可以將 pre-commit 設定到 git hooks 了。
pre-commit install
如果出現 “pre-commit: command not found” 之類的錯誤,請檢查看看環境變數。
echo $PATH
如果 “/Users/{Your_Name}/Library/Python/3.8/bin” 不在其中,請補上去。
PATH=$PATH:/Users/{Your_Name}/Library/Python/3.8/bin
基本上,這樣該 repository 的 pre-commit 就設置完了。
補充:flake8 的客製化
在 .git所在目錄下,打開 .flake8 隱藏檔,可以做客製化設定。(如果沒有該檔案,一樣用 vi 創一個。)
[flake8]
max-line-length = 100
extend-ignore = E101, E117, E203, E501, W191, W291, W293
關於 flake8,可以參考以上的設定。
flake8 的詳細 error codes 描述,可以參考我另一篇文章: