Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 656c30e

Browse filesBrowse files
evanlucasMylesBorins
authored andcommitted
doc: add guide for backporting prs
This guide should help answer questions for contributors that are not familiar with the backport process. PR-URL: #11099 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
1 parent 1c1269d commit 656c30e
Copy full SHA for 656c30e

File tree

Expand file treeCollapse file tree

2 files changed

+96
-1
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+96
-1
lines changed
Open diff view settings
Collapse file

‎COLLABORATOR_GUIDE.md‎

Copy file name to clipboardExpand all lines: COLLABORATOR_GUIDE.md
+4-1Lines changed: 4 additions & 1 deletion
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,8 @@ LTS release.
540540

541541
When you send your pull request, consider including information about
542542
whether your change is breaking. If you think your patch can be backported,
543-
please feel free to include that information in the PR thread.
543+
please feel free to include that information in the PR thread. For more
544+
information on backporting, please see the [backporting guide][].
544545

545546
Several LTS related issue and PR labels have been provided:
546547

@@ -567,3 +568,5 @@ When the LTS working group determines that a new LTS release is required,
567568
selected commits will be picked from the staging branch to be included in the
568569
release. This process of making a release will be a collaboration between the
569570
LTS working group and the Release team.
571+
572+
[backporting guide]: doc/guides/backporting-to-release-lines.md
Collapse file
+92Lines changed: 92 additions & 0 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# How to Backport a Pull Request to a Release Line
2+
3+
## Staging branches
4+
5+
Each release line has a staging branch that the releaser will use as a scratch
6+
pad while preparing a release. The branch name is formatted as follows:
7+
`vN.x-staging` where `N` is the major release number.
8+
9+
### Active staging branches
10+
11+
| Release Line | Staging Branch |
12+
| ------------ | -------------- |
13+
| `v7.x` | `v7.x-staging` |
14+
| `v6.x` | `v6.x-staging` |
15+
| `v4.x` | `v4.x-staging` |
16+
17+
## What needs to be backported?
18+
19+
If a cherry-pick from master does not land cleanly on a staging branch, the
20+
releaser will mark the pull request with a particular label for that release
21+
line, specifying to our tooling that this pull request should not be included.
22+
The releaser will then add a comment that a backport is needed.
23+
24+
## What can be backported?
25+
26+
The "Current" release line is much more lenient than the LTS release lines in
27+
what can be landed. Our LTS release lines (v4.x and v6.x as of March 2017)
28+
require that commits mature in a Current release for at least 2 weeks before
29+
they can be landed on staging. If the commit can not be cherry-picked from
30+
master a manual backport will need to be submitted. Please see the [LTS Plan][]
31+
for more information. After that time, if the commit can be cherry-picked
32+
cleanly from master, then nothing needs to be done. If not, a backport pull
33+
request will need to be submitted.
34+
35+
## How to submit a backport pull request
36+
37+
For these steps, let's assume that a backport is needed for the v7.x release
38+
line. All commands will use the v7.x-staging branch as the target branch.
39+
In order to submit a backport pull request to another branch, simply replace
40+
that with the staging branch for the targeted release line.
41+
42+
* Checkout the staging branch for the targeted release line
43+
* Make sure that the local staging branch is up to date with the remote
44+
* Create a new branch off of the staging branch
45+
46+
```shell
47+
# Assuming your fork of Node.js is checked out in $NODE_DIR,
48+
# the origin remote points to your fork, and the upstream remote points
49+
# to git://github.com/nodejs/node
50+
cd $NODE_DIR
51+
# Fails if you already have a v7.x-staging
52+
git branch v7.x-staging upstream/v7.x-staging
53+
git checkout v7.x-staging
54+
git reset --hard upstream/v7.x-staging
55+
# We want to backport pr #10157
56+
git checkout -b backport-10157-to-v7.x
57+
```
58+
59+
* After creating the branch, apply the changes to the branch. The cherry-pick
60+
will likely fail due to conflicts. In that case, you will see something this:
61+
62+
```shell
63+
# Say the $SHA is 773cdc31ef
64+
$ git cherry-pick $SHA # Use your commit hash
65+
error: could not apply 773cdc3... <commit title>
66+
hint: after resolving the conflicts, mark the corrected paths
67+
hint: with 'git add <paths>' or 'git rm <paths>'
68+
hint: and commit the result with 'git commit'
69+
```
70+
71+
* Make the required changes to remove the conflicts, add the files to the index
72+
using `git add`, and then commit the changes. That can be done with
73+
`git cherry-pick --continue`.
74+
* Leave the commit message as is. If you think it should be modified, comment
75+
in the Pull Request.
76+
* Make sure `make -j4 test` passes
77+
* Push the changes to your fork and open a pull request.
78+
* Be sure to target the `v7.x-staging` branch in the pull request.
79+
80+
### Helpful Hints
81+
82+
* Please include the backport target in the pull request title in the following
83+
format: `(v7.x backport) <commit title>`
84+
* Ex. `(v4.x backport) process: improve performance of nextTick`
85+
* Please check the checkbox labelled "Allow edits from maintainers".
86+
This is the easiest way to to avoid constant rebases.
87+
88+
In the event the backport pull request is different than the original,
89+
the backport pull request should be reviewed the same way a new pull request
90+
is reviewed.
91+
92+
[LTS Plan]: https://github.com/nodejs/LTS#lts-plan

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.