0

当有人提交时,我希望将作者设置为发件人。我已经缩小了这段代码的范围post-receive

send_mail()
{
        if [ -n "$envelopesender" ]; then
                /usr/sbin/sendmail -t -f "$envelopesender"
        else
                /usr/sbin/sendmail -t
        fi
}

我要把它添加到 else 条件中,我想用类似的东西

git log <SHA-1> --pretty=format:"%an<%ae>" -1

我想我会使用这个$newrev变量来表示 sha。

我对我的不是很新鲜。我怎样才能做到这一点?

4

1 回答 1

1

我想你应该能够做到这一点:

send_mail()
{
    if [ -n "$envelopesender" ]; then
        /usr/sbin/sendmail -t -f "$envelopesender"
    else
        author="$(git --no-pager show -s --pretty="%an" $newrev)"
        email="$(git --no-pager show -s --pretty="%ae" $newrev | sed 's/ *$//g')"
        if [ -n "$email" ]; then
            /usr/sbin/sendmail -t -F "$author" -f "$email"
        fi
    fi
}

对于git show

  • git show看起来是一个更合适的命令来提取有关提交的信息,而不是git log. (您可能会使用更合适的东西;))
  • --no-pager确保它不会打开寻呼机程序
  • -s跳过提交中的文件列表和差异

对于sendmail

  • 使用设置发件人姓名-F
  • 使用设置发件人电子邮件-f
于 2013-03-18T23:37:33.350 回答