Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
9d0041a
doc: add release key for aduh95
aduh95 Oct 10, 2024
ae34e27
build: pin doc workflow to Node.js 20
richardlau Nov 7, 2024
6b3c24d
buffer: fix out of range for toString
jazelly Sep 6, 2024
70504f8
doc: update `require(ESM)` history and stability status
aduh95 Oct 2, 2024
a4586f0
doc: update documentation for externalizing deps
mhdawson Sep 5, 2024
3ebd316
tools: update github_reporter to 1.7.1
nodejs-github-bot Sep 17, 2024
20501a7
deps: update corepack to 0.29.4
nodejs-github-bot Sep 17, 2024
c96e5cb
lib: the REPL should survive deletion of Array.prototype methods
ljharb Sep 17, 2024
0984910
benchmark: add dotenv benchmark
avivkeller Sep 18, 2024
ae27e2d
meta: add links to alternative issue trackers
avivkeller Sep 18, 2024
9947fc1
doc: add missing definitions to `internal-api.md`
avivkeller Sep 18, 2024
4baa5c4
doc: change backporting guide with updated info
avivkeller Sep 18, 2024
93ac799
cli: fix spacing for port range error
avivkeller Sep 18, 2024
67834ee
build: print `Running XYZ linter...` for py and yml
avivkeller Sep 18, 2024
a730cdb
src: remove duplicate code setting AF_INET
kernelbin Sep 18, 2024
3a682cc
path: remove repetitive conditional operator in `posix.resolve`
HBSPS Sep 18, 2024
453df77
events: return `currentTarget` when dispatching
KhafraDev Aug 29, 2024
62f2147
test: update DOM events web platform tests
KhafraDev Aug 29, 2024
746e78c
Revert "build: upgrade clang-format to v18"
legendecas Sep 18, 2024
5c11a61
test: update test to support OpenSSL32
mhdawson Sep 18, 2024
ee5624b
test: adjust key sizes to support OpenSSL32
mhdawson Sep 18, 2024
f39ff4d
worker: handle `--input-type` more consistently
aduh95 Sep 19, 2024
37b0bea
meta: remove never-used workflow trigger
avivkeller Sep 19, 2024
a2aa4fa
benchmark: include ascii to fs/readfile
RafaelGSS Sep 19, 2024
aba9dc7
test: remove test-http-max-sockets flaky designation
lpinca Sep 20, 2024
6f53c09
test: move test-http-max-sockets to parallel
lpinca Sep 20, 2024
7d01b6a
src: cleanup per env handles directly without a list
legendecas Sep 20, 2024
1a007ea
test: add asserts to validate test assumptions
mhdawson Sep 18, 2024
f849cf6
test: fix `soucre` to `source`
avivkeller Sep 21, 2024
63c8f3d
test_runner: replace ansi clear with ansi reset
pmarchini Sep 21, 2024
ae4b2ae
tools: update error message for ICU in license-builder
avivkeller Sep 3, 2024
f25760c
build: add the option to generate compile_commands.json in vcbuild.bat
segevfiner Mar 30, 2024
93a098c
test: deflake test-http-header-overflow
lpinca Sep 17, 2024
0c1666a
events: allow null/undefined eventInitDict
KhafraDev Aug 29, 2024
f48992f
test: remove unused common utilities
avivkeller Sep 7, 2024
333b5a0
test: improve coverage for timer promises schedular
avivkeller Jun 6, 2024
30383ff
zlib: throw brotli initialization error from c++
anonrig Sep 1, 2024
a3c2ef9
util: update ansi regex
avivkeller Sep 9, 2024
bd8fd4f
test: add `util.stripVTControlCharacters` test
avivkeller Sep 9, 2024
b1cad51
test_runner: use `test:` symbol on second print of parent test
avivkeller Sep 15, 2024
39a80ee
test: adjust tls-set-ciphers for OpenSSL32
mhdawson Sep 21, 2024
d2ce003
meta: add `linux` to OS labels in collaborator guide
avivkeller Sep 22, 2024
6e5d524
module: remove duplicated import
avivkeller Sep 22, 2024
9640661
test: fix `test-vm-context-dont-contextify` when path contains a space
aduh95 Sep 22, 2024
6c2a138
test: update tls test to support OpenSSL32
mhdawson Sep 22, 2024
df6dc75
doc: remove `parseREPLKeyword` from REPL documentation
avivkeller Sep 22, 2024
bc7b524
test: make `test-runner-assert` more robust
avivkeller Sep 22, 2024
09f75b2
build: display free disk space after build in the test-macOS workflow
iwuliz Sep 20, 2024
0b985ec
build: remove -v flag to reduce noise
iwuliz Sep 20, 2024
2f678ea
crypto: ensure invalid SubtleCrypto JWK data import results in DataError
panva Sep 23, 2024
8e6b606
lib: remove lib/internal/idna.js
anonrig Sep 23, 2024
27ff2da
doc: add note about `--expose-internals`
avivkeller Sep 23, 2024
083311e
tools: remove redudant code from eslint require rule
avivkeller Sep 23, 2024
8f1956c
deps: update acorn-walk to 8.3.4
nodejs-github-bot Sep 24, 2024
94302b6
doc: add abmusse to collaborators
abmusse Sep 23, 2024
ac1cb8d
perf_hooks: add missing type argument to getEntriesByName
luketaher Sep 24, 2024
397be8a
tty: fix links for terminal colors
avivkeller Sep 24, 2024
85b3edc
repl: catch `\v` and `\r` in new-line detection
avivkeller Sep 25, 2024
eb4d468
Revert "test: mark test-fs-watch-non-recursive flaky on Windows"
lpinca Sep 25, 2024
86d7181
src: update clang-tidy and focus on modernization
anonrig Sep 25, 2024
2be5d61
benchmark: create benchmark for typescript
marco-ippolito Sep 25, 2024
7c88739
test: fix some tests when path contains `%`
aduh95 Sep 25, 2024
db2496c
meta: add more information about nightly releases
avivkeller Sep 25, 2024
afc1628
test: fix `assertSnapshot` when path contains a quote
aduh95 Sep 25, 2024
c908b8a
test: fix more tests that fail when path contains a space
aduh95 Sep 25, 2024
7802170
test: fix test-tls-junk-closes-server
mhdawson Sep 25, 2024
df1f049
src: decode native error messages as UTF-8
joyeecheung Sep 25, 2024
82c4022
test: deflake test-http-remove-header-stays-removed
lpinca Sep 26, 2024
7b17968
deps: update timezone to 2024b
nodejs-github-bot Sep 26, 2024
7310abe
tools: bump Rollup from 4.18.1 to 4.22.4 for `lint-md`
dependabot[bot] Sep 26, 2024
388c754
doc: add missing `:` to `run()`'s `globPatterns`
avivkeller Sep 26, 2024
80edcdf
doc: update style guide
avivkeller Sep 26, 2024
81bcec0
test: deflake test/pummel/test-timers.js
jakecastelli Sep 27, 2024
f10d9ad
stream: treat null asyncIterator as undefined
jazelly Sep 27, 2024
7a51a16
doc: fix the require resolve algorithm in `modules.md`
chirsz-ever Sep 27, 2024
f38d1e9
build: notify via slack when review-wanted
RafaelGSS Sep 27, 2024
8981309
tools: make `choco install` script more readable
avivkeller Sep 28, 2024
3ba2e7b
Revert "console: colorize console error and warn"
avivkeller Sep 28, 2024
81ad69d
doc: move the YAML changes element
sendoru Sep 28, 2024
085c344
assert: show the diff when deep comparing data with a custom message
puskin Sep 4, 2024
1ad659a
doc: add esm examples to node:net
mfdebian Sep 28, 2024
d9839c1
doc: fix link in `test/README.md`
LiviaMedeiros Sep 30, 2024
5105188
test: update wpt test for encoding
Nahee-Park Sep 30, 2024
d0e871a
build,win: add winget config to set up env
huseyinacacak-janea Sep 30, 2024
1a0d8ef
benchmark: add no-warnings to process.has bench
RafaelGSS Sep 30, 2024
efdccc8
watch: preserve output when gracefully restarted
theoludwig Sep 30, 2024
9053d21
meta: add mailmap entry for abmusse
abmusse Sep 30, 2024
d65c245
doc: use correct dash in stability status
aduh95 Oct 1, 2024
d08e4c2
doc: mention addons to experimental permission
RafaelGSS Oct 1, 2024
2f7828d
doc: fix unordered error anchors
aduh95 Oct 2, 2024
226836c
worker: throw InvalidStateError in postMessage after close
Nahee-Park Oct 3, 2024
0decaab
fs: acknowledge `signal` option in `filehandle.createReadStream()`
LiviaMedeiros Oct 3, 2024
f412a02
doc: update test context.assert
pmarchini Oct 3, 2024
5b35836
build: include `.nycrc` in coverage workflows
iwuliz Oct 3, 2024
9e7be23
doc: tweak onboarding instructions
mhdawson Oct 3, 2024
8a529ab
meta: bump peter-evans/create-pull-request from 7.0.1 to 7.0.5
dependabot[bot] Oct 3, 2024
1c20908
meta: bump actions/setup-node from 4.0.3 to 4.0.4
dependabot[bot] Oct 3, 2024
d3441ff
meta: bump actions/checkout from 4.1.7 to 4.2.0
dependabot[bot] Oct 3, 2024
48d643f
deps: upgrade openssl sources to quictls/openssl-3.0.14+quic1
nodejs-github-bot Aug 12, 2024
381f1f9
deps: update archs files for openssl-3.0.14+quic1
nodejs-github-bot Aug 12, 2024
da15e7e
deps: upgrade openssl sources to quictls/openssl-3.0.15+quic1
nodejs-github-bot Sep 30, 2024
0c7f2fc
deps: update archs files for openssl-3.0.15+quic1
nodejs-github-bot Sep 30, 2024
66a87d1
test: update multiple assert tests to use node:test
jasnell Aug 27, 2024
8b8d35f
meta: bump mozilla-actions/sccache-action from 0.0.5 to 0.0.6
dependabot[bot] Oct 4, 2024
27564b7
doc: fix initial default value of autoSelectFamily
freego555 Oct 5, 2024
4268517
test_runner: assert entry is a valid object
geeksilva97 Oct 6, 2024
0bbeb60
build: fix notify-on-review-wanted action
RafaelGSS Oct 7, 2024
6027084
test: make `test-loaders-workers-spawned` less flaky
aduh95 Oct 8, 2024
50b13bf
doc: add onboarding details for ambassador program
marco-ippolito Oct 8, 2024
748ed2e
meta: move one or more collaborators to emeritus
nodejs-github-bot Oct 9, 2024
b963db9
doc: fix `events.once()` example using `AbortSignal`
foxxyz Oct 9, 2024
a455372
benchmark: rewrite detect-esm-syntax benchmark
joyeecheung Oct 9, 2024
fd6fc61
doc: add pmarchini to collaborators
pmarchini Oct 9, 2024
df713f0
Revert "doc: update test context.assert"
aduh95 Oct 9, 2024
0f81eaf
doc: fix Markdown linter
aduh95 Oct 9, 2024
5d28d98
deps: update undici to 6.20.0
nodejs-github-bot Oct 10, 2024
01f0b0e
benchmark: adjust config for deepEqual object
RafaelGSS Oct 11, 2024
f25a5b6
build: use rclone instead of aws CLI
targos Nov 2, 2024
00a2fc7
lib: move `Symbol[Async]Dispose` polyfills to `internal/util`
aduh95 Sep 10, 2024
0b3fb34
tools: add `polyfilled` option to `prefer-primordials` rule
aduh95 Oct 17, 2024
7017811
2024-11-20, Version 20.18.1 'Iron' (LTS)
marco-ippolito Nov 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
doc: change backporting guide with updated info
PR-URL: #53746
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
  • Loading branch information
