首页 > 其他分享 >内核维护者手册 - 创建拉取请求【ChatGPT】

内核维护者手册 - 创建拉取请求【ChatGPT】

时间:2023-12-08 21:33:38浏览次数:44  
标签:git 请求 标签 misc 维护者 拉取 char ChatGPT

创建拉取请求

本章描述了维护者如何创建并提交拉取请求给其他维护者。这对于将一个维护者的更改传输到另一个维护者的树中非常有用。

这份文档是由Tobin C. Harding(当时并不是一位经验丰富的维护者)根据Greg Kroah-Hartman和Linus Torvalds在LKML上的评论撰写的。Jonathan Corbet和Mauro Carvalho Chehab提出了建议和修正。误导是无意的但不可避免,请将滥用行为指向Tobin C. Harding [email protected]

原始电子邮件线程:

https://lore.kernel.org/r/[email protected]

创建分支

首先,您需要在一个单独的分支上拥有您希望包含在拉取请求中的所有更改。通常,您会将此分支基于您打算发送拉取请求的开发者树中的一个分支。

为了创建拉取请求,您必须首先给刚刚创建的分支打上标签。建议您选择一个有意义的标签名称,以便您和其他人即使过了一段时间仍能理解。一个好的做法是在名称中包含原始子系统的指示器和目标内核版本。

Greg提供了以下建议。一个混杂的驱动程序/char的拉取请求,将应用于内核版本4.15-rc1,可以命名为char-misc-4.15-rc1。如果这样的标签是从名为char-misc-next的分支产生的,您将使用以下命令:

git tag -s char-misc-4.15-rc1 char-misc-next

这将基于char-misc-next分支中的最后一次提交创建一个名为char-misc-4.15-rc1的签名标签,并使用您的gpg密钥对其进行签名(请参阅配置Git)。

Linus只会接受基于签名标签的拉取请求。其他维护者可能会有所不同。

当您运行上述命令时,git会将您带入编辑器,并要求您描述该标签。在这种情况下,您正在描述一个拉取请求,因此要概述其中包含了什么,为什么应该合并,以及是否进行了任何测试。所有这些信息最终都会出现在标签本身中,然后在维护者合并拉取请求时出现在合并提交中。因此,请写得好,因为它将永远存在于内核树中。

正如Linus所说:

无论如何,对我来说,重要的部分是消息。我想要理解我正在拉取的内容,以及为什么我应该拉取它。我还希望将该消息用作合并的消息,因此它不仅对我有意义,而且作为历史记录也有意义。

请注意,如果拉取请求有什么奇怪之处,那么解释中应该非常清楚。如果您正在触及您不维护的文件,请解释为什么。无论如何,我都会在diffstat中看到它,如果您没有提到它,我会变得更加怀疑。当您在合并窗口之后向我发送新的内容(甚至是修复bug的内容,但看起来很可怕的内容),请不仅解释它们做了什么以及为什么要这样做,还要解释时机。是什么导致这个内容没有通过合并窗口。。

我会同时考虑您在电子邮件拉取请求中写的内容和在签名标签中写的内容,因此根据您的工作流程,您可以在签名标签中描述您的工作(这也将自动转换为拉取请求电子邮件),或者您可以在签名标签中只放置一个没有趣味的占位符,并在您实际发送拉取请求时稍后描述工作。

是的,我会编辑消息。部分原因是因为我倾向于做一些微不足道的格式化(整个缩进和引用等),但部分原因是因为消息的一部分可能在我拉取时对我有意义(描述冲突和您发送它的个人问题),但在合并提交消息的上下文中可能没有意义,因此我会尽量使其有意义。我还会纠正我注意到的任何拼写错误和语法错误,特别是对于非母语者(但也适用于母语者;^)。但我可能会漏掉一些,甚至添加一些。

Linus

Greg给出了一个示例拉取请求:

Char/Misc patches for 4.15-rc1

Here is the big char/misc patch set for the 4.15-rc1 merge window.
Contained in here is the normal set of new functions added to all
of these crazy drivers, as well as the following brand new
subsystems:
        - time_travel_controller: Finally a set of drivers for the
          latest time travel bus architecture that provides i/o to
          the CPU before it asked for it, allowing uninterrupted
          processing
        - relativity_shifters: due to the affect that the
          time_travel_controllers have on the overall system, there
          was a need for a new set of relativity shifter drivers to
          accommodate the newly formed black holes that would
          threaten to suck CPUs into them.  This subsystem handles
          this in a way to successfully neutralize the problems.
          There is a Kconfig option to force these to be enabled
          when needed, so problems should not occur.

All of these patches have been successfully tested in the latest
linux-next releases, and the original problems that it found have
all been resolved (apologies to anyone living near Canberra for the
lack of the Kconfig options in the earlier versions of the
linux-next tree creations.)

Signed-off-by: Your-name-here <your_email@domain>

标签消息格式就像一个git提交ID。顶部一行是“摘要主题”,并确保在底部签名。

现在您有了一个本地签名标签,您需要将其推送到可以检索的位置:

git push origin char-misc-4.15-rc1

创建拉取请求

