Context

設計一個團隊共用的 pre-commit hook,用來防止有人直接在 main branch 上 commit 非 raw/ 目錄的檔案,適合資料科學專案的 raw data 保護場景。

Key Insights

  • 封鎖條件只需一個 grepgit 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:使用 local repo + language: script 可以直接執行 shell 腳本,不需要額外的 Python 或 Node 環境,適合跨平台團隊。
  • onboarding 只需兩行pip install pre-commit && pre-commit install,之後每次 commit 自動觸發。

Connections