Git pre-commit hook:获取已更改文件的列表

时间:2012-04-15 14:02:53

标签: python git pre-commit-hook pre-commit

我正在开发验证和linting实用程序,以便与各种提交钩子集成,包括Git one

https://github.com/miohtama/vvv

当前验证器和linters在每次提交时都针对整个项目代码库运行。但是,仅针对更改的文件运行它们会更加优化。为此,我需要知道我的Git precommit hook(在Python中)中已更改的文件列表

https://github.com/miohtama/vvv/blob/master/vvv/hooks/git.py

我有哪些选项来提取已更改的文件列表(如果重要的话,在Python中)?

1 个答案:

答案 0 :(得分:6)

如果你真的想让事情“正确”,那么预提交钩子有点痛苦,因为工作树中的内容不一定与提交内容相同:

$ echo morestuff >> file1; echo morestuff >> file2
$ git add file1 # but not file2
$ git commit -m 'modified two files but check in just one'

您可以使用git diff-index --cached HEAD获取“即将登记的内容”列表。另请参阅,例如http://newartisans.com/2009/02/building-a-better-pre-commit-hook-for-git/