A short primer how to submit a single git commit as a patch via e-mail using git send-email. Signed-off-by: Ingo Rohloff <ingo.rohloff@xxxxxxxxxxxxxx> --- Documentation/process/submitting-patches.rst | 72 ++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/Documentation/process/submitting-patches.rst b/Documentation/process/submitting-patches.rst index 5219bf3cddfc..a73b94f677c8 100644 --- a/Documentation/process/submitting-patches.rst +++ b/Documentation/process/submitting-patches.rst @@ -24,6 +24,8 @@ of the mechanical work done for you, though you'll still need to prepare and document a sensible set of patches. In general, use of ``git`` will make your life as a kernel developer easier. +.. _get_source_tree: + 0) Obtain a current source tree ------------------------------- @@ -419,6 +421,7 @@ and other kernel developers more easily distinguish patches from other e-mail discussions. +.. _dev_cert_of_origin: 11) Sign your work - the Developer's Certificate of Origin ---------------------------------------------------------- @@ -892,6 +895,75 @@ command like this will do the trick:: git request-pull master git://my.public.tree/linux.git my-signed-tag +17) A simple use case: Submitting a single git commit with ``git send-email`` +----------------------------------------------------------------------------- + +The scenario: +You have a small code modification which sensibly fits into +a single commit. You want to get this modification into the kernel. + +Assumptions: + - You are running a not too old Linux installation. + - You have ``git`` installed. + - You have the tools for ``git send-email`` installed. + It seems many Linux distributions deliver this set of tools in a + separate package. So make sure you have the appropriate package installed. + ``git send-email`` is able to directly talk to an SMTP server; so you + do not need a local mail transport agent or similar. + - You have configured ``git send-email``. + You might set the properties describing how you would like to send e-mail + via SMTP with the appropriate ``git config`` commands. + In particular you might need to set the properties: + ``sendemail.smtpserver``, ``sendemail.smtpserverport``, + ``sendemail.smtpuser``, ``sendemail.smtpencryption``, ``sendemail.smtppass`` + +Process: + - Clone the kernel source tree; see :ref:`get_source_tree` + - Use ``git config`` to configure the user name and e-mail address for + yourself. + - Create and checkout a git branch to work on your code modification. + Use: ``git checkout -b <branch name>`` + - Modify the code. + - Commit your code to your local git repository into your local branch with + a single commit. + Your commit message should start with a single line: + ``<subsystem>: <summary phrase>``. + The rest of the commit message should follow :ref:`describe_changes` + - Test your changes; they must compile and hopefully fix a problem. + If there are problems, modify your commit. + Use ``git commit --amend`` to modify your commit. + - You are now ready to generate a patch file suitable for sending via e-mail. + Use:: + + git format-patch -1 -s + + This command should create a patch file, which is close to what you need + to send via e-mail. + This command also adds a "Signed-off-by:" line; see + :ref:`the_canonical_patch_format`, and :ref:`dev_cert_of_origin`. + - Verify that your patch matches the required style:: + + ./scripts/checkpatch.pl <patch file> + + Also see :ref:`Documentation/process/coding-style.rst <codingstyle>`. + If there are problems, modify your commit (``git commit --amend``) + and subsequently your e-mail patch (``git format-patch``). + - Test if you are able to send the patch to yourself:: + + git send-email --to=<your email address> <patch file> + + - If sending the e-mail to yourself worked, inspect the e-mail you have + received and check if it adheres to :ref:`the_canonical_patch_format`. + - Find out to which people the e-mail should be send:: + + ./scripts/get_maintainer.pl <patch file> + + In general send the e-mail to the appropriate maintainer and put relevant + mailing lists on CC. + - Finally send the patch e-mail with:: + + git send-email --to=<maintainer> --cc=<mail list 1> ... <patch file> + References ---------- -- 2.17.1