11

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

https://github.com/miohtama/vvv

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

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

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

4

2 回答 2

6

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

$ 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/

于 2012-04-15T17:09:32.260 回答
1

这不是一个直接的答案——但我在使用 npm 为 JavaScript 寻找类似的解决方案时遇到了这个问题。

通过进一步的搜索,我相信这现在是 npm 使用lint-staged library解决的问题。这将仅对暂存文件进行 lint。

我在搜索时遇到的问题是我一直在搜索“预提交”钩子 linting 而不是“暂存文件”linting。所以我把这个答案放在这里给像我这样来这里寻找 JavaScript 解决方案的人。

希望 npm 包也可以对 Python 世界有所启发。

于 2022-02-15T10:45:09.130 回答