最后要做的事情是创建拉取请求消息。git会很方便地使用git request-pull命令为您执行此操作,但它需要一些帮助来确定您想要拉取什么,以及要基于哪个位置进行拉取(以显示要拉取的正确更改和diffstat)。以下命令将生成一个拉取请求:

git request-pull master git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git/ char-misc-4.15-rc1

引用Greg的话:

这是要求git比较从'char-misc-4.15-rc1'标签位置到'master'分支的头部的差异(在我的情况下,指向我从Linus的树中分叉出来的最后位置,通常是一个-rc发布),并使用git://协议进行拉取。如果您希望使用https://,也可以在这里使用(但请注意,一些身处防火墙后面的人可能会在使用https git拉取时遇到问题)。

如果要求拉取的char-misc-4.15-rc1标签在我要求拉取的存储库中不存在,git会抱怨说它不存在,这是一个记住实际将其推送到公共位置的方便方法。

'git request-pull'的输出将包含要从中拉取的git树和特定标签的位置,以及该标签的完整文本描述(这就是为什么您需要在该标签中提供良好的信息)。它还将创建一个拉取请求的diffstat和一个提供拉取请求的各个提交的shortlog。

Linus回应说他倾向于更喜欢git://协议。其他维护者可能有不同的偏好。另外,请注意,如果您在没有签名标签的情况下创建拉取请求,则https://可能是一个更好的选择。请参阅原始线程以获取完整讨论。

提交拉取请求

拉取请求的提交方式与普通补丁相同。以内联电子邮件的形式发送给维护者,并抄送LKML和任何必要的子系统特定列表。发送给Linus的拉取请求通常具有以下主题行:

[GIT PULL] changes for v4.15-rc1

标签:git,请求,标签,misc,维护者,拉取,char,ChatGPT
From: https://www.cnblogs.com/pengdonglin137/p/17889084.html

相关文章

  • 内核维护者手册 - 处理混乱的拉取请求差异统计【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/maintainer/messy-diffstat.html处理混乱的拉取请求差异统计子系统维护者通常在将工作发送到上游的过程中使用gitrequest-pull命令。通常,结果包括一个漂亮的差异统计,显示将要修改的文件以及每个文件将被修改的程度。然而,偶尔会出现一个......
  • 内核维护者手册 - 特性和驱动程序维护者【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/maintainer/feature-and-driver-maintainers.html术语“维护者”涵盖了从处理补丁和拉取请求几乎全职工作的人,到负责小特性或驱动程序的人的广泛范围。与本章的大部分内容不同,本节适用于后者(更多人的群体)。它提供了维护者小规模代码部分......
  • 内核维护者手册 - 配置Git【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/maintainer/configure-git.html配置Git本章描述了维护者级别的Git配置。在拉取请求中使用的标记分支(请参阅创建拉取请求)应该由开发者的公共GPG密钥进行签名。可以通过向gittag传递-u来创建已签名的标签。然而,由于通常会为项......
  • Contributor Covenant 行为准则 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/code-of-conduct.htmlContributorCovenant行为准则我们的承诺为了营造一个开放、友好的环境,我们作为贡献者和维护者承诺,无论年龄、体型、残疾、种族、性别特征、性别认同和表达、经验水平、教育程度、社会经济地位、国籍、个......
  • Kernel Maintainer Handbook 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/maintainer/index.htmlKernelMaintainerHandbook这份文档是为内核维护者编写的指南的谦逊开端。这里还有很多工作要做!请随时提出(并编写)对这份指南的补充。功能和驱动程序维护者责任选择维护者不遵守规定配置Git创建提交链......
  • 提交补丁:将您的代码提交到内核的基本指南 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/submitting-patches.html对于希望向Linux内核提交更改的个人或公司来说,如果您不熟悉“系统”,这个过程有时可能会令人望而生畏。本文是一些建议的集合,可以极大地增加您的更改被接受的机会。本文档以相对简洁的格式包含了大量的建......
  • Linux内核开发流程指南 - 8. 获取更多信息【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/8.Conclusion.html以下是您提供的文本的中文翻译:8.获取更多信息关于Linux内核开发及相关主题,有许多信息来源。其中最重要的始终是内核源代码分发中的Documentation目录。从顶层的process/howto.rst开始;同时也阅读process/subm......
  • Linux内核开发流程指南 - 4. 编写正确的代码【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/4.Coding.html4.编写正确的代码虽然坚实且以社区为导向的设计过程有很多值得说的地方,但任何内核开发项目的证明都在于最终的代码。其他开发人员将审查这些代码,并将其合并(或不合并)到主线树中。因此,代码的质量将决定项目的最终成......
  • Linux内核开发流程指南 - 5. 编写正确的代码【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/5.Posting.html5.提交补丁迟早会有一个时刻,你的工作准备好被提交给社区审查,并最终被合并到主线内核中。毫不奇怪,内核开发社区已经形成了一套用于提交补丁的惯例和程序,遵循这些规定将使所有相关人员的生活变得更加轻松。本文将......
  • Linux内核开发流程指南 - 6. 跟进【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/6.Followthrough.html6.跟进到目前为止,您已经遵循了迄今为止给出的指南,并且凭借自己的工程技能,发布了一系列完美的补丁。即使是经验丰富的内核开发人员也可能犯的最大错误之一是认为他们的工作现在已经完成。事实上,发布补丁标......