【问题标题】:git add Signed-off-by line using format.signoff not workinggit add Signed-off-by line using format.signoff 不工作
【发布时间】:2013-02-07 13:57:47
【问题描述】:

我的客户端git版本是1.7.0.4。

我想在提交消息时在提交日志消息的末尾自动为提交者添加一个“Signed-off-by”行。

  1. 当我设置git config --global format.signoff true 并运行git commit -m "modify something" 时,我在git log 中看不到“Signed-off-by”。
  2. 如果我使用git commit -m -s "modify something",则git log 中会显示“Signed-off-by”。

谁能帮忙?

【问题讨论】:

    标签: git format config


    【解决方案1】:

    现在有一种简单的方法可以通过使用钩子和git-interpret-trailers 命令自动签署尚未签署的任何提交。在即将发布的 git 2.15 版本中,该命令允许简单地检查现有的签核(无论其值/作者是什么),如果还没有,则添加您的签核。截至 2017 年 10 月,所需的代码尚未在任何 git 版本中(但在其 master 分支中)!

    将以下内容另存为.git/hooks/prepare-commit-msg.git/hooks/commit-msg(有关差异,请参见here)并使其可执行。

    #!/bin/sh
    
    NAME=$(git config user.name)
    EMAIL=$(git config user.email)
    
    if [ -z "$NAME" ]; then
        echo "empty git config user.name"
        exit 1
    fi
    
    if [ -z "$EMAIL" ]; then
        echo "empty git config user.email"
        exit 1
    fi
    
    git interpret-trailers --if-exists doNothing --trailer \
        "Signed-off-by: $NAME <$EMAIL>" \
        --in-place "$1"
    

    【讨论】:

    • 做得很好。 +1。我参考你的答案以获得更多可见性,并参考stackoverflow.com/a/41361273/6309 我提到git interpret-trailers
    • 感谢您提出基于git-interpret-trailers 技术的解决方案。对我来说,决定性的优势在于,无论触发提交的工具和配置如何,它都能正常工作——我经常使用git gui
    • 不幸的是,情况并非总是如此。我不记得具体是哪个,但我有一些应用程序可以解决这个问题(可以使用 git commit -n 进行类似操作)并且直接提交而不执行钩子。
    【解决方案2】:

    默认情况下,您可以在项目中通过创建一个包含一些空白行和已签名文本的文件(例如“~/MYPROJECT/git-template”)来签名,如下所示:

    Signed-off-by: Your Name <your.email@example.com>
    

    然后配置 git 以将其用作提交模板。例如:

    git config commit.template ~/MYPROJECT/git-template
    

    确保您的项目文档在某个地方签署了该项目的意义。您可以将以下文本复制到 CONTRIBUTING.md 文件中:

    所有贡献(包括拉取请求)必须同意 开发者原产地证书 (DCO) 版本 1.1。这 与 Linux 内核创建和使用的完全一样 开发人员并发布在http://developercertificate.org/。这是一个 开发商证明他或她有权提交 补丁以包含在项目中。只需提交贡献 暗示此协议,但是,请包含“签名人”标签 在每个补丁中(此标签是确认您 同意 DCO)。

    【讨论】:

      【解决方案3】:

      Git 2.14.x/2.15 更新:正如我在“Git - Detect if commit is signed off programmatically”中提到的,您将能够解析Signed-off-By 行的提交消息预告片。

      git interpret-trailers”已经学会了“--parse”和其他一些选项,以使脚本更容易从提交日志消息中获取现有的尾行。

      请参阅stefanctanswer 以获取commit-msg client-side hook,它将使用git interpret-trailers


      原始答案(2013 年)

      format.signoffabout patch(如图所示,例如in this patch):

      format.signoff
      

      一个布尔值,允许您默认启用 format-patch 的 -s/--signoff 选项

      它与git commit -s无关。

      换句话说,您不必签署每个提交,但是当您将它们发布为供其他人使用的补丁时(如“git: submitting patches”),那么您应该签署他们。

      有关Signed-of-by 的确切含义,请参阅“What is the Sign Off feature in Git for?”。

      【讨论】:

        猜你喜欢
        • 2012-11-07
        • 2015-06-26
        • 2018-06-22
        • 2012-04-19
        • 2014-09-09
        • 2017-10-11
        • 1970-01-01
        • 2018-07-30
        • 2012-11-23
        相关资源
        最近更新 更多