使用Git钩子创建提交日志并添加到当前提交

7

每当我执行git commit -m "msg"时,我都会运行此shell脚本,它会将提交日志写入一个php文件中。我希望它还包括我此时正在进行的当前提交信息。

我的shell脚本:

#!/bin/sh
path="path/to/gitlog.php"
echo "<?php $git_log = array(" > $path
git log --date=iso --pretty=format:'array("%h","%an","%ad","%s"),' >> $path
echo ");" >> $path

gitlog.php会被保存到我的代码库中,然后我会使用git push命令进行推送。
我目前将它放在了“pre-commit”钩子中,有没有办法在这个钩子中获取提交消息? 我的用例 我是项目中唯一的开发人员。时间很紧迫!其他参与项目的人需要查看进度并阅读描述性的提交日志,而不需要我重复工作。该日志会输出到每个人都可以访问的仪表板上。
Git没有在仪表板服务器上运行,并且文件是从代码库托管公司(Beanstalk)部署的。

4
尝试使用Hooks生成类似changelog的东西存在一些问题。它们往往会生成大量变更,这些变更会在合并时妨碍您,并且请不要忘记它们是局限于仓库的,必须在每个仓库上单独设置。根据你想要changelog出现的位置,可能有更可靠的方法来获取它。 - Jan Hudec
1
听起来让我感到害怕。如果您是项目的唯一贡献者,这可能有效,但我仍然不会这样做。您已经在git中拥有了更改日志,不确定您希望通过将其复制到另一个文件中实现什么目标。通常,git更改日志经常记录非常详细的更改,不适合用作更改日志文件。 - Penguin Brian
@digout:你的使用场景是什么?正如其他人所说,我认为你可以很容易地找到另一种方法来解决这个问题。例如:不要对此日志进行版本控制,而是在部署代码时使用脚本生成日志输出。 - LeGEC
如果您想要一个准确的 git 日志,反映出它在 git 上真实的日志,而不是可以通过日志消息编辑使其无效的副本,那么您应该每次都直接从 git 拉取 git 日志,而不是尝试复制它。 - hofan41
@JanHudec 可能吗?我愿意听取建议。我是唯一的开发人员,这只是本地问题而已。如果提交钩子可以进行一些巧妙的操作并首先删除以前的日志文件,那么是否可以解决合并的某些问题? - digout
显示剩余7条评论
2个回答

1
另一个选择是创建一个适当的钩子,将变更日志写入仓库之外的文件,然后将该文件推送到外部用户可以访问的地方。这样就不需要提交变更日志了,这是问题的根源。

0
根据您的使用情况,我建议:
将您本地机器上的pre-commit钩子移动到仪表板服务器上的post-checkout钩子(我想象在该仪表板站点后面有一个存储库的克隆?)

不,这些文件是从代码托管平台(Beanstalk)部署到“仪表板服务器”的。 - digout

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