cherrypick-interactive 1.13.3 โ 1.13.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -446
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,30 +22,6 @@ No manual `git log` diffing. No risky merges. No guesswork.
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## ๐งญ What it does
|
|
26
|
-
|
|
27
|
-
- ๐ Finds commits in `dev` not present in `main`
|
|
28
|
-
- ๐๏ธ Lets you select which commits to cherry-pick (or pick all)
|
|
29
|
-
- ๐ช Cherry-picks in the correct order (oldest โ newest)
|
|
30
|
-
- โ๏ธ **Interactive conflict resolution wizard** with multiple strategies
|
|
31
|
-
- ๐ฏ **Preserves exact commit messages** from squashed commits
|
|
32
|
-
- ๐ช Detects **semantic version bump** (`major`, `minor`, `patch`) from conventional commits
|
|
33
|
-
- ๐งฉ Creates a `release/x.y.z` branch from `main`
|
|
34
|
-
- ๐งพ Generates a Markdown changelog from commits
|
|
35
|
-
- ๐ Links ticket IDs to your issue tracker (ClickUp, Jira, Linear, or custom)
|
|
36
|
-
- ๐ฅ๏ธ Rich **TUI dashboard** with diff preview, search, and keyboard shortcuts
|
|
37
|
-
- ๐ค **CI mode** for fully non-interactive pipeline execution
|
|
38
|
-
- โฉ๏ธ **Undo / rollback** with checkpoint-based session recovery
|
|
39
|
-
- ๐ **Changelog preview** before cherry-pick with confirmation gate
|
|
40
|
-
- โ ๏ธ **Dependency detection** warns when selected commits depend on unselected ones
|
|
41
|
-
- ๐พ **Profiles** to save and reuse CLI flag combinations
|
|
42
|
-
- ๐งฐ Optionally:
|
|
43
|
-
- updates `package.json` version
|
|
44
|
-
- commits and pushes it
|
|
45
|
-
- opens a **GitHub PR** (draft or normal)
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
25
|
## ๐ฆ Installation
|
|
50
26
|
|
|
51
27
|
```bash
|
|
@@ -58,342 +34,47 @@ npm install -g cherrypick-interactive
|
|
|
58
34
|
|
|
59
35
|
## ๐ Quick Start
|
|
60
36
|
|
|
61
|
-
```bash
|
|
62
|
-
cherrypick-interactive \
|
|
63
|
-
--semantic-versioning \
|
|
64
|
-
--version-file ./package.json \
|
|
65
|
-
--create-release \
|
|
66
|
-
--push-release \
|
|
67
|
-
--draft-pr
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
โ
This will:
|
|
71
|
-
1. Fetch `origin/dev` and `origin/main`
|
|
72
|
-
2. List commits in `dev` missing from `main`
|
|
73
|
-
3. Let you select which to cherry-pick (TUI dashboard with diff preview)
|
|
74
|
-
4. Detect potential dependencies between commits
|
|
75
|
-
5. Show a changelog preview with version bump info
|
|
76
|
-
6. Compute the next version from commit messages
|
|
77
|
-
7. Create `release/<next-version>` from `main`
|
|
78
|
-
8. Cherry-pick the selected commits (with conflict resolution if needed)
|
|
79
|
-
9. Update your `package.json` version and commit it
|
|
80
|
-
10. Push the branch and open a **draft PR** on GitHub
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## ๐งฉ Common Use Cases
|
|
85
|
-
|
|
86
|
-
### 1. Compare branches manually
|
|
87
|
-
|
|
88
37
|
```bash
|
|
89
38
|
cherrypick-interactive
|
|
90
39
|
```
|
|
91
40
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
### 2. Cherry-pick all missing commits automatically
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
cherrypick-interactive --all-yes
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### 3. Preview changes without applying them
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
cherrypick-interactive --dry-run
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### 4. Filter commits by pattern
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
cherrypick-interactive --ignore-commits "^chore\(deps\)|^ci:"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Excludes commits starting with `chore(deps)` or `ci:` from the selection list.
|
|
113
|
-
|
|
114
|
-
### 5. Ignore certain commits from semantic versioning
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
cherrypick-interactive --ignore-semver "bump|dependencies"
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Treats commits containing "bump" or "dependencies" as chores (no version bump).
|
|
121
|
-
|
|
122
|
-
### 6. Use a saved profile
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
# Save your flags once
|
|
126
|
-
cherrypick-interactive --save-profile hotfix --dev origin/develop --main origin/release --since "2 weeks ago"
|
|
127
|
-
|
|
128
|
-
# Reuse anytime
|
|
129
|
-
cherrypick-interactive --profile hotfix
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### 7. Run in CI/CD pipeline
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
cherrypick-interactive --ci --conflict-strategy theirs --format json > result.json
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### 8. Link ticket IDs in changelog
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
cherrypick-interactive --tracker clickup --tracker-url "https://app.clickup.com/t/{{id}}"
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### 9. Undo the last cherry-pick session
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
cherrypick-interactive --undo
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## โ๏ธ Options
|
|
153
|
-
|
|
154
|
-
### Cherry-pick options
|
|
155
|
-
|
|
156
|
-
| Flag | Description | Default |
|
|
157
|
-
|------|--------------|----------|
|
|
158
|
-
| `--dev` | Source branch (commits to copy) | `origin/dev` |
|
|
159
|
-
| `--main` | Target branch (commits already merged here will be skipped) | `origin/main` |
|
|
160
|
-
| `--since` | Git time window filter (e.g. `"2 weeks ago"`) | `1 week ago` |
|
|
161
|
-
| `--no-fetch` | Skip `git fetch --prune` | `false` |
|
|
162
|
-
| `--all-yes` | Cherry-pick all missing commits without prompt | `false` |
|
|
163
|
-
| `--ignore-commits` | Comma-separated regex patterns to exclude commits | โ |
|
|
164
|
-
|
|
165
|
-
### Version options
|
|
166
|
-
|
|
167
|
-
| Flag | Description | Default |
|
|
168
|
-
|------|--------------|----------|
|
|
169
|
-
| `--semantic-versioning` | Detect semantic version bump from commits | `true` |
|
|
170
|
-
| `--current-version` | Current version (if not reading from file) | โ |
|
|
171
|
-
| `--version-file` | Path to `package.json` (to read & update version) | `./package.json` |
|
|
172
|
-
| `--version-commit-message` | Template for version bump commit | `chore(release): bump version to {{version}}` |
|
|
173
|
-
| `--ignore-semver` | Comma-separated regex patterns to ignore for semver | โ |
|
|
174
|
-
|
|
175
|
-
### Release options
|
|
176
|
-
|
|
177
|
-
| Flag | Description | Default |
|
|
178
|
-
|------|--------------|----------|
|
|
179
|
-
| `--create-release` | Create `release/x.y.z` branch from `main` | `true` |
|
|
180
|
-
| `--push-release` | Push release branch to origin | `true` |
|
|
181
|
-
| `--draft-pr` | Create the GitHub PR as a draft | `false` |
|
|
182
|
-
|
|
183
|
-
### CI options
|
|
184
|
-
|
|
185
|
-
| Flag | Description | Default |
|
|
186
|
-
|------|--------------|----------|
|
|
187
|
-
| `--ci` | Enable fully non-interactive mode | `false` |
|
|
188
|
-
| `--conflict-strategy` | How to handle conflicts: `fail`, `ours`, `theirs`, `skip` | `fail` |
|
|
189
|
-
| `--format` | Output format: `text` or `json` | `text` |
|
|
190
|
-
| `--dependency-strategy` | How to handle dependencies: `warn`, `fail`, `ignore` | `warn` |
|
|
191
|
-
|
|
192
|
-
### Tracker options
|
|
193
|
-
|
|
194
|
-
| Flag | Description | Default |
|
|
195
|
-
|------|--------------|----------|
|
|
196
|
-
| `--tracker` | Built-in preset: `clickup`, `jira`, `linear` | โ |
|
|
197
|
-
| `--ticket-pattern` | Custom regex to capture ticket ID (one capture group) | โ |
|
|
198
|
-
| `--tracker-url` | URL template with `{{id}}` placeholder | โ |
|
|
199
|
-
|
|
200
|
-
### Profile options
|
|
201
|
-
|
|
202
|
-
| Flag | Description | Default |
|
|
203
|
-
|------|--------------|----------|
|
|
204
|
-
| `--profile` | Load a named profile from `.cherrypickrc.json` | โ |
|
|
205
|
-
| `--save-profile` | Save current CLI flags as a named profile | โ |
|
|
206
|
-
| `--list-profiles` | List available profiles and exit | `false` |
|
|
207
|
-
|
|
208
|
-
### Session options
|
|
209
|
-
|
|
210
|
-
| Flag | Description | Default |
|
|
211
|
-
|------|--------------|----------|
|
|
212
|
-
| `--undo` | Reset release branch to pre-cherry-pick state | `false` |
|
|
213
|
-
|
|
214
|
-
### UI options
|
|
215
|
-
|
|
216
|
-
| Flag | Description | Default |
|
|
217
|
-
|------|--------------|----------|
|
|
218
|
-
| `--no-tui` | Disable TUI dashboard, use simple checkbox instead | `false` |
|
|
219
|
-
| `--dry-run` | Show what would happen without applying changes | `false` |
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## ๐ง How Semantic Versioning Works
|
|
224
|
-
|
|
225
|
-
The tool analyzes commit messages using **Conventional Commits**:
|
|
226
|
-
|
|
227
|
-
| Prefix | Example | Bump |
|
|
228
|
-
|---------|----------|------|
|
|
229
|
-
| `BREAKING CHANGE:` | `feat(auth): BREAKING CHANGE: require MFA` | **major** |
|
|
230
|
-
| `feat:` | `feat(ui): add dark mode` | **minor** |
|
|
231
|
-
| `fix:` / `perf:` | `fix(api): correct pagination offset` | **patch** |
|
|
232
|
-
|
|
233
|
-
Use `--ignore-semver` to treat certain commits as chores:
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
cherrypick-interactive --ignore-semver "^chore\(deps\)|bump|merge"
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## โ๏ธ Interactive Conflict Resolution
|
|
242
|
-
|
|
243
|
-
When cherry-picking encounters conflicts, the tool provides an **interactive wizard**:
|
|
244
|
-
|
|
245
|
-
### Conflict Resolution Options:
|
|
246
|
-
|
|
247
|
-
**Per-file resolution:**
|
|
248
|
-
- **Use ours** โ Keep the current branch's version
|
|
249
|
-
- **Use theirs** โ Accept the cherry-picked commit's version
|
|
250
|
-
- **Open in editor** โ Manually resolve conflicts in your editor
|
|
251
|
-
- **Show diff** โ View the conflicting changes
|
|
252
|
-
- **Mark resolved** โ Stage the file as-is
|
|
253
|
-
|
|
254
|
-
**Bulk actions:**
|
|
255
|
-
- **Use ours for ALL** โ Apply current branch's version to all conflicts
|
|
256
|
-
- **Use theirs for ALL** โ Accept cherry-picked version for all conflicts
|
|
257
|
-
- **Stage ALL** โ Mark all files as resolved
|
|
258
|
-
- **Launch mergetool** โ Use Git's configured merge tool
|
|
259
|
-
|
|
260
|
-
In CI mode, `--conflict-strategy` handles conflicts automatically (`ours`, `theirs`, `skip`, or `fail`).
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## ๐ฅ๏ธ TUI Dashboard
|
|
265
|
-
|
|
266
|
-
The commit selection screen features a rich terminal UI:
|
|
267
|
-
|
|
268
|
-
- **Arrow keys / j/k** โ Navigate commits
|
|
269
|
-
- **Space** โ Toggle selection
|
|
270
|
-
- **a / n** โ Select all / deselect all
|
|
271
|
-
- **/** โ Search/filter commits by message
|
|
272
|
-
- **d** โ Full diff overlay (Esc to return)
|
|
273
|
-
- **p** โ Toggle preview pane
|
|
274
|
-
- **Enter** โ Confirm selection
|
|
275
|
-
- **q** โ Quit (with confirmation if commits are selected)
|
|
276
|
-
|
|
277
|
-
Each commit shows its hash, subject, and relative date. Selected commits are highlighted in green.
|
|
278
|
-
|
|
279
|
-
Falls back to simple `inquirer` checkbox on: Windows, small terminals, CI, or with `--no-tui`.
|
|
280
|
-
|
|
281
|
-
---
|
|
282
|
-
|
|
283
|
-
## ๐พ Profiles
|
|
284
|
-
|
|
285
|
-
Save and reuse CLI flag combinations:
|
|
286
|
-
|
|
287
|
-
```bash
|
|
288
|
-
# Save
|
|
289
|
-
cherrypick-interactive --save-profile hotfix --dev origin/develop --main origin/release --since "2 weeks ago"
|
|
290
|
-
|
|
291
|
-
# Use
|
|
292
|
-
cherrypick-interactive --profile hotfix
|
|
293
|
-
|
|
294
|
-
# Override a single flag
|
|
295
|
-
cherrypick-interactive --profile hotfix --since "3 days ago"
|
|
296
|
-
|
|
297
|
-
# List all profiles
|
|
298
|
-
cherrypick-interactive --list-profiles
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
Config stored in `.cherrypickrc.json`:
|
|
302
|
-
|
|
303
|
-
```json
|
|
304
|
-
{
|
|
305
|
-
"profiles": {
|
|
306
|
-
"hotfix": {
|
|
307
|
-
"dev": "origin/develop",
|
|
308
|
-
"main": "origin/release",
|
|
309
|
-
"since": "2 weeks ago"
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
"tracker": {
|
|
313
|
-
"ticket-pattern": "#([a-z0-9]+)",
|
|
314
|
-
"tracker-url": "https://app.clickup.com/t/{{id}}"
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
---
|
|
320
|
-
|
|
321
|
-
## ๐ Tracker Integration
|
|
322
|
-
|
|
323
|
-
Link ticket IDs in your changelog to your issue tracker:
|
|
41
|
+
That's it. Compares `origin/dev` vs `origin/main` for the last week and lets you pick interactively.
|
|
324
42
|
|
|
325
|
-
|
|
326
|
-
# Built-in presets
|
|
327
|
-
cherrypick-interactive --tracker clickup --tracker-url "https://app.clickup.com/t/{{id}}"
|
|
328
|
-
cherrypick-interactive --tracker jira --tracker-url "https://team.atlassian.net/browse/{{id}}"
|
|
329
|
-
cherrypick-interactive --tracker linear --tracker-url "https://linear.app/my-team/issue/{{id}}"
|
|
330
|
-
|
|
331
|
-
# Custom pattern
|
|
332
|
-
cherrypick-interactive --ticket-pattern "#([a-z0-9]+)" --tracker-url "https://app.clickup.com/t/{{id}}"
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
Commit `#86c8w62wx - Fix login bug` becomes `[#86c8w62wx](https://app.clickup.com/t/86c8w62wx) - Fix login bug` in the changelog.
|
|
43
|
+
For a full release workflow, see the [Quick Start guide](docs/quick-start.md).
|
|
336
44
|
|
|
337
45
|
---
|
|
338
46
|
|
|
339
|
-
##
|
|
340
|
-
|
|
341
|
-
Run fully non-interactive in CI/CD pipelines:
|
|
342
|
-
|
|
343
|
-
```bash
|
|
344
|
-
cherrypick-interactive --ci --conflict-strategy theirs --format json > result.json
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
**Exit codes:**
|
|
348
|
-
|
|
349
|
-
| Code | Meaning |
|
|
350
|
-
|------|---------|
|
|
351
|
-
| `0` | Success |
|
|
352
|
-
| `1` | Conflict (with `--conflict-strategy fail`) |
|
|
353
|
-
| `2` | No commits found |
|
|
354
|
-
| `3` | Auth / push error |
|
|
355
|
-
| `4` | Dependency issue (with `--dependency-strategy fail`) |
|
|
356
|
-
|
|
357
|
-
**JSON output** goes to stdout, all logs go to stderr. Colors auto-disabled in JSON mode.
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## โฉ๏ธ Undo / Rollback
|
|
362
|
-
|
|
363
|
-
Made a mistake? Roll back the entire cherry-pick session:
|
|
364
|
-
|
|
365
|
-
```bash
|
|
366
|
-
cherrypick-interactive --undo
|
|
367
|
-
```
|
|
47
|
+
## ๐งญ What it does
|
|
368
48
|
|
|
369
|
-
-
|
|
370
|
-
-
|
|
371
|
-
-
|
|
372
|
-
-
|
|
49
|
+
- ๐ Finds commits in `dev` not present in `main`
|
|
50
|
+
- ๐๏ธ Lets you select which commits to cherry-pick (or pick all)
|
|
51
|
+
- ๐ช Cherry-picks in the correct order (oldest โ newest)
|
|
52
|
+
- โ๏ธ [**Interactive conflict resolution wizard**](docs/conflict-resolution.md)
|
|
53
|
+
- ๐ฏ **Preserves exact commit messages** from squashed commits
|
|
54
|
+
- ๐ช Detects [**semantic version bump**](docs/semantic-versioning.md) from conventional commits
|
|
55
|
+
- ๐งฉ Creates a `release/x.y.z` branch from `main`
|
|
56
|
+
- ๐งพ Generates a Markdown changelog with [**ticket linking**](docs/tracker-integration.md)
|
|
57
|
+
- ๐ฅ๏ธ Rich [**TUI dashboard**](docs/tui-dashboard.md) with diff preview, search, and keyboard shortcuts
|
|
58
|
+
- ๐ค [**CI mode**](docs/ci-mode.md) for fully non-interactive pipeline execution
|
|
59
|
+
- โฉ๏ธ [**Undo / rollback**](docs/undo-rollback.md) with checkpoint-based session recovery
|
|
60
|
+
- ๐พ [**Profiles**](docs/profiles.md) to save and reuse CLI flag combinations
|
|
373
61
|
|
|
374
62
|
---
|
|
375
63
|
|
|
376
|
-
##
|
|
64
|
+
## ๐ Documentation
|
|
377
65
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
-
|
|
381
|
-
-
|
|
382
|
-
|
|
383
|
-
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
- โ
Interactive conflict resolution without leaving the terminal
|
|
391
|
-
- โ
Smart pattern-based filtering for commits and version detection
|
|
392
|
-
- โ
Automatic changelog generation with ticket linking
|
|
393
|
-
- โ
TUI dashboard with diff preview and keyboard shortcuts
|
|
394
|
-
- โ
CI mode with structured JSON output and distinct exit codes
|
|
395
|
-
- โ
Undo/rollback with safety checks
|
|
396
|
-
- โ
Reusable profiles for common workflows
|
|
66
|
+
| Topic | Description |
|
|
67
|
+
|-------|-------------|
|
|
68
|
+
| [๐ Quick Start](docs/quick-start.md) | Getting started, full workflow, custom branches |
|
|
69
|
+
| [๐งฉ Common Use Cases](docs/common-use-cases.md) | Filtering, profiles, CI, tracker, undo, and more |
|
|
70
|
+
| [โ๏ธ All Options](docs/options.md) | Complete reference for all CLI flags |
|
|
71
|
+
| [โ๏ธ Conflict Resolution](docs/conflict-resolution.md) | Per-file and bulk resolution, CI strategies |
|
|
72
|
+
| [๐ง Semantic Versioning](docs/semantic-versioning.md) | Conventional commits, version sources, ignore patterns |
|
|
73
|
+
| [๐ฅ๏ธ TUI Dashboard](docs/tui-dashboard.md) | Keyboard shortcuts, diff preview, search, fallback |
|
|
74
|
+
| [๐พ Profiles](docs/profiles.md) | Save/load/list profiles, config file, CI usage |
|
|
75
|
+
| [๐ Tracker Integration](docs/tracker-integration.md) | ClickUp, Jira, Linear presets, custom patterns |
|
|
76
|
+
| [๐ค CI Mode](docs/ci-mode.md) | Exit codes, JSON output, GitHub Actions example |
|
|
77
|
+
| [โฉ๏ธ Undo / Rollback](docs/undo-rollback.md) | Checkpoint system, safety checks, limitations |
|
|
397
78
|
|
|
398
79
|
---
|
|
399
80
|
|
|
@@ -402,59 +83,6 @@ It automates a tedious, error-prone manual process into a single command that be
|
|
|
402
83
|
- Node.js โฅ 20
|
|
403
84
|
- Git โฅ 2.0
|
|
404
85
|
- **GitHub CLI (`gh`)** โ *Optional, only required if using `--push-release`*
|
|
405
|
-
- Install from: https://cli.github.com/
|
|
406
|
-
- The tool will check if `gh` is installed and offer to continue without it
|
|
407
|
-
- A clean working directory (no uncommitted changes)
|
|
408
|
-
|
|
409
|
-
---
|
|
410
|
-
|
|
411
|
-
## ๐ฏ Best Practices
|
|
412
|
-
|
|
413
|
-
### 1. Use `--ignore-commits` to filter noise
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
cherrypick-interactive --ignore-commits "^ci:|^chore\(deps\):|Merge branch"
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
Exclude CI updates, dependency bumps, and merge commits from selection.
|
|
420
|
-
|
|
421
|
-
### 2. Use `--ignore-semver` for version accuracy
|
|
422
|
-
|
|
423
|
-
```bash
|
|
424
|
-
cherrypick-interactive --ignore-semver "bump|dependencies|merge"
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
Prevent certain commits from affecting semantic version calculation.
|
|
428
|
-
|
|
429
|
-
### 3. Always use `--draft-pr` for review
|
|
430
|
-
|
|
431
|
-
```bash
|
|
432
|
-
cherrypick-interactive --draft-pr
|
|
433
|
-
```
|
|
434
|
-
|
|
435
|
-
Creates draft PRs so your team can review before merging.
|
|
436
|
-
|
|
437
|
-
### 4. Test with `--dry-run` first
|
|
438
|
-
|
|
439
|
-
```bash
|
|
440
|
-
cherrypick-interactive --dry-run
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
See what would happen without making any changes.
|
|
444
|
-
|
|
445
|
-
### 5. Save your workflow as a profile
|
|
446
|
-
|
|
447
|
-
```bash
|
|
448
|
-
cherrypick-interactive --save-profile release --dev origin/dev --main origin/main --since "1 month ago" --draft-pr
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
Then just run `cherrypick-interactive --profile release` every time.
|
|
452
|
-
|
|
453
|
-
---
|
|
454
|
-
|
|
455
|
-
## ๐งพ License
|
|
456
|
-
|
|
457
|
-
**MIT** โ free to use, modify, and distribute.
|
|
458
86
|
|
|
459
87
|
---
|
|
460
88
|
|
|
@@ -462,56 +90,15 @@ Then just run `cherrypick-interactive --profile release` every time.
|
|
|
462
90
|
|
|
463
91
|
1. Clone the repo
|
|
464
92
|
2. Install dependencies: `yarn install`
|
|
465
|
-
3. Run locally:
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
```
|
|
469
|
-
4. Run tests:
|
|
470
|
-
```bash
|
|
471
|
-
yarn test
|
|
472
|
-
```
|
|
473
|
-
5. Test edge cases before submitting PRs:
|
|
474
|
-
- Squashed commits with conflicts
|
|
475
|
-
- Empty cherry-picks
|
|
476
|
-
- Multiple conflict resolutions
|
|
477
|
-
6. Please follow Conventional Commits for your changes.
|
|
93
|
+
3. Run locally: `node cli.js --dry-run`
|
|
94
|
+
4. Run tests: `yarn test`
|
|
95
|
+
5. Follow Conventional Commits for your changes.
|
|
478
96
|
|
|
479
97
|
---
|
|
480
98
|
|
|
481
|
-
##
|
|
482
|
-
|
|
483
|
-
### "GitHub CLI (gh) is not installed"
|
|
484
|
-
The tool automatically checks for `gh` CLI when using `--push-release`. If not found, you'll be prompted to:
|
|
485
|
-
- Install it from https://cli.github.com/ and try again
|
|
486
|
-
- Or continue without creating a PR (the release branch will still be pushed)
|
|
487
|
-
|
|
488
|
-
You can also run without `--push-release` to skip PR creation entirely:
|
|
489
|
-
```bash
|
|
490
|
-
cherrypick-interactive --create-release --no-push-release
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
### "Cherry-pick has conflicts"
|
|
494
|
-
Use the interactive wizard to resolve conflicts file-by-file or in bulk. In CI, use `--conflict-strategy`.
|
|
495
|
-
|
|
496
|
-
### "Commit message changed after conflict resolution"
|
|
497
|
-
This issue has been fixed! The tool now preserves the original commit message using `git commit -C <hash>`.
|
|
498
|
-
|
|
499
|
-
### "Version not detected correctly"
|
|
500
|
-
Use `--ignore-semver` to exclude commits that shouldn't affect versioning:
|
|
501
|
-
```bash
|
|
502
|
-
cherrypick-interactive --ignore-semver "bump|chore\(deps\)"
|
|
503
|
-
```
|
|
504
|
-
|
|
505
|
-
### "Too many commits to review"
|
|
506
|
-
Use `--ignore-commits` to filter out noise, or adjust `--since` to a shorter time window:
|
|
507
|
-
```bash
|
|
508
|
-
cherrypick-interactive --since "3 days ago" --ignore-commits "^ci:|^docs:"
|
|
509
|
-
```
|
|
99
|
+
## ๐งพ License
|
|
510
100
|
|
|
511
|
-
|
|
512
|
-
```bash
|
|
513
|
-
cherrypick-interactive --undo
|
|
514
|
-
```
|
|
101
|
+
**MIT** โ free to use, modify, and distribute.
|
|
515
102
|
|
|
516
103
|
---
|
|
517
104
|
|
package/package.json
CHANGED