修改补丁

如果你是子系统或分支维护者,有时你需要稍微修改你收到的补丁以便合并它们,因为你的代码树和提交者的代码树中的代码并不完全相同。如果你严格遵守开发者来源证明(DCO)的规则 (c),你应该要求提交者重新生成 diff,但这完全是事倍功半、浪费时间和精力。规则 (b) 允许你调整代码,但如果修改了提交者的代码却让他为你引入的 bug 背书,那是非常不礼貌的。为了解决这个问题,建议你在最后一个 Signed-off-by 签名行和你自己的签名行之间添加一行,指明你所做修改的性质。虽然这不是强制要求的,但在描述前加上你的邮箱和/或姓名(均用方括号括起来),看起来足够显眼,足以让人明白你对这些最后的改动负责。示例

Signed-off-by: Random J Developer <random@developer.example.org>
[lucky@maintainer.example.org: struct foo moved from foo.c to foo.h]
Signed-off-by: Lucky K Maintainer <lucky@maintainer.example.org>

如果你维护一个稳定分支,并且同时想要注明作者、跟踪变更、合并修复,并保护提交者免受投诉,这种做法特别有帮助。请注意,在任何情况下你都不能更改作者的身份(From 头信息),因为它会出现在更新日志(changelog)中。

对向后移植者的特别说明:在提交消息的顶部(紧接在主题行之后)插入补丁来源的说明是一种常见且有用的做法,以便于跟踪。例如,以下是我们在一个 3.x-stable 版本中看到的内容

Date:   Tue Oct 7 07:26:38 2014 -0400

  libata: Un-break ATA blacklist

  commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream.

以下是补丁被向后移植到较旧版本内核后可能出现的内容

Date:   Tue May 13 22:12:27 2008 +0200

    wireless, airo: waitbusy() won't delay

    [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a]

无论采用何种格式,这些信息对于跟踪你的代码树的人,以及试图排查你代码树中 bug 的人来说,都能提供有价值的帮助。