1Submit a Pull Request
2=====================
3
4QEMU welcomes contributions of code, but we generally expect these to be
5sent as simple patch emails to the mailing list (see our page on
6`submitting a patch
7<https://qemu-project.gitlab.io/qemu/devel/submitting-a-patch.html>`__
8for more details).  Generally only existing submaintainers of a tree
9will need to submit pull requests, although occasionally for a large
10patch series we might ask a submitter to send a pull request. This page
11documents our recommendations on pull requests for those people.
12
13A good rule of thumb is not to send a pull request unless somebody asks
14you to.
15
16**Resend the patches with the pull request** as emails which are
17threaded as follow-ups to the pull request itself. The simplest way to
18do this is to use ``git format-patch --cover-letter`` to create the
19emails, and then edit the cover letter to include the pull request
20details that ``git request-pull`` outputs.
21
22**Use PULL as the subject line tag** in both the cover letter and the
23retransmitted patch mails (for example, by using
24``--subject-prefix=PULL`` in your ``git format-patch`` command). This
25helps people to filter in or out the resulting emails (especially useful
26if they are only CC'd on one email out of the set).
27
28**Each patch must have your own Signed-off-by: line** as well as that of
29the original author if the patch was not written by you. This is because
30with a pull request you're now indicating that the patch has passed via
31you rather than directly from the original author.
32
33**Don't forget to add Reviewed-by: and Acked-by: lines**. When other
34people have reviewed the patches you're putting in the pull request,
35make sure you've copied their signoffs across. (If you use the `patches
36tool <https://github.com/stefanha/patches>`__ to add patches from email
37directly to your git repo it will include the tags automatically; if
38you're updating patches manually or in some other way you'll need to
39edit the commit messages by hand.)
40
41**Don't send pull requests for code that hasn't passed review**. A pull
42request says these patches are ready to go into QEMU now, so they must
43have passed the standard code review processes. In particular if you've
44corrected issues in one round of code review, you need to send your
45fixed patch series as normal to the list; you can't put it in a pull
46request until it's gone through. (Extremely trivial fixes may be OK to
47just fix in passing, but if in doubt err on the side of not.)
48
49**Test before sending**. This is an obvious thing to say, but make sure
50everything builds (including that it compiles at each step of the patch
51series) and that "make check" passes before sending out the pull
52request. As a submaintainer you're one of QEMU's lines of defense
53against bad code, so double check the details.
54
55**All pull requests must be signed**. If your key is not already signed
56by members of the QEMU community, you should make arrangements to attend
57a `KeySigningParty <https://wiki.qemu.org/KeySigningParty>`__ (for
58example at KVM Forum) or make alternative arrangements to have your key
59signed by an attendee.  Key signing requires meeting another community
60member \*in person\* so please make appropriate arrangements.  By
61"signed" here we mean that the pullreq email should quote a tag which is
62a GPG-signed tag (as created with 'gpg tag -s ...').
63
64**Pull requests not for master should say "not for master" and have
65"PULL SUBSYSTEM whatever" in the subject tag**. If your pull request is
66targeting a stable branch or some submaintainer tree, please include the
67string "not for master" in the cover letter email, and make sure the
68subject tag is "PULL SUBSYSTEM s390/block/whatever" rather than just
69"PULL". This allows it to be automatically filtered out of the set of
70pull requests that should be applied to master.
71
72You might be interested in the `make-pullreq
73<https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/make-pullreq>`__
74script which automates some of this process for you and includes a few
75sanity checks. Note that you must edit it to configure it suitably for
76your local situation!
77