git - Windows 的后接收脚本(电子邮件通知)

标签 git msysgit git-post-receive

我在 Windows 机器上创建了一个裸(中央)存储库。我和我的同事现在正在使用这个存储库。我希望 git 在更新时发送电子邮件通知。我知道我们需要在 post-receive Hook 中编写一些脚本并配置 mailinglistemailprefix 属性。但我需要的是脚本(在接收后),它在 Windows 机器上发送邮件。

注意:这里有一个类似的问题。但答案是“怎么办?”不是'怎么办?。 Can I have git send out an email with the post-receive-email scripts if my repo is on a Windows machine?

提前致谢。

最佳答案

您几乎可以按照常用的接收后示例脚本中的注释中的说明来执行此操作,但异常(exception)情况是 Git for Windows 提供 msmtp 而不是 sendmail。如果您粘贴来自 contrib/hooks 的贡献脚本进入接收后脚本,然后您只需要进行一些更改。首先,您需要指定一个 smtp 服务器,因此我建议添加配置变量 sendemail.smtpserver 并将其设置为您的服务器名称。如果您需要身份验证等,请查找这些配置变量并修改脚本以使用它们。

在粘贴的电子邮件脚本中 - 将 sendmail 替换为 msmtp,如下所示

send_mail()
{
    if [ -n "$envelopesender" ]; then
        msmtp --host="$smtpserver" -t -f "$envelopesender"
    else
        msmtp --host="$smtpserver" -t
    fi
}

最后,靠近文件末尾的部分是读取 git config 变量的部分,因此添加一个新行来读取服务器值:

smtpserver=$(git config sendemail.smtpserver)

有了这两个更改,脚本对我来说工作正常,在推送时将邮件发送到 hooks.mailinglist 帐户。

关于git - Windows 的后接收脚本(电子邮件通知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096433/

相关文章:

eclipse - git eclipse 总是需要 pull 所有已经更新的项目

git - Git 和 Nexus 的区别?

Git CHMOD 接收后 Hook

html - 通过 git post-receive 将 styles.less 替换为 styles.css

Git 子存储库

Git 存储库在 Web 根目录之外有多个目录?

git - 哪些 $VARIABLES 可以从 git-gui 传递给外部工具?

windows - 为什么在 windows 或 linux 下对同一个文件使用不同的 SHA-1?

git - 当它说 : An experimental "version 4" format of the index file 时,它在 msysgit 1.7.11 的变更日志中意味着什么

Github post-receive hook自动 pull 回滚