git python 预提交挂钩以添加文件

git python pre-commit hook to add files

我有一个用 python 编写的 pre-commit-hook,它对文件进行了一些更改。现在我还想添加此文件,以包含 pre-commit-hook 所做的更改。

我尝试使用 subprocess 来做到这一点

subprocess.check_call(('git', 'add', filename))

如果我在交互式 python 会话中尝试此操作,它会正确添加文件,但我挂钩它不起作用。
我已经检查过了,钩子在正确的目录中工作。

如何正确添加文件?

编辑: 我的 git 版本是 2.1.4

有趣:只要预提交挂钩确实是运行ning,git add 应该在任何Git 1.5.4 之后的版本中生效。请参阅 Git 存储库中的 this commit Git。

(我记得它在 Git 的某些版本中无法正常工作,但不记得它在任何特定版本中被破坏。)

如果这在您的特定 Git 版本中被破坏,另一种方法是让您的预提交挂钩添加文件,运行 它自己的 git commit 安排内部递归提交 not 再次递归——这取决于你如何解决这个问题——然后当内部提交完成时,拒绝提交.这个解决方案很丑陋,因为它使每个提交似乎都失败了。