【问题标题】:Keeping gpg signature in git patches with format-patch使用格式补丁将 gpg 签名保存在 git 补丁中
【发布时间】:2018-03-01 01:20:00
【问题描述】:

我通常使用 gpg 密钥签署我的提交。但是,有时我需要通过电子邮件发送补丁,我使用git-format-patchgit-send-email 来实现。但是,这会导致我的 GPG 签名从补丁中删除。我的目标是让其他人实际将补丁应用到存储库并发送它,同时保留我的签名以确保代码的真实性。

通过使用git-am,提交者正在创建一个新的哈希,因此是新的提交所以我不确定签名是否会起作用我不确定 gpg 用于签名的内容是什么,也许只有差异?如果是这样的话,我想这会奏效。这可能吗?

我查看了 git-format-patch 上的 git 文档,似乎有一个 --signature 选项,该选项的文档记录不是很好,我尝试做一些事情来为补丁附加签名,但没有一个他们幸存到目标 git 存储库中。正确的使用方法是什么?

最后,即使添加--signature 实现了我想要实现的目标,但在创建一系列补丁并通过电子邮件发送它们时可能会很麻烦。是否有一个批处理选项可以简单地将签名附加到使用git cat-file -p <HASH> 的提交上,我可以清楚地看到该签名附加到使用git-format-patch 生成的补丁上?

谢谢

【问题讨论】:

  • 这可能会有所帮助,mikegerwitz.com/papers/git-horror-story
  • 我读过那篇文章,(确实是第一次搜索时弹出的文章之一)。然而,这篇文章采用了与我一直试图实现的完全相反的方法。如果您是项目的贡献者,您可以清楚地看到作者不支持使用 GPG 密钥签名。他建议使用Signed-off-by:,这并没有真正做同样的事情。它在 gnu/linux 内核贡献者中很流行,但没有被广泛使用。无论如何,我的目标不是添加Signed-off-by,而是实际使用gpg签名。
  • 我尝试了一些 gpg 测试。我认为git am 保留签名是不合理的。签名是使用私钥进行的。如果其他人使用您的补丁运行git am,则会创建一个新的提交对象。这个对象不是你创建的,所以它有你的签名是不合理的。您的私钥没有泄露,因此新对象的创建者无法使用您的私钥进行签名。

标签: git github gnupg gpg-signature


【解决方案1】:

我不认为git-format-patch 可以保留签名。你可以试试git bundle;它当然保留了一切;但是通过电子邮件发送就不那么方便了。

【讨论】:

    猜你喜欢
    • 2015-05-21
    • 2018-03-18
    • 2012-09-30
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2011-04-14
    相关资源
    最近更新 更多