| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,136 +2,103 @@ | |||
| 2 | 2 | ||
| 3 | 3 | ## Staging branches | |
| 4 | 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. | ||
| 5 | + Each release line has a staging branch that serves as a workspace for preparing releases. | ||
| 6 | + The branch format is `vN.x-staging`, where `N` is the major release number. | ||
| 8 | 7 | ||
| 9 | - For the active staging branches see the [Release Schedule][]. | ||
| 8 | + For active staging branches, refer to the [Release Schedule][]. | ||
| 10 | 9 | ||
| 11 | - ## What needs to be backported? | ||
| 10 | + ## Identifying changes that require a backport | ||
| 12 | 11 | ||
| 13 | - If a cherry-pick from `main` does not land cleanly on a staging branch, the | ||
| 14 | - releaser will mark the pull request with a particular label for that release | ||
| 15 | - line (e.g. `backport-requested-vN.x`), specifying to our tooling that this | ||
| 16 | - pull request should not be included. The releaser will then add a comment | ||
| 17 | - requesting that a backport pull request be made. | ||
| 12 | + If a cherry-pick from `main` doesn't apply cleanly on a staging branch, the pull request | ||
| 13 | + will be labeled for the release line (e.g., `backport-requested-vN.x`). This indicates | ||
| 14 | + that manual backporting is required. | ||
| 18 | 15 | ||
| 19 | - ## What can be backported? | ||
| 16 | + ## Criteria for backporting | ||
| 20 | 17 | ||
| 21 | - The "Current" release line is much more lenient than the LTS release lines in | ||
| 22 | - what can be landed. Our LTS release lines (see the [Release Plan][]) | ||
| 23 | - require that commits mature in the Current release for at least 2 weeks before | ||
| 24 | - they can be landed in an LTS staging branch. Only after "maturation" will those | ||
| 25 | - commits be cherry-picked or backported. | ||
| 18 | + The "Current" release line is more flexible than LTS lines. LTS branches, detailed in the [Release Plan][], | ||
| 19 | + require commits to mature in the Current release for at least two weeks before backporting. | ||
| 26 | 20 | ||
| 27 | - ## How to label backport issues and PRs? | ||
| 21 | + ## Labeling backport issues and PRs | ||
| 28 | 22 | ||
| 29 | - For the following labels, the `N` in `vN.x` refers to the major release number. | ||
| 23 | + Use the following labels, with `N` in `vN.x` denoting the major release number: | ||
| 30 | 24 | ||
| 31 | - | Label | Description | | ||
| 32 | - | ----------------------- | ------------------------------------------------------------------------------------------------- | | ||
| 33 | - | backport-blocked-vN.x | PRs that should land on the vN.x-staging branch but are blocked by another PR's pending backport. | | ||
| 34 | - | backport-open-vN.x | Indicate that the PR has an open backport. | | ||
| 35 | - | backport-requested-vN.x | PRs awaiting manual backport to the vN.x-staging branch. | | ||
| 36 | - | backported-to-vN.x | PRs backported to the vN.x-staging branch. | | ||
| 37 | - | baking-for-lts | PRs that need to wait before landing in a LTS release. | | ||
| 38 | - | lts-watch-vN.x | PRs that may need to be released in vN.x. | | ||
| 39 | - | vN.x | Issues that can be reproduced on vN.x or PRs targeting the vN.x-staging branch. | | ||
| 25 | + | Label | Description | | ||
| 26 | + | ----------------------- | ------------------------------------------------------------------- | | ||
| 27 | + | backport-blocked-vN.x | PRs for `vN.x-staging` blocked by pending backports from other PRs. | | ||
| 28 | + | backport-open-vN.x | Indicates an open backport for the PR. | | ||
| 29 | + | backport-requested-vN.x | PR awaiting manual backport to `vN.x-staging`. | | ||
| 30 | + | backported-to-vN.x | PR successfully backported to `vN.x-staging`. | | ||
| 31 | + | baking-for-lts | PRs awaiting LTS release after maturation in Current. | | ||
| 32 | + | lts-watch-vN.x | PRs possibly included in `vN.x` LTS releases. | | ||
| 33 | + | vN.x | Issues or PRs impacting `vN.x-staging` (or reproducible on vN.x). | | ||
| 40 | 34 | ||
| 41 | - ## How to submit a backport pull request | ||
| 35 | + ## Submitting a backport pull request | ||
| 42 | 36 | ||
| 43 | 37 | For the following steps, let's assume that you need to backport PR `123` | |
| 44 | - to the v20.x release line. All commands will use the `v20.x-staging` branch | ||
| 38 | + to the vN.x release line. All commands will use the `vN.x-staging` branch | ||
| 45 | 39 | as the target branch. In order to submit a backport pull request to another | |
| 46 | - branch, simply replace that with the staging branch for the targeted release | ||
| 40 | + branch, simply replace `N` with the version number for the targeted release | ||
| 47 | 41 | line. | |
| 48 | 42 | ||
| 49 | - ### Automated | ||
| 43 | + ### Automated process | ||
| 50 | 44 | ||
| 51 | - 1. Make sure you have [`@node-core/utils`][] installed | ||
| 45 | + 1. Ensure [`@node-core/utils`][] is installed. | ||
| 52 | 46 | ||
| 53 | - 2. Run the [`git node backport`][] command | ||
| 47 | + 2. Execute [`git node backport`][] command: | ||
| 54 | 48 | ||
| 55 | - ```bash | ||
| 56 | - # Backport PR 123 to v20.x-staging | ||
| 57 | - git node backport 123 --to=20 | ||
| 58 | - ``` | ||
| 49 | + ```bash | ||
| 50 | + # Example: Backport PR 123 to vN.x-staging | ||
| 51 | + git node backport 123 --to=N | ||
| 52 | + ``` | ||
| 59 | 53 | ||
| 60 | - 3. Jump to step 5 in the Manual section below | ||
| 54 | + 3. Proceed to step 5 in the Manual section below. | ||
| 61 | 55 | ||
| 62 | - ### Manually | ||
| 56 | + ### Manual process | ||
| 63 | 57 | ||
| 64 | - 1. Checkout the staging branch for the targeted release line. | ||
| 58 | + 1. Checkout the `vN.x-staging` branch. | ||
| 65 | 59 | ||
| 66 | - 2. Make sure that the local staging branch is up to date with the remote. | ||
| 60 | + 2. Verify that the local staging branch is up to date with the remote. | ||
| 67 | 61 | ||
| 68 | - 3. Create a new branch off of the staging branch, as shown below. | ||
| 62 | + 3. Create a new branch based on `vN.x-staging`: | ||
| 69 | 63 | ||
| 70 | 64 | ```bash | |
| 71 | - # Assuming your fork of Node.js is checked out in $NODE_DIR, | ||
| 72 | - # the origin remote points to your fork, and the upstream remote points | ||
| 73 | - # to git@github.com:nodejs/node.git | ||
| 74 | - cd $NODE_DIR | ||
| 75 | - # If v20.x-staging is checked out `pull` should be used instead of `fetch` | ||
| 76 | - git fetch upstream v20.x-staging:v20.x-staging -f | ||
| 77 | - # Assume we want to backport PR #10157 | ||
| 78 | - git checkout -b backport-10157-to-v20.x v20.x-staging | ||
| 79 | - # Ensure there are no test artifacts from previous builds | ||
| 80 | - # Note that this command deletes all files and directories | ||
| 81 | - # not under revision control below the ./test directory. | ||
| 82 | - # It is optional and should be used with caution. | ||
| 83 | - git clean -xfd ./test/ | ||
| 65 | + git fetch upstream vN.x-staging:vN.x-staging -f | ||
| 66 | + git checkout -b backport-123-to-vN.x vN.x-staging | ||
| 84 | 67 | ``` | |
| 85 | 68 | ||
| 86 | - 4. After creating the branch, apply the changes to the branch. The cherry-pick | ||
| 87 | - will likely fail due to conflicts. In that case, you will see something | ||
| 88 | - like this: | ||
| 89 | - | ||
| 90 | - ```console | ||
| 91 | - # Say the $SHA is 773cdc31ef | ||
| 92 | - $ git cherry-pick $SHA # Use your commit hash | ||
| 93 | - error: could not apply 773cdc3... <commit title> | ||
| 94 | - hint: after resolving the conflicts, mark the corrected paths | ||
| 95 | - hint: with 'git add <paths>' or 'git rm <paths>' | ||
| 96 | - hint: and commit the result with 'git commit' | ||
| 69 | + 4. Cherry-pick the desired commit(s): | ||
| 70 | + | ||
| 71 | + ```bash | ||
| 72 | + git cherry-pick <commit hash> | ||
| 97 | 73 | ``` | |
| 98 | 74 | ||
| 99 | - 5. Make the required changes to remove the conflicts, add the files to the index | ||
| 100 | - using `git add`, and then commit the changes. That can be done with | ||
| 101 | - `git cherry-pick --continue`. | ||
| 75 | + 5. Resolve conflicts using `git add` and `git cherry-pick --continue`. | ||
| 102 | 76 | ||
| 103 | 77 | 6. Leave the commit message as is. If you think it should be modified, comment | |
| 104 | 78 | in the pull request. The `Backport-PR-URL` metadata does need to be added to | |
| 105 | 79 | the commit, but this will be done later. | |
| 106 | 80 | ||
| 107 | - 7. Make sure `make -j4 test` passes. | ||
| 81 | + 7. Verify that `make -j4 test` passes. | ||
| 108 | 82 | ||
| 109 | 83 | 8. Push the changes to your fork. | |
| 110 | 84 | ||
| 111 | 85 | 9. Open a pull request: | |
| 112 | - 1. Be sure to target the `v20.x-staging` branch in the pull request. | ||
| 113 | - 2. Include the backport target in the pull request title in the following | ||
| 114 | - format: `[v20.x backport] <commit title>`. | ||
| 115 | - Example: `[v20.x backport] process: improve performance of nextTick` | ||
| 116 | - 3. Check the checkbox labeled "Allow edits and access to secrets by | ||
| 117 | - maintainers". | ||
| 118 | - 4. In the description add a reference to the original pull request. | ||
| 119 | - 5. Amend the commit message and include a `Backport-PR-URL:` metadata and | ||
| 120 | - re-push the change to your fork. | ||
| 121 | - 6. Run a [`node-test-pull-request`][] CI job (with `REBASE_ONTO` set to the | ||
| 122 | - default `<pr base branch>`) | ||
| 123 | - | ||
| 124 | - 10. Replace the `backport-requested-v20.x` label on the original pull request | ||
| 125 | - with `backport-open-v20.x`. | ||
| 126 | - | ||
| 127 | - 11. If during the review process conflicts arise, use the following to rebase: | ||
| 128 | - `git pull --rebase upstream v20.x-staging` | ||
| 129 | - | ||
| 130 | - After the pull request lands, replace the `backport-open-v20.x` label on the | ||
| 131 | - original pull request with `backported-to-v20.x`. | ||
| 86 | + | ||
| 87 | + * Target `vN.x-staging`. | ||
| 88 | + * Title format: `[vN.x backport] <commit title>` (e.g., `[v20.x backport] process: improve performance of nextTick`). | ||
| 89 | + * Reference the original PR in the description. | ||
| 90 | + | ||
| 91 | + 10. Update the `backport-requested-vN.x` label on the original pull request to `backport-open-vN.x`. | ||
| 92 | + | ||
| 93 | + 11. If conflicts arise during the review process, the following command be used to rebase: | ||
| 94 | + | ||
| 95 | + ```bash | ||
| 96 | + git pull --rebase upstream vN.x-staging | ||
| 97 | + ``` | ||
| 98 | + | ||
| 99 | + Once merged, update the original PR's label from `backport-open-vN.x` to `backported-to-vN.x`. | ||
| 132 | 100 | ||
| 133 | 101 | [Release Plan]: https://github.com/nodejs/Release#release-plan | |
| 134 | 102 | [Release Schedule]: https://github.com/nodejs/Release#release-schedule | |
| 135 | 103 | [`@node-core/utils`]: https://github.com/nodejs/node-core-utils | |
| 136 | 104 | [`git node backport`]: https://github.com/nodejs/node-core-utils/blob/main/docs/git-node.md#git-node-backport | |
| 137 | - [`node-test-pull-request`]: https://ci.nodejs.org/job/node-test-pull-request/build | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments