预提交 (pre-commit.com) 挂钩可以将文件添加到提交吗?

Can a pre-commit (pre-commit.com) hook add files to a commit?

可以预提交挂钩(使用预 commit.com)将文件添加到提交吗?

我的用例:我在 jupyter notebooks 上工作。在提交时,我想 生成并 git-add 提交中任何 ipynb 文件的 html 版本。

例如提交挂钩:

- repo: local
  hooks:
    - id: nb-as-html
      name: nb-as-html
      stages: [commit]
      language: system
      verbose: false
      pass_filenames: false
      always_run: true
      entry: find devtools \( -name \*.ipynb -not -name \*checkpoint.ipynb \) -type f -exec jupyter nbconvert --to HTML {} \; 

并以某种方式将文件添加到提交中。

我该怎么做?或者预提交不适合这个?

可以pre-commit 挂钩中添加文件,但不建议这样做。 Git 开发人员通常会解决此工作流程中出现的问题,但他们并不乐意这样做,也不鼓励这样做。此外,用户不会期望您这样做,并且可能对您这样做不满意。由于在克隆存储库时不会克隆挂钩(因为这将允许执行任意代码),因此您也不能假设其他贡献者会 运行 它们。

此外,您应该避免将生成的文件完全提交到存储库。这往往会使存储库膨胀,并在合并或变基发生时引起冲突。您最好在 CI 中生成此文件并将其上传到其他地方。