如何使用内置机制生成 Git 提交电子邮件?
How to generate Git commit e-mails using built-in mechanisms?
post-receive
挂钩是一种众所周知的机制,用于生成汇总 Git 提交的通知电子邮件。然而,据我所知,只有当提交 git push
-ed 到远程存储库时才会调用此挂钩。
如何让 Git 发送通知电子邮件以响应对本地存储库的提交,而无需推送到远程?
我知道有一个 post-commit
钩子,但我的印象是它用于其他用途——也许用于验证?此外,股票脚本是裸露的,与电子邮件脚本没有任何明显的联系。我怀疑是否可以直接复制标准 post-receive
脚本来代替它,因为传递给 post-commit
挂钩的参数似乎与传递给 post-receive
的参数不同。
我相信可以想出一些自定义脚本来执行此操作,仅基于提交 ID(可能在内部挂钩参数中可用)。我对依赖或多或少 stock/packaged Git 脚本的简单解决方案感兴趣;一个小而相对通用的垫片。有这种东西吗?
post-commit
没有 个参数,但它不需要任何参数,因为(单个)提交是在 HEAD
的任何地方进行的现在指出提交已完成。阅读 HEAD
:如果它是一个分支的符号引用,则对该分支进行了一次提交;如果它是原始 SHA-1,则有一个提交是使用分离 HEAD
;如果是别的,那就奇怪了。 :-)
这比 post-receive
可能已经收到大量提交、大量标记对象、and/or 多个引用更新要简单得多。 post-receive hook 电子邮件生成器必须考虑更多可能的情况。
Pro Git's chapter on Git Hooks 介绍了如何处理这个问题。
After the entire commit process is completed, the post-commit hook runs. It doesn’t take any parameters, but you can easily get the last commit by running git log -1 HEAD
. Generally, this script is used for notification or something similar.
从 HEAD
获得所需信息后,您就可以编写发送电子邮件的脚本。您可能想要分叉发送电子邮件的过程,否则 git commit
将等待它发送,这会减慢开发过程。请务必在分叉和退出之前获取有关 HEAD
的所有数据,否则可能会发生另一次提交并更改 HEAD
.
post-receive
挂钩是一种众所周知的机制,用于生成汇总 Git 提交的通知电子邮件。然而,据我所知,只有当提交 git push
-ed 到远程存储库时才会调用此挂钩。
如何让 Git 发送通知电子邮件以响应对本地存储库的提交,而无需推送到远程?
我知道有一个 post-commit
钩子,但我的印象是它用于其他用途——也许用于验证?此外,股票脚本是裸露的,与电子邮件脚本没有任何明显的联系。我怀疑是否可以直接复制标准 post-receive
脚本来代替它,因为传递给 post-commit
挂钩的参数似乎与传递给 post-receive
的参数不同。
我相信可以想出一些自定义脚本来执行此操作,仅基于提交 ID(可能在内部挂钩参数中可用)。我对依赖或多或少 stock/packaged Git 脚本的简单解决方案感兴趣;一个小而相对通用的垫片。有这种东西吗?
post-commit
没有 个参数,但它不需要任何参数,因为(单个)提交是在 HEAD
的任何地方进行的现在指出提交已完成。阅读 HEAD
:如果它是一个分支的符号引用,则对该分支进行了一次提交;如果它是原始 SHA-1,则有一个提交是使用分离 HEAD
;如果是别的,那就奇怪了。 :-)
这比 post-receive
可能已经收到大量提交、大量标记对象、and/or 多个引用更新要简单得多。 post-receive hook 电子邮件生成器必须考虑更多可能的情况。
Pro Git's chapter on Git Hooks 介绍了如何处理这个问题。
After the entire commit process is completed, the post-commit hook runs. It doesn’t take any parameters, but you can easily get the last commit by running
git log -1 HEAD
. Generally, this script is used for notification or something similar.
从 HEAD
获得所需信息后,您就可以编写发送电子邮件的脚本。您可能想要分叉发送电子邮件的过程,否则 git commit
将等待它发送,这会减慢开发过程。请务必在分叉和退出之前获取有关 HEAD
的所有数据,否则可能会发生另一次提交并更改 HEAD
.