一个 Git 的 pre-commit 钩子能否将一个文件添加到仓库中?

3
我在工作目录中保留了一个git日志的文本文件,并且有一个脚本在提交后更新它。这样做没问题,但是这样做的效果是仓库中的版本总是落后于一次提交。
是否可以编写一个pre-commit钩子,调用一个脚本并向仓库添加一个文件,从而保存带有当前提交信息的日志的文本版本?
我对git钩子很陌生,不知道这是否可行。感谢您的帮助!
2个回答

3
简短回答:不行。日志包含提交的SHA1,该值取决于提交的内容。如果您更改日志,将会改变提交,这仍然是无效的。
我想知道你为什么要这样做。在存储库中,`git log`与`cat saved-git-log`一样好。如果您需要发布版本的更改日志,只需将其作为构建/部署流程的一部分创建即可,例如以下流程:
tarname=my-project-$(git describe HEAD).tar
git log > changelog.txt
git archive --format=tar HEAD > $tarname
tar -Af $tarname changelot.txt
gzip $tarname

1
好的,这很好。我想这么做的原因是我正在尝试将我的提交日志嵌入到一个部署在Heroku上的Rails应用程序中,这意味着我只能通过将它们添加到git repo并推送到Heroku来传输文件到服务器。然而,一旦应用程序在heroku上,它就不能再调用自己的repo了,这非常糟糕。不过,感谢您提供的替代方案建议! - Andrew
1
@Andrew: 另一种大的选择是按照你所说的方式,只比最新提交晚一个提交 - 除了最后一个提交只是一个变更日志修改。如果你每个发布版本只做一次,而不是每个提交都这样做,那么情况并不那么糟糕。 - Cascabel

1

我刚从Bitbucket/Github的RSS源中提取了完整的日志。尤其是在使用Heroku时,这似乎是实现您所要求的最简单的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接