diff options
author | Jonathan Corbet <corbet@lwn.net> | 2014-12-23 10:43:41 -0500 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2014-12-23 10:43:41 -0500 |
commit | 7994cc15d83c6188a77516f4c8400d3a4965b0a5 (patch) | |
tree | 03cdbf355e8ce1ff2267cafa953f238c7ed53017 /Documentation/SubmittingPatches | |
parent | 6de16eba62b3b4d01b2b232ea7724d5450a19e30 (diff) |
Docs: Bring SubmittingPatches more into the git era
Much of the information in SubmittingPatches shows its pre-git history.
Clean that up a bit and rephrase things with the assumption that developers
will be using git. Also rewrite the "pull requests" section and include
information on using signed tags.
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'Documentation/SubmittingPatches')
-rw-r--r-- | Documentation/SubmittingPatches | 116 |
1 files changed, 87 insertions, 29 deletions
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 8f416a2b409f..230a3b892db6 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -24,13 +24,30 @@ SECTION 1 - CREATING AND SENDING YOUR CHANGE | |||
24 | -------------------------------------------- | 24 | -------------------------------------------- |
25 | 25 | ||
26 | 26 | ||
27 | 0) Obtain a current source tree | ||
28 | ------------------------------- | ||
29 | |||
30 | If you do not have a repository with the current kernel source handy, use | ||
31 | git to obtain one. You'll want to start with the mainline repository, | ||
32 | which can be grabbed with: | ||
33 | |||
34 | git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | ||
35 | |||
36 | Note, however, that you may not want to develop against the mainline tree | ||
37 | directly. Most subsystem maintainers run their own trees and want to see | ||
38 | patches prepared against those trees. See the "T:" entry for the subsystem | ||
39 | in the MAINTAINERS file to find that tree, or simply ask the maintainer if | ||
40 | the tree is not listed there. | ||
41 | |||
42 | It is still possible to download kernel releases via tarballs (as described | ||
43 | in the next section), but that is the hard way to do kernel development. | ||
27 | 44 | ||
28 | 1) "diff -up" | 45 | 1) "diff -up" |
29 | ------------ | 46 | ------------ |
30 | 47 | ||
31 | Use "diff -up" or "diff -uprN" to create patches. git generates patches | 48 | If you must generate your patches by hand, use "diff -up" or "diff -uprN" |
32 | in this form by default; if you're using git, you can skip this section | 49 | to create patches. Git generates patches in this form by default; if |
33 | entirely. | 50 | you're using git, you can skip this section entirely. |
34 | 51 | ||
35 | All changes to the Linux kernel occur in the form of patches, as | 52 | All changes to the Linux kernel occur in the form of patches, as |
36 | generated by diff(1). When creating your patch, make sure to create it | 53 | generated by diff(1). When creating your patch, make sure to create it |
@@ -156,10 +173,15 @@ Example: | |||
156 | platform_set_drvdata(), but left the variable "dev" unused, | 173 | platform_set_drvdata(), but left the variable "dev" unused, |
157 | delete it. | 174 | delete it. |
158 | 175 | ||
176 | You should also be sure to use at least the first twelve characters of the | ||
177 | SHA-1 ID. The kernel repository holds a *lot* of objects, making | ||
178 | collisions with shorter IDs a real possibility. Bear in mind that, even if | ||
179 | there is no collision with your six-character ID now, that condition may | ||
180 | change five years from now. | ||
181 | |||
159 | If your patch fixes a bug in a specific commit, e.g. you found an issue using | 182 | If your patch fixes a bug in a specific commit, e.g. you found an issue using |
160 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the | 183 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the |
161 | SHA-1 ID, and the one line summary. | 184 | SHA-1 ID, and the one line summary. For example: |
162 | Example: | ||
163 | 185 | ||
164 | Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") | 186 | Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") |
165 | 187 | ||
@@ -188,6 +210,12 @@ If one patch depends on another patch in order for a change to be | |||
188 | complete, that is OK. Simply note "this patch depends on patch X" | 210 | complete, that is OK. Simply note "this patch depends on patch X" |
189 | in your patch description. | 211 | in your patch description. |
190 | 212 | ||
213 | When dividing your change into a series of patches, take special care to | ||
214 | ensure that the kernel builds and runs properly after each patch in the | ||
215 | series. Developers using "git bisect" to track down a problem can end up | ||
216 | splitting your patch series at any point; they will not thank you if you | ||
217 | introduce bugs in the middle. | ||
218 | |||
191 | If you cannot condense your patch set into a smaller set of patches, | 219 | If you cannot condense your patch set into a smaller set of patches, |
192 | then only post say 15 or so at a time and wait for review and integration. | 220 | then only post say 15 or so at a time and wait for review and integration. |
193 | 221 | ||
@@ -445,15 +473,15 @@ which appears in the changelog. | |||
445 | Special note to back-porters: It seems to be a common and useful practice | 473 | Special note to back-porters: It seems to be a common and useful practice |
446 | to insert an indication of the origin of a patch at the top of the commit | 474 | to insert an indication of the origin of a patch at the top of the commit |
447 | message (just after the subject line) to facilitate tracking. For instance, | 475 | message (just after the subject line) to facilitate tracking. For instance, |
448 | here's what we see in 2.6-stable : | 476 | here's what we see in a 3.x-stable release: |
449 | 477 | ||
450 | Date: Tue May 13 19:10:30 2008 +0000 | 478 | Date: Tue Oct 7 07:26:38 2014 -0400 |
451 | 479 | ||
452 | SCSI: libiscsi regression in 2.6.25: fix nop timer handling | 480 | libata: Un-break ATA blacklist |
453 | 481 | ||
454 | commit 4cf1043593db6a337f10e006c23c69e5fc93e722 upstream | 482 | commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream. |
455 | 483 | ||
456 | And here's what appears in 2.4 : | 484 | And here's what might appear in an older kernel once a patch is backported: |
457 | 485 | ||
458 | Date: Tue May 13 22:12:27 2008 +0200 | 486 | Date: Tue May 13 22:12:27 2008 +0200 |
459 | 487 | ||
@@ -462,7 +490,7 @@ And here's what appears in 2.4 : | |||
462 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] | 490 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] |
463 | 491 | ||
464 | Whatever the format, this information provides a valuable help to people | 492 | Whatever the format, this information provides a valuable help to people |
465 | tracking your trees, and to people trying to trouble-shoot bugs in your | 493 | tracking your trees, and to people trying to troubleshoot bugs in your |
466 | tree. | 494 | tree. |
467 | 495 | ||
468 | 496 | ||
@@ -558,6 +586,12 @@ method for indicating a bug fixed by the patch. See #2 above for more details. | |||
558 | 586 | ||
559 | 587 | ||
560 | 15) The canonical patch format | 588 | 15) The canonical patch format |
589 | ------------------------------ | ||
590 | |||
591 | This section describes how the patch itself should be formatted. Note | ||
592 | that, if you have your patches stored in a git repository, proper patch | ||
593 | formatting can be had with "git format-patch". The tools cannot create | ||
594 | the necessary text, though, so read the instructions below anyway. | ||
561 | 595 | ||
562 | The canonical patch subject line is: | 596 | The canonical patch subject line is: |
563 | 597 | ||
@@ -672,33 +706,57 @@ See more details on the proper patch format in the following | |||
672 | references. | 706 | references. |
673 | 707 | ||
674 | 708 | ||
675 | 16) Sending "git pull" requests (from Linus emails) | 709 | 16) Sending "git pull" requests |
710 | ------------------------------- | ||
711 | |||
712 | If you have a series of patches, it may be most convenient to have the | ||
713 | maintainer pull them directly into the subsystem repository with a | ||
714 | "git pull" operation. Note, however, that pulling patches from a developer | ||
715 | requires a higher degree of trust than taking patches from a mailing list. | ||
716 | As a result, many subsystem maintainers are reluctant to take pull | ||
717 | requests, especially from new, unknown developers. | ||
718 | |||
719 | A pull request should have [GIT] or [PULL] in the subject line. The | ||
720 | request itself should include the repository name and the branch of | ||
721 | interest on a single line; it should look something like: | ||
722 | |||
723 | Please pull from | ||
676 | 724 | ||
677 | Please write the git repo address and branch name alone on the same line | 725 | git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus |
678 | so that I can't even by mistake pull from the wrong branch, and so | ||
679 | that a triple-click just selects the whole thing. | ||
680 | 726 | ||
681 | So the proper format is something along the lines of: | 727 | to get these changes:" |
682 | 728 | ||
683 | "Please pull from | 729 | A pull request should also include an overall message saying what will be |
730 | included in the request, a "git shortlog" listing of the patches | ||
731 | themselves, and a diffstat showing the overall effect of the patch series. | ||
732 | The easiest way to get all this information together is, of course, to let | ||
733 | git do it for you with the "git request-pull" command. | ||
684 | 734 | ||
685 | git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus | 735 | Some maintainers (including Linus) want to see pull requests from signed |
736 | commits; that increases their confidence that the request actually came | ||
737 | from you. Linus, in particular, will not pull from public hosting sites | ||
738 | like GitHub in the absence of a signed tag. | ||
686 | 739 | ||
687 | to get these changes:" | 740 | The first step toward creating such tags is to make a GNUPG key and get it |
741 | signed by one or more core kernel developers. This step can be hard for | ||
742 | new developers, but there is no way around it. Attending conferences can | ||
743 | be a good way to find developers who can sign your key. | ||
688 | 744 | ||
689 | so that I don't have to hunt-and-peck for the address and inevitably | 745 | Once you have prepared a patch series in git that you wish to have somebody |
690 | get it wrong (actually, I've only gotten it wrong a few times, and | 746 | pull, create a signed tag with "git tag -s". This will create a new tag |
691 | checking against the diffstat tells me when I get it wrong, but I'm | 747 | identifying the last commit in the series and containing a signature |
692 | just a lot more comfortable when I don't have to "look for" the right | 748 | created with your private key. You will also have the opportunity to add a |
693 | thing to pull, and double-check that I have the right branch-name). | 749 | changelog-style message to the tag; this is an ideal place to describe the |
750 | effects of the pull request as a whole. | ||
694 | 751 | ||
752 | If the tree the maintainer will be pulling from is not the repository you | ||
753 | are working from, don't forget to push the signed tag explicitly to the | ||
754 | public tree. | ||
695 | 755 | ||
696 | Please use "git diff -M --stat --summary" to generate the diffstat: | 756 | When generating your pull request, use the signed tag as the target. A |
697 | the -M enables rename detection, and the summary enables a summary of | 757 | command like this will do the trick: |
698 | new/deleted or renamed files. | ||
699 | 758 | ||
700 | With rename detection, the statistics are rather different [...] | 759 | git request-pull master git://my.public.tree/linux.git my-signed-tag |
701 | because git will notice that a fair number of the changes are renames. | ||
702 | 760 | ||
703 | 761 | ||
704 | ---------------------- | 762 | ---------------------- |