Uh oh!
There was an error while loading. Please reload this page.
feat(buckets): add fork rebase and merge commands - #119
Merged
Conversation
Add `buckets rebase <fork>` and `buckets merge <fork>` on top of the new rebaseFork/mergeFork APIs in @tigrisdata/storage 3.17.0: - rebase advances a fork onto the latest state of its source bucket. - merge writes a fork's changes back into its source; the source is auto-resolved from the fork's parent (getBucketInfo) unless --into is passed, with --from-snapshot to scope the merge to a fork snapshot. Both confirm before mutating (skip with -y) and support --json. Also make the existing stdin support of `objects put` discoverable: reword the description and add piped-input examples so `--help` shows that object data can be piped in. Adds integration coverage for rebase, merge (auto-resolved parent), and piped-stdin uploads. Assisted-by: Claude Opus 4.8 via Claude Code Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MantasMiksys
approved these changes
Jul 2, 2026
Uh oh!
There was an error while loading. Please reload this page.
designcode added a commit
that referenced
this pull request
Jul 2, 2026
Seed the first Changesets release: a minor for the `buckets rebase` / `buckets merge` commands (#119) and a patch for the `buckets create --enable-snapshots` fix (#120) — both merged to main but unreleased since v3.3.0. Together they cut 3.4.0 once this lands. Assisted-by: Claude Opus 4.8 via Claude Code Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
designcode added a commit
that referenced
this pull request
Jul 2, 2026
) * chore: migrate release tooling from semantic-release to changesets Replace semantic-release with Changesets for versioning and publishing: - Add @changesets/cli + @changesets/changelog-github and .changeset config (public access, github changelog, baseBranch main). Set the package version to the real base 3.3.0. - Rework release.yaml: stable releases run on push to main via the changesets action (Version Packages PR -> publish -> v<version> tag, GitHub release, binaries, Homebrew). Beta prereleases publish an npm snapshot to the `beta` dist-tag on manual workflow_dispatch only. - Drop the release-branch flow: delete sync-release-to-main.yaml. - npm publishing stays on OIDC / provenance (auth unchanged); keeping the release.yaml filename preserves the trusted-publisher config. Also drop commitlint (no longer needed now that commits don't drive versioning) and sweep unused dev dependencies: - Remove @commitlint/cli, @commitlint/config-conventional, the commitlint config block, and the .husky/commit-msg hook. - Remove conventional-changelog-conventionalcommits, orphaned by the semantic-release removal. Assisted-by: Claude Opus 4.8 via Claude Code Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: add changesets for pending fork commands and enable-snapshots fix Seed the first Changesets release: a minor for the `buckets rebase` / `buckets merge` commands (#119) and a patch for the `buckets create --enable-snapshots` fix (#120) — both merged to main but unreleased since v3.3.0. Together they cut 3.4.0 once this lands. Assisted-by: Claude Opus 4.8 via Claude Code Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: gate npm publish on integration tests in the release job The stable release job dropped `npm run test:integration`, so a Version Packages merge could publish to npm without integration passing (ci.yaml runs it only in parallel). Re-add it in the release job, gated to pushes with no pending changesets — i.e. exactly the publish push — so it gates the publish without running on every feature merge. Assisted-by: Claude Opus 4.8 via Claude Code Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds two fork operations to the
bucketscommand group, on top of the newrebaseFork/mergeForkAPIs in@tigrisdata/storage3.17.0 (dependency bumped^3.16.0→^3.17.0):tigris buckets rebase <fork>— advance a fork onto the latest state of its source bucket.tigris buckets merge <fork> [--into <source>] [--from-snapshot <snap>]— merge a fork's changes back into its source. The source is auto-resolved from the fork's parent (getBucketInfo→forkInfo.parents[0]) unless--intois passed.Both confirm before mutating (skip with
-y/--yes, guarded in non-TTY), print the resultingsnapshotVersion, and support--json.Also makes the already-supported stdin path of
objects putdiscoverable — the description and examples now show that object data can be piped in (echo 'hi' | tigris objects put t3://bucket/key). Docs/spec only, no behavior change.Testing
Integration tests added to
test/cli.test.ts, passing against the live backend:objects putfrom piped stdin (round-tripped viaobjects get)tsc, ESLint, and Prettier all clean; the default unit suite is unaffected.🤖 Generated with Claude Code
Note
Medium Risk
Merge and rebase mutate bucket state on the live backend; mistakes could affect source buckets, though confirmations and explicit --yes in scripts mitigate operator error.
Overview
Adds
tigris buckets rebaseandtigris buckets mergewired to@tigrisdata/storage3.17.0 (rebaseFork/mergeFork). Rebase updates a fork from its source; merge writes fork changes into the source, with optional--into,--from-snapshot, interactive confirm (skippable with--yes), and--format json. Merge defaults the target to the fork’s parent viagetBucketInfowhen--intois omitted.src/specs.yamldocuments both commands and updatesobjects putto describe stdin piping (examples only; no upload behavior change in this diff).Integration tests cover rebase, merge with auto-resolved parent, and
objects putfrom piped stdin via a newrunCliWithStdinhelper.Reviewed by Cursor Bugbot for commit 04efeef. Bugbot is set up for automated code reviews on this repo. Configure here.