avivkeller authored and marco-ippolito committed Nov 17, 2024
commit 4baa5c4d1021c658091cdef379164f165038de22
149 changes: 58 additions & 91 deletions doc/contributing/backporting-to-release-lines.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,136 +2,103 @@

## Staging branches

Each release line has a staging branch that the releaser will use as a scratch
pad while preparing a release. The branch name is formatted as follows:
`vN.x-staging` where `N` is the major release number.
Each release line has a staging branch that serves as a workspace for preparing releases.
The branch format is `vN.x-staging`, where `N` is the major release number.

For the active staging branches see the [Release Schedule][].
For active staging branches, refer to the [Release Schedule][].

## What needs to be backported?
## Identifying changes that require a backport

If a cherry-pick from `main` does not land cleanly on a staging branch, the
releaser will mark the pull request with a particular label for that release
line (e.g. `backport-requested-vN.x`), specifying to our tooling that this
pull request should not be included. The releaser will then add a comment
requesting that a backport pull request be made.
If a cherry-pick from `main` doesn't apply cleanly on a staging branch, the pull request
will be labeled for the release line (e.g., `backport-requested-vN.x`). This indicates
that manual backporting is required.

## What can be backported?
## Criteria for backporting

The "Current" release line is much more lenient than the LTS release lines in
what can be landed. Our LTS release lines (see the [Release Plan][])
require that commits mature in the Current release for at least 2 weeks before
they can be landed in an LTS staging branch. Only after "maturation" will those
commits be cherry-picked or backported.
The "Current" release line is more flexible than LTS lines. LTS branches, detailed in the [Release Plan][],
require commits to mature in the Current release for at least two weeks before backporting.

