1
- Submitting a Patch
1
+ Proposing a Change
2
2
==================
3
3
4
- Patches are the best way to provide a bug fix or to propose enhancements to
5
- Symfony.
4
+ A pull request, "PR" for short, is the best way to provide a bug fix or to
5
+ propose enhancements to Symfony.
6
6
7
- Step 1: Setup your Environment
7
+ Step 1: Check existing Issues and Pull Requests
8
+ -------------------------------------
9
+
10
+ Before working on a change, check to see if someone else also raised the topic
11
+ or maybe even started working on a PR by `searching on GitHub `_.
12
+
13
+ If you are unsure or if you have any questions during this entire process,
14
+ please ask your questions on the #contribs channel on `Symfony Slack `_.
15
+
16
+ .. _step-1-setup-your-environment :
17
+
18
+ Step 2: Setup your Environment
8
19
------------------------------
9
20
10
21
Install the Software Stack
@@ -90,20 +101,27 @@ Check that the current Tests Pass
90
101
Now that Symfony is installed, check that all unit tests pass for your
91
102
environment as explained in the dedicated :doc: `document <tests >`.
92
103
93
- Step 2: Work on your Patch
94
- --------------------------
104
+ .. tip ::
105
+
106
+ If tests are failing, check on `Travis-CI `_ if the same test is
107
+ failing there as well. In that case you do not need to be concerned
108
+ about the test failing locally.
109
+
110
+ .. _step-2-work-on-your-patch :
111
+
112
+ Step 3: Work on your Pull Request
113
+ ---------------------------------
95
114
96
115
The License
97
116
~~~~~~~~~~~
98
117
99
- Before you start, you must know that all the patches you are going to submit
100
- must be released under the *MIT license *, unless explicitly specified in your
101
- commits.
118
+ Before you start, you must know that all the code you are going to submit
119
+ must be released under the *MIT license *.
102
120
103
121
Choose the right Branch
104
122
~~~~~~~~~~~~~~~~~~~~~~~
105
123
106
- Before working on a patch , you must determine on which branch you need to
124
+ Before working on a PR , you must determine on which branch you need to
107
125
work:
108
126
109
127
* ``3.4 ``, if you are fixing a bug for an existing feature or want to make a
@@ -116,28 +134,28 @@ work:
116
134
.. note ::
117
135
118
136
All bug fixes merged into maintenance branches are also merged into more
119
- recent branches on a regular basis. For instance, if you submit a patch
120
- for the ``3.4 `` branch, the patch will also be applied by the core team on
137
+ recent branches on a regular basis. For instance, if you submit a PR
138
+ for the ``3.4 `` branch, the PR will also be applied by the core team on
121
139
the ``master `` branch.
122
140
123
141
Create a Topic Branch
124
142
~~~~~~~~~~~~~~~~~~~~~
125
143
126
- Each time you want to work on a patch for a bug or on an enhancement, create a
144
+ Each time you want to work on a PR for a bug or on an enhancement, create a
127
145
topic branch:
128
146
129
147
.. code-block :: terminal
130
148
131
149
$ git checkout -b BRANCH_NAME master
132
150
133
- Or, if you want to provide a bugfix for the ``3.4 `` branch, first track the remote
151
+ Or, if you want to provide a bug fix for the ``3.4 `` branch, first track the remote
134
152
``3.4 `` branch locally:
135
153
136
154
.. code-block :: terminal
137
155
138
156
$ git checkout -t origin/3.4
139
157
140
- Then create a new branch off the ``3.4 `` branch to work on the bugfix :
158
+ Then create a new branch off the ``3.4 `` branch to work on the bug fix :
141
159
142
160
.. code-block :: terminal
143
161
@@ -167,8 +185,10 @@ uses, and replaces them by symbolic links to the ones in the Git repository.
167
185
Before running the ``link `` command, be sure that the dependencies of the project you
168
186
want to debug are installed by running ``composer install `` inside it.
169
187
170
- Work on your Patch
171
- ~~~~~~~~~~~~~~~~~~
188
+ .. _work-on-your-patch :
189
+
190
+ Work on your Pull Request
191
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
172
192
173
193
Work on the code as much as you want and commit as much as you want; but keep
174
194
in mind the following:
@@ -181,7 +201,7 @@ in mind the following:
181
201
actually works;
182
202
183
203
* Try hard to not break backward compatibility (if you must do so, try to
184
- provide a compatibility layer to support the old way) -- patches that break
204
+ provide a compatibility layer to support the old way) -- PRs that break
185
205
backward compatibility have less chance to be merged;
186
206
187
207
* Do atomic and logically separate commits (use the power of ``git rebase `` to
@@ -210,10 +230,12 @@ in mind the following:
210
230
verb (``fixed ... ``, ``added ... ``, ...) to start the summary and don't
211
231
add a period at the end.
212
232
213
- Prepare your Patch for Submission
214
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
233
+ .. _prepare-your-patch-for-submission :
234
+
235
+ Prepare your Pull Request for Submission
236
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
215
237
216
- When your patch is not about a bug fix (when you add a new feature or change
238
+ When your PR is not about a bug fix (when you add a new feature or change
217
239
an existing one for instance), it must also include the following:
218
240
219
241
* An explanation of the changes in the relevant ``CHANGELOG `` file(s) (the
@@ -223,16 +245,20 @@ an existing one for instance), it must also include the following:
223
245
``UPGRADE `` file(s) if the changes break backward compatibility or if you
224
246
deprecate something that will ultimately break backward compatibility.
225
247
226
- Step 3: Submit your Patch
227
- -------------------------
248
+ .. _step-4-submit-your-patch :
249
+
250
+ Step 4: Submit your Pull Request
251
+ --------------------------------
228
252
229
- Whenever you feel that your patch is ready for submission, follow the
253
+ Whenever you feel that your PR is ready for submission, follow the
230
254
following steps.
231
255
232
- Rebase your Patch
233
- ~~~~~~~~~~~~~~~~~
256
+ .. _rebase-your-patch :
234
257
235
- Before submitting your patch, update your branch (needed if it takes you a
258
+ Rebase your Pull Request
259
+ ~~~~~~~~~~~~~~~~~~~~~~~~
260
+
261
+ Before submitting your PR, update your branch (needed if it takes you a
236
262
while to finish your changes):
237
263
238
264
.. code-block :: terminal
@@ -246,7 +272,7 @@ while to finish your changes):
246
272
.. tip ::
247
273
248
274
Replace ``master `` with the branch you selected previously (e.g. ``3.4 ``)
249
- if you are working on a bugfix
275
+ if you are working on a bug fix.
250
276
251
277
When doing the ``rebase `` command, you might have to fix merge conflicts.
252
278
``git status `` will show you the *unmerged * files. Resolve all the conflicts,
@@ -273,7 +299,7 @@ You can now make a pull request on the ``symfony/symfony`` GitHub repository.
273
299
.. tip ::
274
300
275
301
Take care to point your pull request towards ``symfony:3.4 `` if you want
276
- the core team to pull a bugfix based on the ``3.4 `` branch.
302
+ the core team to pull a bug fix based on the ``3.4 `` branch.
277
303
278
304
To ease the core team work, always include the modified components in your
279
305
pull request message, like in:
@@ -296,10 +322,10 @@ Some answers to the questions trigger some more requirements:
296
322
* If you answer yes to "New feature?", you must submit a pull request to the
297
323
documentation and reference it under the "Doc PR" section;
298
324
299
- * If you answer yes to "BC breaks?", the patch must contain updates to the
325
+ * If you answer yes to "BC breaks?", the PR must contain updates to the
300
326
relevant ``CHANGELOG `` and ``UPGRADE `` files;
301
327
302
- * If you answer yes to "Deprecations?", the patch must contain updates to the
328
+ * If you answer yes to "Deprecations?", the PR must contain updates to the
303
329
relevant ``CHANGELOG `` and ``UPGRADE `` files;
304
330
305
331
* If you answer no to "Tests pass", you must add an item to a todo-list with
@@ -326,7 +352,8 @@ because you want early feedback on your work, add an item to todo-list:
326
352
- [ ] gather feedback for my changes
327
353
328
354
As long as you have items in the todo-list, please prefix the pull request
329
- title with "[WIP]".
355
+ title with "[WIP]". If you do not yet want to trigger the automated tests,
356
+ you can also set the PR to `draft status `_.
330
357
<
10000
/td>331
358
In the pull request description, give as much details as possible about your
332
359
changes (don't hesitate to give code examples to illustrate your points). If
@@ -339,11 +366,29 @@ commit message).
339
366
In addition to this "code" pull request, you must also send a pull request to
340
367
the `documentation repository `_ to update the documentation when appropriate.
341
368
342
- Rework your Patch
343
- ~~~~~~~~~~~~~~~~~
369
+ Step 5: Receiving Feedback
370
+ --------------------------
371
+
372
+ We ask all contributors to follow some
373
+ :doc: `best practices </contributing/community/reviews >`
374
+ to ensure a constructive feedback process.
375
+
376
+ If you think someone fails to keep this advice in mind and you want another
377
+ perspective, once again please join channel on `Symfony Slack `_. If you
378
+ receive feedback you find abusive please contact the
379
+ :doc: `CARE team</contributing/code_of_conduct/care_team.rst> `.
380
+
381
+ The :doc: `core team <contributing/code/core_team >` is responsible for deciding
382
+ which PR gets merged, so their feedback is the most relevant. So do not feel
383
+ pressured to refactor your code immediately when someone provides feedback.
384
+
385
+ .. _rework-your-patch :
386
+
387
+ Rework your Pull Request
388
+ ~~~~~~~~~~~~~~~~~~~~~~~~
344
389
345
390
Based on the feedback on the pull request, you might need to rework your
346
- patch . Before re-submitting the patch , rebase with ``upstream/master `` or
391
+ PR . Before re-submitting the PR , rebase with ``upstream/master `` or
347
392
``upstream/3.4 ``, don't merge; and force the push to the origin:
348
393
349
394
.. code-block :: terminal
@@ -374,3 +419,7 @@ before merging.
374
419
.. _`fabbot` : https://fabbot.io
375
420
.. _`PSR-1` : https://www.php-fig.org/psr/psr-1/
376
421
.. _`PSR-2` : https://www.php-fig.org/psr/psr-2/
422
+ .. _`searching on GitHub` : https://github.com/symfony/symfony/issues?q=+is%3Aopen+
423
+ .. _`Symfony Slack` : https://symfony.com/slack-invite
424
+ .. _`Travis-CI` : https://travis-ci.org/symfony/symfony
425
+ .. _`draft status` : https://help.github.com/en/articles/about-pull-requests#draft-pull-requests
0 commit comments