将gitconfig smtppass设置为passcmd

1aaf6o9v  于 2023-04-28  发布在  Git
关注(0)|答案(1)|浏览(98)

我刚刚开始使用git send-mail进行sourcehut项目,* 到目前为止一切顺利 *。
我的电流。gitconfig看起来像这样:

[user]
    email = johndoe@host.com
    name = John Doe
    signingkey = <mysignkey>
[commit]
    gpgsign = true
[format]
    subjectPrefix = [PATCH]
[sendemail]
    smtpserver = smtp.johndoe.com
    smtpuser = johndoe@host.com
    smtpencryption = ssl
    smtpserverport = 465
    smtppass = my-password-in-clear-text

有没有办法用pass + sed来设置smtppass,而不是用明文来设置?
我使用的是pass,通常我会用一个passscmd pass show host.com/johndoe.com | sed -n '3p来设置它,但我不知道如何在。gitconfig.

dbf7pr2w

dbf7pr2w1#

我不认为你可以在你的.gitconfig文件中直接使用pass命令。它只是一个纯文本文件,无法在其中执行shell命令。
一种可能的解决方法是创建一个从pass检索密码的脚本,然后在smtppass选项中使用该脚本。
但是git send-mail会将配置[sendemail].smtppass解释为 * 是 * 密码,而不是检索密码的命令。
检查使用git credential helper是否有帮助,假设GCM is installed

git config --global credential.helper manager

(Your可执行文件git-credential-manager,或旧版Git版本的git-credential-manager-core,必须在您的$PATH/%PATH%中)

printf "host=smtp.johndoe.com:465\nusername=johndoe@host.com\nprotocol=smtp" | git-credential-manager store $(pass show host.com/johndoe.com | sed -n '3p')

如果GCM不可用,您可以按照in your thread的建议,使用自定义助手:

[credential "smtp://smtp.johndoe.com:465"]
    helper = "!f() { echo username=johndoe@host.com; echo \"password=$(pass show xenrox/mail.xenrox.net/thorben | sed -n '3p')\"; }; f"

相关问题