You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: standardize release branch naming and terminology
Replace freeform "hotfix" terminology with structured "release branch"
naming (`release/<major.minor>`) across docs and CI. Distinguishes
hotfix-from-latest vs maintenance-patch scenarios in PUBLISHING.md.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ You **don't need** a changeset for:
103
103
104
104
- Changesets are optional - maintainers can add them later if needed
105
105
- Multiple changesets can exist for separate changes
106
-
- For **hotfix releases** (urgent patches while unrelated changesets are pending on `main`), maintainers use release branches — see [PUBLISHING.md](./PUBLISHING.md#hotfix-release) for details
106
+
- For **release branches** (urgent patches while unrelated changesets are pending on `main`, or maintenance patches on older minors), see [PUBLISHING.md](./PUBLISHING.md#release-branches) for details
107
107
- See [PUBLISHING.md](./PUBLISHING.md) for full release process details
Copy file name to clipboardExpand all lines: PUBLISHING.md
+19-8Lines changed: 19 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ When a dependency is bumped (e.g., the SDK), dependent packages automatically re
19
19
| Type | npm Tag | Trigger |
20
20
|------|---------|---------|
21
21
|**Stable**|`@latest`| Merge version PR on `main`|
22
-
|**Hotfix**|`@latest` or `@release-X.Y`| Push to `release/**` branch |
22
+
|**Release Branch**|`@latest` or `@release-X.Y`| Push to `release/**` branch |
23
23
|**Nightly**|`@nightly`| Scheduled weekdays 2 AM UTC, or manual |
24
24
25
25
Publishing uses [npm OIDC trusted publishers](https://docs.npmjs.com/trusted-publishers) — no npm tokens are needed. Provenance attestations are generated automatically.
@@ -60,12 +60,19 @@ This is the normal release flow from `main`.
60
60
61
61
No manual tagging or workflow dispatch is needed.
62
62
63
-
## Hotfix Release
63
+
## Release Branches
64
64
65
-
Use when you need to ship an urgent fix while unrelated changesets are pending on `main`, or when patching an older minor version.
65
+
Use when you need to ship a fix independently of `main`. There are two scenarios:
66
+
67
+
1.**Hotfix from latest** — urgent patch while unrelated changesets are pending on `main`. Publishes to `@latest`.
68
+
2.**Maintenance patch** — fix for an older minor version (e.g., patching `0.4.x` when `@latest` is `0.5.0`). Publishes to a scoped dist-tag like `@release-0.4`.
66
69
67
70
**Why:** Changesets consumes all pending changesets atomically — you can't release one package while holding others. Release branches let you version and publish independently of `main`.
68
71
72
+
Branch naming convention: `release/<major.minor>` (e.g., `release/0.5`). This is self-documenting and allows reuse for multiple patches to the same minor.
73
+
74
+
### Steps
75
+
69
76
1.**Find the tag to branch from:**
70
77
71
78
```bash
@@ -75,7 +82,11 @@ Use when you need to ship an urgent fix while unrelated changesets are pending o
3.**Cherry-pick or apply the fix**, then create and consume a changeset:
@@ -90,18 +101,18 @@ Use when you need to ship an urgent fix while unrelated changesets are pending o
90
101
4.**Push the branch:**
91
102
92
103
```bash
93
-
git push -u origin release/fix-description
104
+
git push -u origin release/0.5
94
105
```
95
106
96
107
5.**Publishing happens automatically** — CI runs, and on success `publish.yml` triggers. No manual dispatch needed.
97
108
98
109
6.**Review the auto-created PR** that merges version bumps back to `main`. Merge it to prevent version collisions on the next regular release.
99
110
100
-
7.**Delete the release branch** after the merge-back PR is merged.
111
+
7.**Delete the release branch** after the merge-back PR is merged (or keep it for future patches to the same minor).
101
112
102
113
### Older minor version patching
103
114
104
-
When the hotfix targets an older minor (e.g., `0.4.1` when `@latest` is `0.5.0`), the publish workflow automatically uses a scoped dist-tag (`release-0.4`) instead of `@latest`, preventing `@latest` from moving backward. Users install with:
115
+
When the release branch targets an older minor (e.g., `0.4.3` when `@latest` is `0.5.0`), the publish workflow automatically uses a scoped dist-tag (`release-0.4`) instead of `@latest`, preventing `@latest` from moving backward. Users install with:
105
116
106
117
```bash
107
118
npm install @salesforce/b2c-cli@release-0.4
@@ -141,7 +152,7 @@ The documentation site serves two versions:
141
152
-**Stable** (root URL) — built from the most recent release tag (across all branches)
142
153
-**Dev** (`/dev/`) — built from `main`, updated on every push
143
154
144
-
Stable docs are rebuilt after every stable or hotfix release. The `deploy-docs.yml` workflow finds the most recent release tag by creation date across all branches, so tags from hotfix release branches are picked up automatically.
155
+
Stable docs are rebuilt after every stable or release branch publish. The `deploy-docs.yml` workflow finds the most recent release tag by creation date across all branches, so tags from release branches are picked up automatically.
0 commit comments