diff options
Diffstat (limited to 'documentation/contributor-guide/submit-changes.rst')
-rw-r--r-- | documentation/contributor-guide/submit-changes.rst | 148 |
1 files changed, 110 insertions, 38 deletions
diff --git a/documentation/contributor-guide/submit-changes.rst b/documentation/contributor-guide/submit-changes.rst index 533aab5b83..314b41bb63 100644 --- a/documentation/contributor-guide/submit-changes.rst +++ b/documentation/contributor-guide/submit-changes.rst | |||
@@ -140,7 +140,34 @@ The following sections provide procedures for submitting changes. | |||
140 | Preparing Changes for Submission | 140 | Preparing Changes for Submission |
141 | ================================ | 141 | ================================ |
142 | 142 | ||
143 | The first thing to do is to create a new branch in your local Git repository | 143 | Set up Git |
144 | ---------- | ||
145 | |||
146 | The first thing to do is to install Git packages. Here is an example | ||
147 | on Debian and Ubuntu:: | ||
148 | |||
149 | sudo aptitude install git-core git-email | ||
150 | |||
151 | Then, you need to set a name and e-mail address that Git will | ||
152 | use to identify your commits:: | ||
153 | |||
154 | git config --global user.name "Ada Lovelace" | ||
155 | git config --global user.email "ada.lovelace@gmail.com" | ||
156 | |||
157 | Clone the Git repository for the component to modify | ||
158 | ---------------------------------------------------- | ||
159 | |||
160 | After identifying the component to modify as described in the | ||
161 | ":doc:`../contributor-guide/identify-component`" section, clone the | ||
162 | corresponding Git repository. Here is an example for OpenEmbedded-Core:: | ||
163 | |||
164 | git clone https://git.openembedded.org/openembedded-core | ||
165 | cd openembedded-core | ||
166 | |||
167 | Create a new branch | ||
168 | ------------------- | ||
169 | |||
170 | Then, create a new branch in your local Git repository | ||
144 | for your changes, starting from the reference branch in the upstream | 171 | for your changes, starting from the reference branch in the upstream |
145 | repository (often called ``master``):: | 172 | repository (often called ``master``):: |
146 | 173 | ||
@@ -150,26 +177,37 @@ repository (often called ``master``):: | |||
150 | If you have completely unrelated sets of changes to submit, you should even | 177 | If you have completely unrelated sets of changes to submit, you should even |
151 | create one branch for each set. | 178 | create one branch for each set. |
152 | 179 | ||
153 | Then, in each branch, you should group your changes into small, controlled and | 180 | Implement and commit changes |
181 | ---------------------------- | ||
182 | |||
183 | In each branch, you should group your changes into small, controlled and | ||
154 | isolated ones. Keeping changes small and isolated aids review, makes | 184 | isolated ones. Keeping changes small and isolated aids review, makes |
155 | merging/rebasing easier and keeps the change history clean should anyone need | 185 | merging/rebasing easier and keeps the change history clean should anyone need |
156 | to refer to it in future. | 186 | to refer to it in future. |
157 | 187 | ||
158 | To this purpose, you should create *one Git commit per change*, | 188 | To this purpose, you should create *one Git commit per change*, |
159 | corresponding to each of the patches you will eventually submit. | 189 | corresponding to each of the patches you will eventually submit. |
160 | So, for each identified change: | 190 | See `further guidance <https://www.kernel.org/doc/html/latest/process/submitting-patches.html#separate-your-changes>`__ |
191 | in the Linux kernel documentation if needed. | ||
161 | 192 | ||
162 | #. *Stage Your Change:* Stage your change by using the ``git add`` | 193 | #. *Stage Your Changes:* Stage your changes by using the ``git add`` |
163 | command on each file you modified. | 194 | command on each file you modified. If you want to stage all the |
195 | files you modified, you can even use the ``git add -A`` command. | ||
164 | 196 | ||
165 | #. *Commit Your Change:* Commit the change by using the ``git commit`` | 197 | #. *Commit Your Changes:* This is when you can create separate commits. For |
166 | command. Make sure your commit information follows standards by | 198 | each commit to create, use the ``git commit -s`` command with the files |
167 | following these accepted conventions: | 199 | or directories you want to include in the commit:: |
168 | 200 | ||
169 | - Be sure to include a "Signed-off-by:" line in the same style as | 201 | $ git commit -s file1 file2 dir1 dir2 ... |
170 | required by the Linux kernel. This can be done by using the | 202 | |
171 | ``git commit -s`` command. Adding this line signifies that you, | 203 | To include **a**\ ll staged files:: |
172 | the submitter, have agreed to the `Developer's Certificate of Origin 1.1 | 204 | |
205 | $ git commit -sa | ||
206 | |||
207 | - The ``-s`` option of ``git commit`` adds a "Signed-off-by:" line | ||
208 | to your commit message. There is the same requirement for contributing | ||
209 | to the Linux kernel. Adding such a line signifies that you, the | ||
210 | submitter, have agreed to the `Developer's Certificate of Origin 1.1 | ||
173 | <https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>`__ | 211 | <https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>`__ |
174 | as follows: | 212 | as follows: |
175 | 213 | ||
@@ -241,39 +279,74 @@ So, for each identified change: | |||
241 | 279 | ||
242 | detailed description of change | 280 | detailed description of change |
243 | 281 | ||
244 | Using Email to Submit Patches | 282 | Creating Patches |
245 | ============================= | 283 | ================ |
246 | 284 | ||
247 | Depending on the components changed, you need to submit the email to a | 285 | Here is the general procedure on how to create patches to be sent through email: |
248 | specific mailing list. For some guidance on which mailing list to use, | 286 | |
249 | see the ":ref:`contributor-guide/submit-changes:finding a suitable mailing list`" | 287 | #. *Describe the Changes in your Branch:* If you have more than one commit |
250 | section above. | 288 | in your branch, it's recommended to provide a cover letter describing |
289 | the series of patches you are about to send. | ||
290 | |||
291 | For this purpose, a good solution is to store the cover letter contents | ||
292 | in the branch itself:: | ||
251 | 293 | ||
252 | Here is the general procedure on how to create and submit patches through email: | 294 | git branch --edit-description |
253 | 295 | ||
254 | #. *Generate Patches for your Branch:* The ``git format-patch`` command for | 296 | This will open a text editor to fill in the description for your |
297 | changes. This description can be updated when necessary and will | ||
298 | be used by Git to create the cover letter together with the patches. | ||
299 | |||
300 | It is recommended to start this description with a title line which | ||
301 | will serve a the subject line for the cover letter. | ||
302 | |||
303 | #. *Generate Patches for your Branch:* The ``git format-patch`` command will | ||
255 | generate patch files for each of the commits in your branch. You need | 304 | generate patch files for each of the commits in your branch. You need |
256 | to pass the reference branch your branch starts from:: | 305 | to pass the reference branch your branch starts from. |
306 | |||
307 | If you branch didn't need a description in the previous step:: | ||
257 | 308 | ||
258 | $ git format-patch <ref-branch> | 309 | $ git format-patch <ref-branch> |
259 | 310 | ||
260 | After the command is run, the current directory contains numbered | 311 | If you filled a description for your branch, you will want to generate |
261 | ``.patch`` files for the commits in your branch. | 312 | a cover letter too:: |
262 | 313 | ||
263 | If you have more than one patch, you should also use the ``--cover`` | 314 | $ git format-patch --cover-letter --cover-from-description=auto <ref-branch> |
264 | option with the command, which generates a cover letter as the first | ||
265 | "patch" in the series. You can then edit the cover letter to provide | ||
266 | a description for the series of patches. Run ``man git-format-patch`` | ||
267 | for details about this command. | ||
268 | 315 | ||
269 | #. *Send the patches via email:* Send the patches to the recipients and | 316 | After the command is run, the current directory contains numbered |
270 | relevant mailing lists by using the ``git send-email`` command. | 317 | ``.patch`` files for the commits in your branch. If you have a cover |
318 | letter, it will be in the ``0000-cover-letter.patch``. | ||
271 | 319 | ||
272 | .. note:: | 320 | .. note:: |
273 | 321 | ||
274 | In order to use ``git send-email``, you must have the proper Git packages | 322 | The ``--cover-from-description=auto`` option makes ``git format-patch`` |
275 | installed on your host. | 323 | use the first paragraph of the branch description as the cover |
276 | For Ubuntu, Debian, and Fedora the package is ``git-email``. | 324 | letter title. Another possibility, which is easier to remember, is to pass |
325 | only the ``--cover-letter`` option, but you will have to edit the | ||
326 | subject line manually every time you generate the patches. | ||
327 | |||
328 | See the `git format-patch manual page <https://git-scm.com/docs/git-format-patch>`__ | ||
329 | for details. | ||
330 | |||
331 | #. *Review each of the Patch Files:* This final review of the patches | ||
332 | before sending them often allows to view your changes from a different | ||
333 | perspective and discover defects such as typos, spacing issues or lines | ||
334 | or even files that you didn't intend to modify. This review should | ||
335 | include the cover letter patch too. | ||
336 | |||
337 | If necessary, rework your commits as described in | ||
338 | ":ref:`contributor-guide/submit-changes:take patch review into account`". | ||
339 | |||
340 | Sending the Patches via Email | ||
341 | ============================= | ||
342 | |||
343 | Depending on the components changed, you need to submit the email to a | ||
344 | specific mailing list. For some guidance on which mailing list to use, | ||
345 | see the ":ref:`contributor-guide/submit-changes:finding a suitable mailing list`" | ||
346 | section above. | ||
347 | |||
348 | #. *Send the patches via email:* Send the patches to the recipients and | ||
349 | relevant mailing lists by using the ``git send-email`` command. | ||
277 | 350 | ||
278 | The ``git send-email`` command sends email by using a local or remote | 351 | The ``git send-email`` command sends email by using a local or remote |
279 | Mail Transport Agent (MTA) such as ``msmtp``, ``sendmail``, or | 352 | Mail Transport Agent (MTA) such as ``msmtp``, ``sendmail``, or |
@@ -420,8 +493,8 @@ have been followed: | |||
420 | $ poky/scripts/create-pull-request -h | 493 | $ poky/scripts/create-pull-request -h |
421 | $ poky/scripts/send-pull-request -h | 494 | $ poky/scripts/send-pull-request -h |
422 | 495 | ||
423 | Responding to Patch Review | 496 | Take Patch Review into Account |
424 | ========================== | 497 | ============================== |
425 | 498 | ||
426 | You may get feedback on your submitted patches from other community members | 499 | You may get feedback on your submitted patches from other community members |
427 | or from the automated patchtest service. If issues are identified in your | 500 | or from the automated patchtest service. If issues are identified in your |
@@ -494,9 +567,8 @@ follows: | |||
494 | a newer version of the software which includes an upstream fix for the | 567 | a newer version of the software which includes an upstream fix for the |
495 | issue or when the issue has been fixed on the master branch in a way | 568 | issue or when the issue has been fixed on the master branch in a way |
496 | that introduces backwards incompatible changes. In this case follow the | 569 | that introduces backwards incompatible changes. In this case follow the |
497 | steps in ":ref:`contributor-guide/submit-changes:preparing changes for submission`" and | 570 | steps in ":ref:`contributor-guide/submit-changes:preparing changes for submission`" |
498 | ":ref:`contributor-guide/submit-changes:using email to submit patches`" | 571 | and in the following sections but modify the subject header of your patch |
499 | but modify the subject header of your patch | ||
500 | email to include the name of the stable branch which you are | 572 | email to include the name of the stable branch which you are |
501 | targetting. This can be done using the ``--subject-prefix`` argument to | 573 | targetting. This can be done using the ``--subject-prefix`` argument to |
502 | ``git format-patch``, for example to submit a patch to the dunfell | 574 | ``git format-patch``, for example to submit a patch to the dunfell |