Context
設計一個團隊共用的 pre-commit hook,用來防止有人直接在 main branch 上 commit 非 raw/ 目錄的檔案,適合資料科學專案的 raw data 保護場景。
Key Insights
- 封鎖條件只需一個 grep:
git diff --cached --name-only | grep -v '^raw/'就能找出所有違規檔案,不需要複雜邏輯。 - branch 判斷要提前 exit:先檢查是否在 main,不是就直接
exit 0,避免在 feature branch 上誤封鎖開發。 .template副檔名避免誤啟動:把.pre-commit-config.yaml改名為pre-commit-config.yaml.template放在scripts/,這樣複製到其他 repo 前不會被 pre-commit 自動讀取,是乾淨的模板存放方式。- pre-commit 框架的
language: script:使用localrepo +language: script可以直接執行 shell 腳本,不需要額外的 Python 或 Node 環境,適合跨平台團隊。 - onboarding 只需兩行:
pip install pre-commit && pre-commit install,之後每次 commit 自動觸發。
Connections
- 2026-04-15-claude-mem-nodejs-v12-fix — 另一個 hook 環境問題案例(PATH 繼承問題)