Hasty Briefsbeta

双语

Pre-commit hooks are fundamentally broken

5 months ago
  • #development
  • #git
  • #pre-commit
  • 预提交钩子由于几个根本性问题存在缺陷。
  • 它们在工作树而非暂存区运行,会遗漏已暂存的更改。
  • 在变基操作中预提交钩子可能失败,特别是遇到合并冲突或修改提交时。
  • 它们可能因现有文件中无关的格式问题而阻止提交。
  • 预提交钩子无法处理缺少特定文件的分支或旧版本钩子。
  • 导致很多场景下必须使用`--no-verify`参数,违背了钩子的设计初衷。
  • 推荐使用预推送钩子作为更优替代方案,可规避多数问题。
  • 编写预推送钩子的技巧包括:在暂存区运行、保持快速可靠、静默执行。
  • 应避免自动安装钩子,推荐通过清晰文档指导手动安装。