1989cfaecSWu XiangCheng.. include:: ../disclaimer-zh_CN.rst
2989cfaecSWu XiangCheng
3989cfaecSWu XiangCheng:Original: Documentation/maintainer/pull-requests.rst
4989cfaecSWu XiangCheng
5989cfaecSWu XiangCheng:译者:
6989cfaecSWu XiangCheng
7989cfaecSWu XiangCheng 吴想成 Wu XiangCheng <bobwxc@email.cn>
8989cfaecSWu XiangCheng
9989cfaecSWu XiangCheng.. _pullrequests_zh:
10989cfaecSWu XiangCheng
11989cfaecSWu XiangCheng如何创建拉取请求
12989cfaecSWu XiangCheng================
13989cfaecSWu XiangCheng
14989cfaecSWu XiangCheng本章描述维护人员如何创建并向其他维护人员提交拉取请求。这对将更改从一个维护者
15989cfaecSWu XiangCheng树转移到另一个维护者树非常有用。
16989cfaecSWu XiangCheng
17989cfaecSWu XiangCheng本文档由Tobin C. Harding(当时他尚不是一名经验丰富的维护人员)编写,内容主要
18989cfaecSWu XiangCheng来自Greg Kroah Hartman和Linus Torvalds在LKML上的评论。Jonathan Corbet和Mauro
19989cfaecSWu XiangChengCarvalho Chehab提出了一些建议和修改。错误不可避免,如有问题,请找Tobin C.
20989cfaecSWu XiangChengHarding <me@tobin.cc>。
21989cfaecSWu XiangCheng
22989cfaecSWu XiangCheng原始邮件线程::
23989cfaecSWu XiangCheng
24*a9d85efbSThorsten Leemhuis	https://lore.kernel.org/r/20171114110500.GA21175@kroah.com
25989cfaecSWu XiangCheng
26989cfaecSWu XiangCheng
27989cfaecSWu XiangCheng创建分支
28989cfaecSWu XiangCheng--------
29989cfaecSWu XiangCheng
30989cfaecSWu XiangCheng首先,您需要将希望包含拉取请求里的所有更改都放在单独分支中。通常您将基于某开发
31989cfaecSWu XiangCheng人员树的一个分支,一般是打算向其发送拉取请求的开发人员。
32989cfaecSWu XiangCheng
33989cfaecSWu XiangCheng为了创建拉取请求,您必须首先标记刚刚创建的分支。建议您选择一个有意义的标记名,
34989cfaecSWu XiangCheng以即使过了一段时间您和他人仍能理解的方式。在名称中包含源子系统和目标内核版本
35989cfaecSWu XiangCheng的指示也是一个好的做法。
36989cfaecSWu XiangCheng
37989cfaecSWu XiangChengGreg提供了以下内容。对于一个含有drivers/char中混杂事项、将应用于4.15-rc1内核的
38989cfaecSWu XiangCheng拉取请求,可以命名为 ``char-misc-4.15-rc1`` 。如果要在 ``char-misc-next`` 分支
39989cfaecSWu XiangCheng上打上此标记,您可以使用以下命令::
40989cfaecSWu XiangCheng
41989cfaecSWu XiangCheng	git tag -s char-misc-4.15-rc1 char-misc-next
42989cfaecSWu XiangCheng
43989cfaecSWu XiangCheng这将在 ``char-misc-next`` 分支的最后一个提交上创建一个名为 ``char-misc-4.15-rc1``
44989cfaecSWu XiangCheng的标记,并用您的gpg密钥签名(参见 Documentation/maintainer/configure-git.rst )。
45989cfaecSWu XiangCheng
46989cfaecSWu XiangChengLinus只接受基于签名过的标记的拉取请求。其他维护者可能会有所不同。
47989cfaecSWu XiangCheng
48989cfaecSWu XiangCheng当您运行上述命令时 ``git`` 会打开编辑器要求你描述一下这个标记。在本例中您需要
49989cfaecSWu XiangCheng描述拉取请求,所以请概述一下包含的内容,为什么要合并,是否完成任何测试。所有
50989cfaecSWu XiangCheng这些信息都将留在标记中,然后在维护者合并拉取请求时保留在合并提交中。所以把它
51989cfaecSWu XiangCheng写好,它将永远留在内核中。
52989cfaecSWu XiangCheng
53989cfaecSWu XiangCheng正如Linus所说::
54989cfaecSWu XiangCheng
55989cfaecSWu XiangCheng	不管怎么样,至少对我来说,重要的是 *信息* 。我需要知道我在拉取什么、
56989cfaecSWu XiangCheng	为什么我要拉取。我也希望将此消息用于合并消息,因此它不仅应该对我有
57989cfaecSWu XiangCheng	意义,也应该可以成为一个有意义的历史记录。
58989cfaecSWu XiangCheng
59989cfaecSWu XiangCheng	注意,如果拉取请求有一些不寻常的地方,请详细说明。如果你修改了并非
60989cfaecSWu XiangCheng	由你维护的文件,请解释 **为什么** 。我总会在差异中看到的,如果你不
61989cfaecSWu XiangCheng	提的话,我只会觉得分外可疑。当你在合并窗口后给我发新东西的时候,
62989cfaecSWu XiangCheng	(甚至是比较重大的错误修复),不仅需要解释做了什么、为什么这么做,
63989cfaecSWu XiangCheng	还请解释一下 **时间问题** 。为什么错过了合并窗口……
64989cfaecSWu XiangCheng
65989cfaecSWu XiangCheng	我会看你写在拉取请求邮件和签名标记里面的内容,所以根据你的工作流,
66989cfaecSWu XiangCheng	你可以在签名标记里面描述工作内容(也会自动放进拉取请求邮件),也
67989cfaecSWu XiangCheng	可以只在标记里面放个占位符,稍后在你实际发给我拉取请求时描述工作内容。
68989cfaecSWu XiangCheng
69989cfaecSWu XiangCheng	是的,我会编辑这些消息。部分因为我需要做一些琐碎的格式调整(整体缩进、
70989cfaecSWu XiangCheng	括号等),也因为此消息可能对我有意义(描述了冲突或一些个人问题)而对
71989cfaecSWu XiangCheng	合并提交信息上下文没啥意义,因此我需要尽力让它有意义起来。我也会
72989cfaecSWu XiangCheng	修复一些拼写和语法错误,特别是非母语者(母语者也是;^)。但我也会删掉
73989cfaecSWu XiangCheng	或增加一些内容。
74989cfaecSWu XiangCheng
75989cfaecSWu XiangCheng			Linus
76989cfaecSWu XiangCheng
77989cfaecSWu XiangChengGreg给出了一个拉取请求的例子::
78989cfaecSWu XiangCheng
79989cfaecSWu XiangCheng	Char/Misc patches for 4.15-rc1
80989cfaecSWu XiangCheng
81989cfaecSWu XiangCheng	Here is the big char/misc patch set for the 4.15-rc1 merge window.
82989cfaecSWu XiangCheng	Contained in here is the normal set of new functions added to all
83989cfaecSWu XiangCheng	of these crazy drivers, as well as the following brand new
84989cfaecSWu XiangCheng	subsystems:
85989cfaecSWu XiangCheng		- time_travel_controller: Finally a set of drivers for the
86989cfaecSWu XiangCheng		  latest time travel bus architecture that provides i/o to
87989cfaecSWu XiangCheng		  the CPU before it asked for it, allowing uninterrupted
88989cfaecSWu XiangCheng		  processing
89989cfaecSWu XiangCheng		- relativity_shifters: due to the affect that the
90989cfaecSWu XiangCheng		  time_travel_controllers have on the overall system, there
91989cfaecSWu XiangCheng		  was a need for a new set of relativity shifter drivers to
92989cfaecSWu XiangCheng		  accommodate the newly formed black holes that would
93989cfaecSWu XiangCheng		  threaten to suck CPUs into them.  This subsystem handles
94989cfaecSWu XiangCheng		  this in a way to successfully neutralize the problems.
95989cfaecSWu XiangCheng		  There is a Kconfig option to force these to be enabled
96989cfaecSWu XiangCheng		  when needed, so problems should not occur.
97989cfaecSWu XiangCheng
98989cfaecSWu XiangCheng	All of these patches have been successfully tested in the latest
99989cfaecSWu XiangCheng	linux-next releases, and the original problems that it found have
100989cfaecSWu XiangCheng	all been resolved (apologies to anyone living near Canberra for the
101989cfaecSWu XiangCheng	lack of the Kconfig options in the earlier versions of the
102989cfaecSWu XiangCheng	linux-next tree creations.)
103989cfaecSWu XiangCheng
104989cfaecSWu XiangCheng	Signed-off-by: Your-name-here <your_email@domain>
105989cfaecSWu XiangCheng
106989cfaecSWu XiangCheng
107989cfaecSWu XiangCheng此标记消息格式就像一个git提交。顶部有一行“总结标题”, 一定要在下面sign-off。
108989cfaecSWu XiangCheng
109989cfaecSWu XiangCheng现在您已经有了一个本地签名标记,您需要将它推送到可以被拉取的位置::
110989cfaecSWu XiangCheng
111989cfaecSWu XiangCheng	git push origin char-misc-4.15-rc1
112989cfaecSWu XiangCheng
113989cfaecSWu XiangCheng
114989cfaecSWu XiangCheng创建拉取请求
115989cfaecSWu XiangCheng------------
116989cfaecSWu XiangCheng
117989cfaecSWu XiangCheng最后要做的是创建拉取请求消息。可以使用 ``git request-pull`` 命令让 ``git``
118989cfaecSWu XiangCheng为你做这件事,但它需要确定你想拉取什么,以及拉取针对的基础(显示正确的拉取
119989cfaecSWu XiangCheng更改和变更状态)。以下命令将生成一个拉取请求::
120989cfaecSWu XiangCheng
121989cfaecSWu XiangCheng	git request-pull master git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git/ char-misc-4.15-rc1
122989cfaecSWu XiangCheng
123989cfaecSWu XiangCheng引用Greg的话::
124989cfaecSWu XiangCheng
125989cfaecSWu XiangCheng	此命令要求git比较从“char-misc-4.15-rc1”标记位置到“master”分支头(上述
126989cfaecSWu XiangCheng	例子中指向了我从Linus的树分叉的地方,通常是-rc发布)的差异,并去使用
127989cfaecSWu XiangCheng	git:// 协议拉取。如果你希望使用 https:// 协议,也可以用在这里(但是请
128989cfaecSWu XiangCheng	注意,部分人由于防火墙问题没法用https协议拉取)。
129989cfaecSWu XiangCheng
130989cfaecSWu XiangCheng	如果char-misc-4.15-rc1标记没有出现在我要求拉取的仓库中,git会提醒
131989cfaecSWu XiangCheng	它不在那里,所以记得推送到公开地方。
132989cfaecSWu XiangCheng
133989cfaecSWu XiangCheng	“git request-pull”会包含git树的地址和需要拉取的特定标记,以及标记
134989cfaecSWu XiangCheng	描述全文(详尽描述标记)。同时它也会创建此拉取请求的差异状态和单个
135989cfaecSWu XiangCheng	提交的缩短日志。
136989cfaecSWu XiangCheng
137989cfaecSWu XiangChengLinus回复说他倾向于 ``git://`` 协议。其他维护者可能有不同的偏好。另外,请注意
138989cfaecSWu XiangCheng如果你创建的拉取请求没有签名标记, ``https://`` 可能是更好的选择。完整的讨论
139989cfaecSWu XiangCheng请看原邮件。
140989cfaecSWu XiangCheng
141989cfaecSWu XiangCheng
142989cfaecSWu XiangCheng提交拉取请求
143989cfaecSWu XiangCheng------------
144989cfaecSWu XiangCheng
145989cfaecSWu XiangCheng拉取请求的提交方式与普通补丁相同。向维护人员发送内联电子邮件并抄送LKML以及
146989cfaecSWu XiangCheng任何必要特定子系统的列表。对Linus的拉取请求通常有如下主题行::
147989cfaecSWu XiangCheng
148989cfaecSWu XiangCheng	[GIT PULL] <subsystem> changes for v4.15-rc1
149