我正在开发验证和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中)?
答案 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/。