[PATCH] SubmittingPatches: clarify some details of the patch format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
This is a first draft of a patch that clarifies a number of points
about how patches should be formatted that have tripped me up.  I have
re-filled a few of the paragraphs, which makes it hard to see from the
diff what I've changed.  This listing shows the changed words between
{ ... }:

     { This first line should be a separate paragraph, that is, it should be
    followed by an empty line, which is then followed by the body of the
    commit message } .

     { At the end of the commit message should be a Signed-off-by line giving
    your name.  This can be added to the commit message automatically by
    giving "git commit" the "--signoff" option.  This line has legal
    implications, see "Sign your work" below } .

    People on the Git mailing list need to be able to read and comment on
    the changes you are submitting.  It is important for a developer to be
    able to "quote" your changes, using standard e-mail tools, so that
    they may comment on specific portions of your code.  For this reason,
    all patches should be submitted "inline" { rather than as message
    attachments } .  If your log message (including your name on the
    Signed-off-by line) is not writable in ASCII, make sure that you send
    off { the } message in the correct encoding.

    "git format-patch" command follows the best current practice to
    format the { patch for transmission as an e-mail message.  The files
    that it outputs are sample e-mail messages in "mh" format.  The
    initial lines are sample From, To, Date, and Subject headers, which
    you will likely have to remove or revise, depending on how your MUA
    operates } .

    At the beginning of the patch should come your commit message ( { the
    first line in the Subject header, the remainder in the body of the
    message } ), ending with the Signed-off-by: lines, and a line that
    consists of three dashes, followed by the diffstat information and the
    patch itself.  If you are forwarding a patch from somebody else,
    optionally, at the beginning of the e-mail message just before the
    commit message starts, you can put a "From: " line to name that
    person.

    You often want to add additional explanation about the patch,
    other than the commit message itself.  Place such "cover letter"
    material between the three-dash { line } and the diffstat. Git-notes
    can also be inserted using the `--notes` option.

> From: Junio C Hamano <gitster@xxxxxxxxx>
> 
> I am not sure if SubmittingPatches is a good place, though.
> The document is a guidance for people who contribute to _this_
> project.
> 
> But the specialness of the first paragraph applies to any project
> that uses Git, so people other than those who contribute to this
> project should be aware of it.

All of that is true.  But what can we do to ensure that someone who
submits a patch does so with the right format?  The special treatment
of the first line is not a requirement.  See, e.g., the git-commit
manual page:

       Though not required, it’s a good idea to begin the commit message with
       a single short (less than 50 character) line summarizing the change,
       followed by a blank line and then a more thorough description. Tools
       that turn commits into email, for example, use the first line on the
       Subject: line and the rest of the commit in the body.

> Originally we literally used "first line", but that made many things
> like shortlog output and patch Subject: useless when people write a
> block of text starting from the first line without a title.  Also
> after resurrecting such a text from e-mail, "am" couldn't tell if
> the "first line" on the "Subject:" is meant to be the first line of
> the same first paragraph (which is not what we encourage), or it is
> properly a single line title, and need a blank line before the first
> line of the body.  So quite a while ago, we changed the rule to take
> "the first paragraph" and use that in these places where we want to
> give a title of a patch.

And as you note, if organizing the first line this way was a
requirement, git-am would be able to unambiguously reconstruct the
commit message from an e-mail.  The only way to minimize errors in
this probject is to clearly specify what is required within this
project.

Dale


 Documentation/SubmittingPatches |   47 +++++++++++++++++++++++++-------------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index d0a4733..e974dd7 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -85,6 +85,10 @@ identifier for the general area of the code being modified, e.g.
 If in doubt which identifier to use, run "git log --no-merges" on the
 files you are modifying to see the current conventions.
 
+This first line should be a separate paragraph, that is, it should be
+followed by an empty line, which is then followed by the body of the
+commit message.
+
 The body should provide a meaningful commit message, which:
 
   . explains the problem the change tries to solve, iow, what is wrong
@@ -102,6 +106,10 @@ its behaviour.  Try to make sure your explanation can be understood
 without external resources. Instead of giving a URL to a mailing list
 archive, summarize the relevant points of the discussion.
 
+At the end of the commit message should be a Signed-off-by line giving
+your name.  This can be added to the commit message automatically by
+giving "git commit" the "--signoff" option.  This line has legal
+implications, see "Sign your work" below.
 
 (3) Generate your patch using Git tools out of your commits.
 
@@ -122,14 +130,14 @@ that is fine, but please mark it as such.
 
 (4) Sending your patches.
 
-People on the Git mailing list need to be able to read and
-comment on the changes you are submitting.  It is important for
-a developer to be able to "quote" your changes, using standard
-e-mail tools, so that they may comment on specific portions of
-your code.  For this reason, all patches should be submitted
-"inline".  If your log message (including your name on the
-Signed-off-by line) is not writable in ASCII, make sure that
-you send off a message in the correct encoding.
+People on the Git mailing list need to be able to read and comment on
+the changes you are submitting.  It is important for a developer to be
+able to "quote" your changes, using standard e-mail tools, so that
+they may comment on specific portions of your code.  For this reason,
+all patches should be submitted "inline" rather than as message
+attachments.  If your log message (including your name on the
+Signed-off-by line) is not writable in ASCII, make sure that you send
+off the message in the correct encoding.
 
 WARNING: Be wary of your MUAs word-wrap
 corrupting your patch.  Do not cut-n-paste your patch; you can
@@ -145,17 +153,24 @@ not ready to be applied but it is for discussion, [PATCH v2],
 what you have previously sent.
 
 "git format-patch" command follows the best current practice to
-format the body of an e-mail message.  At the beginning of the
-patch should come your commit message, ending with the
-Signed-off-by: lines, and a line that consists of three dashes,
-followed by the diffstat information and the patch itself.  If
-you are forwarding a patch from somebody else, optionally, at
-the beginning of the e-mail message just before the commit
-message starts, you can put a "From: " line to name that person.
+format the patch for transmission as an e-mail message.  The files
+that it outputs are sample e-mail messages in "mh" format.  The
+initial lines are sample From, To, Date, and Subject headers, which
+you will likely have to remove or revise, depending on how your MUA
+operates.
+
+At the beginning of the patch should come your commit message (the
+first line in the Subject header, the remainder in the body of the
+message), ending with the Signed-off-by: lines, and a line that
+consists of three dashes, followed by the diffstat information and the
+patch itself.  If you are forwarding a patch from somebody else,
+optionally, at the beginning of the e-mail message just before the
+commit message starts, you can put a "From: " line to name that
+person.
 
 You often want to add additional explanation about the patch,
 other than the commit message itself.  Place such "cover letter"
-material between the three dash lines and the diffstat. Git-notes
+material between the three-dash line and the diffstat. Git-notes
 can also be inserted using the `--notes` option.
 
 Do not attach the patch as a MIME attachment, compressed or not.
-- 
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]