0

我刚刚设置了要使用的 Python 项目pdoc,它会自动生成 HTML 文档,然后我将这些文档添加到了 repo。

我希望文档在每次提交代码时自动更新,所以我制作了一个pre-commit运行pdoc.

预期行为:我在我的 GUI 中打开提交对话框,挂钩运行并更新 HTML 文件,然后我将 HTML 文件连同我的代码更改一起提交。

git commit实际行为:直到我完成暂存更改并编写提交消息之后,GUI 才会调用。因此 HTML 文件仅在提交提交后更新。这种行为在 Tortoise 和 Git 扩展中是相同的。

解决方法:先提交代码,然后修改文档更新。

有更好的解决方案吗?

4

1 回答 1

1

正如bk2204 所建议的那样,最好的方法可能是不在此存储库中包含生成的文件。(是否将它们存储在任何地方,如果存储在哪里,则是另一个问题。)

然而,有时存储某种自动生成的文件是有原因的:例如,生成它们的程序可能对大多数用户不可用,即使项目本身是公开的。在这种情况下,您应该在 Git 中使用的规则很简单:

  • 让你的 pre-commit 钩子检查要提交的文件是否正确。

  • 如果是这样,让提交继续。

  • 如果不是,则拒绝提交。

然后,而不是运行git commit(或使用一些可点击的 GUI 按钮运行git commit),运行make newcommit./build-and-commit其他。如果/根据需要,这会构建自动生成的文件,如果/根据需要git add在它们上运行,然后运行git commit​​. 如果您的 GUI 具有正确的子结构,1您可以转换“make new commit”按钮来执行此操作。


1唉,只有用 Tcl/Tk 编写的“玩具”GUI 似乎有这个。也许我只是不断遇到糟糕的 GUI。

于 2021-08-27T08:03:32.527 回答