## How to label backport issues and PRs?
## Labeling backport issues and PRs

For the following labels, the `N` in `vN.x` refers to the major release number.
Use the following labels, with `N` in `vN.x` denoting the major release number:

| Label | Description |
| ----------------------- | ------------------------------------------------------------------------------------------------- |
| backport-blocked-vN.x | PRs that should land on the vN.x-staging branch but are blocked by another PR's pending backport. |
| backport-open-vN.x | Indicate that the PR has an open backport. |
| backport-requested-vN.x | PRs awaiting manual backport to the vN.x-staging branch. |
| backported-to-vN.x | PRs backported to the vN.x-staging branch. |
| baking-for-lts | PRs that need to wait before landing in a LTS release. |
| lts-watch-vN.x | PRs that may need to be released in vN.x. |
| vN.x | Issues that can be reproduced on vN.x or PRs targeting the vN.x-staging branch. |
| Label | Description |
| ----------------------- | ------------------------------------------------------------------- |
| backport-blocked-vN.x | PRs for `vN.x-staging` blocked by pending backports from other PRs. |
| backport-open-vN.x | Indicates an open backport for the PR. |
| backport-requested-vN.x | PR awaiting manual backport to `vN.x-staging`. |
| backported-to-vN.x | PR successfully backported to `vN.x-staging`. |
| baking-for-lts | PRs awaiting LTS release after maturation in Current. |
| lts-watch-vN.x | PRs possibly included in `vN.x` LTS releases. |
| vN.x | Issues or PRs impacting `vN.x-staging` (or reproducible on vN.x). |

