@ferrflow/linux-x64 7.9.1 → 7.10.0
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 +38 -0
- package/bin/ferrflow +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,6 +109,11 @@ ferrflow release --exclude web --exclude docs
|
|
|
109
109
|
# Pre-release
|
|
110
110
|
ferrflow release --channel beta
|
|
111
111
|
|
|
112
|
+
# Undo a release that failed partway
|
|
113
|
+
ferrflow rollback # prints the plan, changes nothing
|
|
114
|
+
ferrflow rollback --yes # applies it
|
|
115
|
+
ferrflow rollback --yes api web # only these packages
|
|
116
|
+
|
|
112
117
|
# Scaffold a config file
|
|
113
118
|
ferrflow init
|
|
114
119
|
|
|
@@ -499,6 +504,39 @@ cannot cascade into a further bump. Squash merges and merge commits both work.
|
|
|
499
504
|
A package declared without `versionedFiles` has no version to read, so it is not finalised this way.
|
|
500
505
|
Use `commit` mode for tag-only packages.
|
|
501
506
|
|
|
507
|
+
## Rollback
|
|
508
|
+
|
|
509
|
+
A release that fails partway leaves tags pushed, forge releases created and a release commit on the
|
|
510
|
+
branch. `ferrflow rollback` undoes exactly what that run did, reading the checkpoint it left behind
|
|
511
|
+
rather than guessing from the log.
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
ferrflow rollback
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
It prints the plan and changes nothing. Add `--yes` to apply it. Name packages to narrow it to a
|
|
518
|
+
subset; with none, it rolls back everything the run touched.
|
|
519
|
+
|
|
520
|
+
Three things it deliberately refuses to do.
|
|
521
|
+
|
|
522
|
+
It never deletes a tag that has moved. Each tag is recorded with the commit it pointed at, and the
|
|
523
|
+
remote is queried at rollback time to check it still points there. One that no longer matches, or
|
|
524
|
+
that this checkout cannot resolve on the remote at all, is reported and skipped: a tag someone else
|
|
525
|
+
recreated in the meantime is not this run's to remove.
|
|
526
|
+
|
|
527
|
+
It stops on a package already published to a registry that cannot be unpublished. crates.io and PyPI
|
|
528
|
+
keep every version forever, and npm refuses to republish an unpublished one, so deleting the tag
|
|
529
|
+
would leave a version anyone can install with nothing pointing at it. The right answer there is a new
|
|
530
|
+
patch version, and rollback says so instead of doing half the job. Docker tags, Helm charts, release
|
|
531
|
+
assets and webhooks are replaceable, so they do not block anything.
|
|
532
|
+
|
|
533
|
+
It reverts the release commit only on a whole-run rollback with nothing blocked. That commit carries
|
|
534
|
+
every package's version bump, so reverting it while one package stays released would silently undo
|
|
535
|
+
that package's version too.
|
|
536
|
+
|
|
537
|
+
The revert is left uncommitted to the remote on purpose. Rollback has just deleted remote refs, and
|
|
538
|
+
forcing a branch update on top of that is a decision worth taking with the branch in front of you.
|
|
539
|
+
|
|
502
540
|
## Floating Tags
|
|
503
541
|
|
|
504
542
|
Move abbreviated tags (e.g. `v1`, `v1.2`) to always point at the latest matching release:
|
package/bin/ferrflow
CHANGED
|
Binary file
|
package/package.json
CHANGED