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

Re: [PATCH] docs: document patch rules


  • To: Juergen Gross <jgross@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Thu, 3 Feb 2022 10:36:20 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pJJE/ITSJDKPmZHIXrBeGC0SyS/eYpEwZlP5PQ9vkRE=; b=V9laSaGxriuNp8HPi3YX1j8fkiUKdmFbSbHhL15fce2Gfz/kvKcsisjA2YaG/7rio8E+on6cNAarqCqfmkWkjWBP2DLKKWfQAV0whfesg5Uljww3SLRNU8WJh7scWYgJ6hHdwXQUdQe9qBzPiXGUfkMzSWnv6h/CqK8mWFAzdkybFJzXT34dLSW6IgqQ53uy6nW40f2iFo4elXBQ7jRg1P9RvVofsDsu2E80Cyqu0fqW8v/4KdKSJpWHzx8A+x1HOjmknLhrHhiv7Q4RTDI6Ev2P18n1EHBOyi0hyZ5RUt5YVDwY2bgUuPEf+wLmTC0cgQh2pbZNhXqH1LvncM/8jA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MLeZYa6fQhtEZiiiS9PHjS+TNPSyrHDXJdCWtm/GvA5ZPbGDRzDAq5IuT1/6PhbH9syUeauXmyx9svb2ziZgirNeRJbp9EniYTK2dK2BO8hQNvsMhZa7dUN35OJ+5cWciR6wTPzpu+XwcrDNq1gpj2SjjMBoDAhgzio7RuTo6pgeEgd/2UoKhc478iGS7uCEezGvhkD/nhuRglxDYUh15y5rZqOhrwsfzQ37vtnHKE9FGmtshwOremj7BThXSg9OyIAxYCmbPD8bP0gc8Q8KkDF5Br71ctqTrDS41ceMhvV5nE1nqg5/nNTCnxGn1BMxfcLhcYmnG8disCH1YqP0DA==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, "Jan Beulich" <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, "Stefano Stabellini" <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Thu, 03 Feb 2022 09:36:49 +0000
  • Ironport-data: A9a23:WZH536MjaB1NK3rvrR09kMFynXyQoLVcMsEvi/4bfWQNrUpx3zJUz TYZD2mHPf+Ka2X2e9x2b4rk8UpTsZWBxtAxTgto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6UUsxNbVU8En1500o4w7dRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYoz7Zsv1S9 f5CjMPqFA00FIfDtfsnTTANRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YvNrick5atHiIasUu216zCGfBvEjKXzGa/uRvoYBg2hh7ixINejzV 4kpaTl9UAXnXTF3F04HEK5u28790xETdBUH8QnI9MLb+VP7zhF10bXrGMrYfJqNX8o9tl2Du mvM8mD9AxcbHN+S0zyI9jSrnOCntTz/cJIfEvu/7PECqF+c3GsIEzUNSEC25/K+jyaWS99Zb kAZ5Ccqhawz71CwCMnwWQWip3yJtQJaXMBfe8U44gyQzqvf4y6CG3MJCDVGbbQbWNQeHGJwk AXTxpWwWGIp4Ob9pW+hGqm8pmOfFAsoBmA7OnVZRxYvydbOv7stp0eaJjp8K5KdgtrwEDD25 jmFqikimrke5fI2O7WHEUPv2Gz1+MWQJuIhzkCOBz/+sFslDGKwT9HwsTDmAeB8wJF1p7Vrl FwNgICg4e8HFvlhfwTdEbxWTNlFCxtoWQAwYGKD/bF8r1xBGFb5JOi8BQ2Swm8zaa7onheyO CfuVft5vsM7AZdTRfYfj3iNI8or17P8Mt/uS+rZaNFDCrAoKlPcrHozOxPBhD+2+KTJrU3ZE c3AGSpLJS1CYZmLMRLsH7tNuVPV7nxWKZzvqWDTkE38jOv2iI+9QrYZKlqeBt3VH4vfyDg5B +13bpPQoz0GCbWWSnCOreY7cA5WRVBmW8Geg5EHJ4arf1s9cEl8WqC5/F/UU9E/90ijvr2Wr ijVt44x4AeXuEAr3i3ROy06NeOyAc0ixZ/5VAR1VWuVN7EYSd/HxI8UdoctfKlh8+pmzPVuS OICddnGCfNKIgkrMRxENPERdaRuK0amgxygJS2gbGRtdpJsXVWRqNTlYhHu5G8FCS/u7Zkyp Lip1wX6R5sfRls9UJaKOaz3l17h72IAnO9SXlfTJoUBckvb74U3eTf6ieU6Ip9QJEyblCeaz QufHTwRufLJ/90u6NDMiK3d99WpHuJyE1B0BW7e6brqZyDW8nD6md1LUfqSfCCbX2Txof3wa eJQxvD6EfsGgFcV7NYsT+c1lfozvoK9qaVbwwJoGGTwQ26qUr4wcGOb2cRvt7FWwuMLswWBR U/SqMJRPq+EOZ25HQdJdhYldOmKydodhiLWsaYuOEz/6SJ6oOiHXEFVM0XegSBRNuIoYoYsw ONns88K8Q2vzBEtN4/e3CxT8m2NKF0GUrkm6c5GUNO61FJzxwEQe4HYBw/3/IqLOodFPUQdK zOJgLbP2uZHzU3YfntvTXXA0IKxX3jVVMymGLPaG2m0pw==
  • Ironport-hdrordr: A9a23:mRlzRaxQHnWZXXUxSB6TKrPxyOskLtp133Aq2lEZdPULSKKlfp GV88jziyWZtN9wYhEdcdDpAtjnfZr5z+8J3WBxB8bZYOCCggqVxe5ZnO7fKlHbaknDH6tmpN tdmstFeazN5DpB/L7HCWCDer5KqrT3k9HLuQ6d9QYXcegDUdAf0+4TMHfjLqQZfnggOXJvf6 Dsmfav6gDQMkg/X4CePD0oTuLDr9rEmNbPZgMHPQcu7E2rgSmz4LD3PhCE1lNGOgk/jIsKwC zgqUjU96+ju/a0xlv10HLS1Y1fnJ/ExsFYDMKBp8AJInHHixquZq5mR7qe1QpF6t2H2RIPqp 3hsh0gN8N85zf4eXy0mwLk303a3DMn+xbZuCmlqEqmhfa8aCMxCsJHi44cWADe8VAcsNZ117 8O936FtrJMZCmw0hjV1pztbVVHh0C0qX0tnao4lHpES7YTb7dXsMg24F5VKpEdByj3gbpXX9 WGNPuspMq+TGnqLEww5gJUsZ6RtzUIb1u7q3E5y42oO2M8pgE986MarPZv6UvouqhND6Ws3N 60QZiAoos+OvP+XZgNdNvpfvHHeFAlYSi8eV56cm6XXJ3uBRr22uvKCfMOlaaXRKA=
  • Ironport-sdr: l5b5qyWC/UGO678GvSjBi5ReUhs9KgIE9zX53NTKmV3YG66HmYGuQfFmPPbuI9WTLuuJVvF1vj i/yQxb9ryMF9KKTtf8GHkVGokZUJnBq6OP6xyk2QpsJjqvqQIsTpJit9tkJKBUhhS1ZXIkwczV s7LV5wVXA7Z9g/3xsfN1dkjZJ7YbAK53t/t/lZs6DHU6tYD+jQZXtQRbblzG3o3GWwSFL+OFVY fa+wsEp8wTL3sPdskN4XaNlPBW76ilGJqq6SGICmg+kz3DBM3L14AbxSMj10CFcp9s6pxTx9ag lNSUkLv4K1AYlyF3c05ouk2L
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Wed, Feb 02, 2022 at 12:44:48PM +0100, Juergen Gross wrote:
> Add a document to describe the rules for sending a proper patch.
> 
> As it contains all the information already being present in
> docs/process/tags.pandoc remove that file.
> 
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
>  docs/process/sending-patches.pandoc | 284 ++++++++++++++++++++++++++++
>  docs/process/tags.pandoc            |  55 ------
>  2 files changed, 284 insertions(+), 55 deletions(-)
>  create mode 100644 docs/process/sending-patches.pandoc
>  delete mode 100644 docs/process/tags.pandoc
> 
> diff --git a/docs/process/sending-patches.pandoc 
> b/docs/process/sending-patches.pandoc
> new file mode 100644
> index 0000000000..4cfc6e1a5b
> --- /dev/null
> +++ b/docs/process/sending-patches.pandoc
> @@ -0,0 +1,284 @@
> +# How a proper patch should look like
> +
> +This is a brief description how a proper patch for the Xen project should
> +look like. Examples and tooling tips are not part of this document, those
> +can be found in the
> +[Xen Wiki](https://wiki.xenproject.org/wiki/Submitting_Xen_Project_Patches).
> +
> +## The patch subject
> +
> +The first line at the top of the patch should contain a short description of
> +what the patch does, and hints as to what code it touches. This line is used
> +as the **Subject** line of the mail when sending the patch.
> +
> +The hint which code is touched us usually in form of a relative path inside
> +the Xen git repository, where obvious directories can be omitted or replaced
> +by abbreviations, or it can be a single word describing the topic:
> +
> +    <path>: <description>

I would use <component> maybe instead of path, to explicitly note this
is not usually a real path inside the repo.

> +
> +E.g.:
> +
> +    xen/arm: increase memory banks number define value
> +    tools/libs/evtchn: Deduplicate xenevtchn_fd()

Mostly a nit, but since this document is about style: I wouldn't
recommend using a capital letter after ':' by default. The above line
should instead be:

    tools/libs/evtchn: deduplicate xenevtchn_fd()

> +    MAINTAINERS: update my email address
> +    build: correct usage comments in Kbuild.include
> +
> +The description should give a rough hint *what* is done in the patch.
> +
> +The subject line should in general not exceed 80 characters. It must be
> +followed by a blank line.
> +
> +## The commit message
> +
> +The commit message is free text describing *why* the patch is done and
> +*how* the goal of the patch is achieved. A good commit message will describe
> +the current situation, the desired goal, and the way this goal is being
> +achieved. Parts of that can be omitted in obvious cases.
> +
> +In case additional changes are done in the patch (like e.g. cleanups), those
> +should be mentioned.
> +
> +When referencing other patches (e.g. `patch xy introduced a bug ...`) those
> +patches should be referenced via their commit id (at least 12 digits) and the
> +patch subject:
> +
> +    Commit 67d01cdb5518 ("x86: infrastructure to allow converting certain
> +    indirect calls to direct ones") introduced a bug ...
> +
> +The following ``git config`` settings can be used to add a pretty format for
> +outputting the above style in the ``git log`` or ``git show`` commands:
> +
> +        [core]
> +                abbrev = 12
> +        [pretty]
> +                fixes = Fixes: %h (\"%s\")
> +
> +Lines in the commit message should not exceed 75 characters, except when
> +copying error output directly into the commit message.
> +
> +## Tags
> +
> +Tags are entries in the form
> +
> +    Tag: something
> +
> +In general tags are added in chronological order. So a `Reviewed-by:` tag
> +should be added **after** the `Signed-off-by:` tag, as the review happened
> +after the patch was written.
> +
> +Do not split a tag across multiple lines, tags are exempt from the
> +"wrap at 75 columns" rule in order to simplify parsing scripts.
> +
> +### Taken-from:
> +
> +Xen has inherited some source files from other open source projects. In case
> +a patch modifying such an inherited file is taken from that project (maybe in
> +modified form), the `Taken-from:` tag specifies the source of the patch:
> +
> +    Taken-from: <repository-URL> <commit-id>
> +
> +E.g.:
> +
> +    Taken-from: 
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git f093b08c47b3
> +
> +All tags **above** the `Taken-from:` tag are from the original patch (which
> +should all be kept), while tags **after** `Taken-from:` are related to the
> +normal Xen patch process as described here.
> +
> +### Fixes:
> +
> +If your patch fixes a bug in a specific commit, e.g. you found an issue using
> +``git bisect``, please use the `Fixes:` tag with the first 12 characters of
> +the commit id, and the one line summary.
> +
> +    Fixes: <commit-id> ("<patch-subject>")
> +
> +E.g.:
> +
> +    Fixes: 67d01cdb5518 ("x86: infrastructure to allow converting certain 
> indirect calls to direct ones")
> +
> +### Backport:
> +
> +A backport tag is an optional tag in the commit message to request a
> +given commit to be backported to the released trees:
> +
> +    Backport: <version> [# <comment>]

So we already had a documented usage of '#' in tags, which I think
should make it a better candidate for the R-b scope limiting.

> +
> +E.g.:
> +
> +    Backport: 4.9+
> +
> +It marks a commit for being a candidate for backports to all released
> +trees from 4.9 onward.
> +
> +The backport requester is expected to specify which currently supported
> +releases need the backport; but encouraged to specify a release as far
> +back as possible which applies. If the requester doesn't know the oldest
> +affected tree, they are encouraged to append a comment like the
> +following:
> +
> +    Backport: 4.9+ # maybe older
> +
> +Maintainers request the Backport tag to be added on commit. Contributors
> +are welcome to mark their patches with the Backport tag when they deem
> +appropriate. Maintainers will request for it to be removed when that is
> +not the case.
> +
> +Please note that the Backport tag is a **request** for backport, which
> +will still need to be evaluated by the maintainers. Maintainers might
> +ask the requester to help with the backporting work if it is not
> +trivial.
> +
> +### Reported-by:
> +
> +This optional tag can be used to give credit to someone reporting an issue.
> +It is in the format:
> +
> +    Reported-by: name <email@domain>
> +
> +E.g.:
> +
> +    Reported-by: Jane Doe <jane.doe@xxxxxxxxxxx>
> +
> +As the email address will be made public via git, the reporter of an issue
> +should be asked whether he/she is fine with being mentioned in the patch.
> +
> +### Suggested-by:
> +
> +This optional tag can be used to give credit to someone having suggested the
> +solution the patch is implementing. It is in the format:
> +
> +    Suggested-by: name <email@domain>
> +
> +E.g.:
> +
> +    Suggested-by: Jane Doe <jane.doe@xxxxxxxxxxx>
> +
> +As the email address will be made public via git, the reporter of an issue
> +should be asked whether he/she is fine with being mentioned in the patch.
> +
> +### Signed-off-by:
> +
> +This mandatory tag specifies the author(s) of a patch (for each author a
> +separate `Signed-off-by:` tag is needed). It is in the format:
> +
> +    Signed-off-by: name <email@domain>
> +
> +E.g.:
> +
> +    Signed-off-by: Jane Doe <jane.doe@xxxxxxxxxxx>
> +
> +The author must be a natural person (not a team or just a company) and the
> +`Signed-off-by:` tag must include the real name of the author (no pseudonym).
> +
> +By signing the patch with her/his name the author explicitly confirms to have
> +made the contribution conforming to the `Developer's Certificate of Origin`:
> +
> +    Developer's Certificate of Origin 1.1
> +    
> +    By making a contribution to this project, I certify that:
> +    
> +    (a) The contribution was created in whole or in part by me and I
> +        have the right to submit it under the open source license
> +        indicated in the file; or
> +    
> +    (b) The contribution is based upon previous work that, to the best
> +        of my knowledge, is covered under an appropriate open source
> +        license and I have the right under that license to submit that
> +        work with modifications, whether created in whole or in part
> +        by me, under the same open source license (unless I am
> +        permitted to submit under a different license), as indicated
> +        in the file; or
> +    
> +    (c) The contribution was provided directly to me by some other
> +        person who certified (a), (b) or (c) and I have not modified
> +        it.
> +    
> +    (d) I understand and agree that this project and the contribution
> +        are public and that a record of the contribution (including all
> +        personal information I submit with it, including my sign-off) is
> +        maintained indefinitely and may be redistributed consistent with
> +        this project or the open source license(s) involved.
> +
> +### Reviewed-by:
> +
> +A `Reviewed-by:` tag can only be given by a reviewer of the patch. With
> +responding to a sent patch adding the `Reviewed-by:` tag the reviewer
> +(which can be anybody) confirms to have looked thoroughly at the patch and
> +didn't find any issue (being it technical, legal or formal ones). If the
> +review is covering only some parts of the patch, those parts can optionally
> +be specified (multiple areas can be covered with multiple `Reviewed-by:`
> +tags). It is in the format:
> +
> +    Reviewed-by: name <email@domain> [# area]
> +
> +E.g.:
> +
> +    Reviewed-by: Jane Doe <jane.doe@xxxxxxxxxxx>
> +    Reviewed-by: Jane Doe <jane.doe@xxxxxxxxxxx> # xen/x86

I think you should mention in the commit message that we are also
adding the R-b scope limiting in this commit? The commit message makes
it look like this is mostly moving the existing Tags into a new
document.

> +
> +In case a patch is being resent an already given `Reviewed-by:` tag can and
> +should be included, if the patch didn't change the portions of the patch
> +covered by the tag, or if the reviewer already made clear it would be fine
> +to make specific changes and no *other* changes have been made.
> +
> +### Acked-by:
> +
> +Similar to `Reviewed-by:` the `Acked-by:` tag is given by someone having 
> looked
> +at the patch. The `Acked-by:` tag can only be given by a **maintainer** of 
> the
> +modified code, and it only covers the code the maintainer is responsible for.
> +For this reason there is no optional area possible. With the `Acked-by:` tag
> +the maintainer states, that he/she is fine with the changes in principle, but
> +didn't do a thorough review. The format is:
> +
> +    Acked-by: name <email@domain>
> +
> +E.g.:
> +
> +    Acked-by: Jane Doe <jane.doe@xxxxxxxxxxx>
> +
> +Including the `Acked-by:` tag in a patch is done under the same rules as for
> +the `Reviewed-by:` tag, with the implied code area the maintainer who gave 
> the
> +`Acked-by:` tag is responsible for.
> +
> +### Tested-by:
> +
> +The `Tested-by:` tag is another tag given by someone else. The one giving it
> +confirms to have tested the patch without finding any functional issues. The
> +format is:
> +
> +    Tested-by: name <email@domain> 

Trailing white space.

> +
> +E.g.:
> +
> +    Tested-by: Jane Doe <jane.doe@xxxxxxxxxxx>
> +
> +Including the `Tested-by:` tag in a patch is done under the same rules as for
> +the `Reviewed-by:` tag, now limited to the patch not having been modified
> +regarding code logic (having changed only coding style, comments, or message
> +texts is fine).
> +
> +## Patch version history (change log), further comments
> +
> +When sending revised versions of a patch it is good practice to include a
> +change log after a line containing only `---` (this line will result in the
> +following text not being included in the commit message). This change log
> +will help reviewers to spot which parts of the patch have changed. 
> Attributing
> +changes due to reviewer comments will help the reviewer even more, e.g.:
> +
> +    ---
> +    Changes in V2:

I would use v2 (lowercase 'v'), because that's how git format-patch
places the version in the subject line.

> +    - changed function foo() as requested by Jane Doe
> +    - code style fixed
> +
> +In some cases it might be desirable to add some more information for readers
> +of the patch, like potential enhancements, other possible solutions, etc.,
> +which should not be part of the commit message. This information can be
> +added after the `---` line, too.
> +
> +## Recipients of the patch
> +
> +A patch should always be sent **to** the xen-devel mailing list 
> <xen-devel@xxxxxxxxxxxxxxxxxxxx> and all maintainers of all touched code 
> areas should get a

Missing newline.

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.