## How to submit a backport pull request
## Submitting a backport pull request

For the following steps, let's assume that you need to backport PR `123`
to the v20.x release line. All commands will use the `v20.x-staging` branch
to the vN.x release line. All commands will use the `vN.x-staging` branch
as the target branch. In order to submit a backport pull request to another
branch, simply replace that with the staging branch for the targeted release
branch, simply replace `N` with the version number for the targeted release
line.

### Automated
### Automated process

1. Make sure you have [`@node-core/utils`][] installed
1. Ensure [`@node-core/utils`][] is installed.

2. Run the [`git node backport`][] command
2. Execute [`git node backport`][] command:

```bash
# Backport PR 123 to v20.x-staging
git node backport 123 --to=20
```
```bash
# Example: Backport PR 123 to vN.x-staging
git node backport 123 --to=N
```

3. Jump to step 5 in the Manual section below
3. Proceed to step 5 in the Manual section below.

### Manually
### Manual process

1. Checkout the staging branch for the targeted release line.
1. Checkout the `vN.x-staging` branch.

2. Make sure that the local staging branch is up to date with the remote.
2. Verify that the local staging branch is up to date with the remote.

3. Create a new branch off of the staging branch, as shown below.
3. Create a new branch based on `vN.x-staging`:

```bash
# Assuming your fork of Node.js is checked out in $NODE_DIR,
# the origin remote points to your fork, and the upstream remote points
# to git@github.com:nodejs/node.git
cd $NODE_DIR
# If v20.x-staging is checked out `pull` should be used instead of `fetch`
git fetch upstream v20.x-staging:v20.x-staging -f
# Assume we want to backport PR #10157
git checkout -b backport-10157-to-v20.x v20.x-staging
# Ensure there are no test artifacts from previous builds
# Note that this command deletes all files and directories
# not under revision control below the ./test directory.
# It is optional and should be used with caution.
git clean -xfd ./test/
git fetch upstream vN.x-staging:vN.x-staging -f
git checkout -b backport-123-to-vN.x vN.x-staging
```

