Git post接收电子邮件:未知类型(提交)

Git post接收电子邮件:未知类型(提交),git,githooks,Git,Githooks,我对Git的post receive电子邮件挂钩脚本有问题。以下是我所做的: 在我的服务器上,我使用:git--bare init myrepo.git初始化了一个裸存储库。我的服务器的Git配置文件显示core.bare=true 安装程序是否使用Git邮件指南进行post接收 在我的客户端上,使用git clone URL克隆存储库。在我的客户端上,Git config是core.bare=false 做了一些工作,添加了新文件,提交到本地Git 使用以下命令将更改推送到远程存储库:git

我对Git的post receive电子邮件挂钩脚本有问题。以下是我所做的:

  • 在我的服务器上,我使用:
    git--bare init myrepo.git
    初始化了一个裸存储库。我的服务器的Git配置文件显示
    core.bare=true
  • 安装程序是否使用Git邮件指南进行post接收
  • 在我的客户端上,使用
    git clone URL
    克隆存储库。在我的客户端上,Git config是
    core.bare=false
  • 做了一些工作,添加了新文件,提交到本地Git
  • 使用以下命令将更改推送到远程存储库:
    git push origin master
    ,该命令为已完成的提交发出生成的ref id
  • 但我没有收到电子邮件;因此,尝试在服务器上运行带有
    /post-receive-refs/heads/master的
    hooks
    目录中的post-receive-hook脚本
  • 不断返回以下错误:

    未知类型的c9c047af更新(提交)
    没有生成电子邮件


    有什么线索可能是错的吗

    虽然我使用了一个分发版
    post receive email
    脚本,但我在脚本中发现了一个奇怪的bug。在我的版本中,
    post receive email
    的末尾说:

    prep_for_email $2 $3 $1 && PAGER= generate_email
    
    应该是哪一个

    prep_for_email $1 $2 $3 && PAGER= generate_email
    

    此更改解决了我对
    post receive
    的手动调用。我希望这有助于其他可能面临此问题的人。

    您在脚本编写的很早就已经死了,因此应该很容易调试。
    git rev parse
    git rev parse
    git cat file-t$(git rev parse)
    git cat file-t$(git rev parse)
    的好处是什么?谢谢你的提示。我在回答中描述了这个问题。我实际上不认为是脚本有问题,而是post-receive.sample中的说明有问题。看起来它是在大约九个月前在1.7.7(commit 8d714b1)中被完全删除的。更重要的是,这真的修复了你的服务器吗?该行的调用仅在传递参数时进行。脚本中的注释表明,当它作为服务器端钩子脚本运行时,它不会以这种方式运行,但如果不进行一些实验,我不能肯定。