Git Hooks 整合
自動化每次提交和推送的品質檢查。再也不會推送壞掉的代碼。
🚀 快速設定
一鍵安裝
這會安裝: - pre-commit - 執行 STANDARD 驗證 - pre-push - 執行 FULL 驗證
📋 Hook 級別
| Hook | 觸發時機 | 驗證級別 | 繞過方式 |
|---|---|---|---|
| pre-commit | git commit |
STANDARD | --no-verify |
| pre-push | git push |
FULL | --no-verify |
每個級別檢查的內容
STANDARD(pre-commit): - ✅ 語法錯誤 - ✅ Linting(ruff) - ✅ 格式化 - ✅ Import 排序
FULL(pre-push): - STANDARD 的所有內容,加上: - ✅ 單元測試 - ✅ 安全掃描 - ✅ 依賴審計
⚙️ 配置
自訂 Hook 配置(.boring.toml)
[boring.hooks]
pre_commit_level = "STANDARD" # BASIC|STANDARD|FULL
pre_push_level = "FULL" # STANDARD|FULL
auto_fix = true # 自動修復 linting 問題
timeout_seconds = 300 # 最大 hook 執行時間
[boring.hooks.bypass_patterns]
# 跳過這些檔案模式的驗證
skip_files = ["*.md", "docs/*", "*.txt"]
手動 Hook 腳本
如果你偏好手動控制,建立 .git/hooks/pre-commit:
和 .git/hooks/pre-push:
設為可執行:
🛠️ 命令
安裝 Hooks
檢查狀態
解除安裝 Hooks
升級 Hooks
🔄 工作流程範例
# 做變更
vim src/main.py
# 暫存變更
git add src/main.py
# 提交觸發 pre-commit hook
git commit -m "feat: 新增使用者認證"
# ✅ 語法檢查:通過
# ✅ Linting:通過(3 個自動修復)
# ✅ 格式化:通過
# [main abc1234] feat: 新增使用者認證
# 推送觸發 pre-push hook
git push origin main
# ✅ 語法檢查:通過
# ✅ Linting:通過
# ✅ 測試:42 通過
# ✅ 安全:無問題
# 推送到 origin...
⚡ 效能技巧
使用增量模式
Hooks 自動使用增量驗證: - 只檢查已暫存的檔案(pre-commit) - 只檢查要推送的提交(pre-push)
跳過重型檢查
開發期間的快速提交:
# .boring.toml
[boring.hooks]
pre_commit_level = "BASIC" # 僅快速語法檢查
pre_push_level = "STANDARD" # 將 FULL 留給 CI
必要時繞過
🏢 團隊配置
共享 Hook 配置
提交 .boring.toml 與團隊分享:
建議的團隊設定
# .boring.toml
[boring.hooks]
pre_commit_level = "STANDARD"
pre_push_level = "FULL"
auto_fix = true
[boring.quality_gates]
min_coverage = 40
max_complexity = 15