4. After creating the branch, apply the changes to the branch. The cherry-pick
will likely fail due to conflicts. In that case, you will see something
like this:

```console
# Say the $SHA is 773cdc31ef
$ git cherry-pick $SHA # Use your commit hash
error: could not apply 773cdc3... <commit title>
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
4. Cherry-pick the desired commit(s):

```bash
git cherry-pick <commit hash>
```

5. Make the required changes to remove the conflicts, add the files to the index
using `git add`, and then commit the changes. That can be done with
`git cherry-pick --continue`.
5. Resolve conflicts using `git add` and `git cherry-pick --continue`.

6. Leave the commit message as is. If you think it should be modified, comment
in the pull request. The `Backport-PR-URL` metadata does need to be added to
the commit, but this will be done later.

7. Make sure `make -j4 test` passes.
7. Verify that `make -j4 test` passes.

8. Push the changes to your fork.

9. Open a pull request:
1. Be sure to target the `v20.x-staging` branch in the pull request.
2. Include the backport target in the pull request title in the following
format: `[v20.x backport] <commit title>`.
Example: `[v20.x backport] process: improve performance of nextTick`
3. Check the checkbox labeled "Allow edits and access to secrets by
maintainers".
4. In the description add a reference to the original pull request.
5. Amend the commit message and include a `Backport-PR-URL:` metadata and
re-push the change to your fork.
6. Run a [`node-test-pull-request`][] CI job (with `REBASE_ONTO` set to the
default `<pr base branch>`)

10. Replace the `backport-requested-v20.x` label on the original pull request
with `backport-open-v20.x`.

11. If during the review process conflicts arise, use the following to rebase:
`git pull --rebase upstream v20.x-staging`

After the pull request lands, replace the `backport-open-v20.x` label on the
original pull request with `backported-to-v20.x`.

* Target `vN.x-staging`.
* Title format: `[vN.x backport] <commit title>` (e.g., `[v20.x backport] process: improve performance of nextTick`).
* Reference the original PR in the description.

10. Update the `backport-requested-vN.x` label on the original pull request to `backport-open-vN.x`.

11. If conflicts arise during the review process, the following command be used to rebase:

```bash
git pull --rebase upstream vN.x-staging
```

Once merged, update the original PR's label from `backport-open-vN.x` to `backported-to-vN.x`.

[Release Plan]: https://github.com/nodejs/Release#release-plan
[Release Schedule]: https://github.com/nodejs/Release#release-schedule
[`@node-core/utils`]: https://github.com/nodejs/node-core-utils
[`git node backport`]: https://github.com/nodejs/node-core-utils/blob/main/docs/git-node.md#git-node-backport
[`node-test-pull-request`]: https://ci.nodejs.org/job/node-test-pull-request/build