我并没有看到「很多开源项目都要求」sign-off。最著名的是 linux 内核。它的文档里是这么说的:
11) Sign your work
To improve tracking of who did what, especially with patches that can percolate to their final resting place in the kernel through several layers of maintainers, we've introduced a "sign-off" procedure on patches that are being emailed around.
因为在 Linux 的开发过程中,他们并不使用 GitHub 创造的「pull request」,而是通过(分布式的)电子邮件寄送补丁(所以 git 对邮件有着相当好的支持)。补丁寄来寄去的,就需要跟踪了,不然像 BSD 经历过的那样扯起皮来影响开发就不好了。「Signed-off-by」实际上是一个声明,你保证寄送的补丁符合「Developer's Certificate of Origin 1.1」里边那几点。
首先,区分 sign-off 和签名。 @nightfire 已经解释了签名。我来解释(翻译)一下 sign-off 的意义。
我并没有看到「很多开源项目都要求」sign-off。最著名的是 linux 内核。它的文档里是这么说的:
因为在 Linux 的开发过程中,他们并不使用 GitHub 创造的「pull request」,而是通过(分布式的)电子邮件寄送补丁(所以 git 对邮件有着相当好的支持)。补丁寄来寄去的,就需要跟踪了,不然像 BSD 经历过的那样扯起皮来影响开发就不好了。「Signed-off-by」实际上是一个声明,你保证寄送的补丁符合「Developer's Certificate of Origin 1.1」里边那几点。
StackOverflow 上有人说了,这只是少数几个项目的要求,大部分项目并不使用 sign-off。
PS: 你如果看内核提交的话,有时能看到一个 commit 有一长列 sign-off 的。这种情况下仅仅一个 committer 和一个 author 怎么够呢?