Skip to content

tether 0.1.0b6

Pre-release
Pre-release

Choose a tag to compare

@elyall elyall released this 01 Oct 17:17
· 13 commits to main since this release

Added

  • tether init --dataset-id ID uses that id instead of a fresh one; anything
    but 8 lowercase hex characters is refused.
  • tether restore KEY... --at REF starts the bookmark's branch as a copy of
    a native branch, tag or state id. REF itself is never moved.
  • tether new --adopt takes the bookmark's existing store branches as they
    are, uncommitted writes included, instead of resetting them. A saved plan
    binds to each branch still existing and being the newest generation, not
    to its head.
  • tether recover lists tether's refs in each store by dataset id and prints
    the steps that take back a dataset whose repository was lost.
  • tether repair KEY... (Repo.repair(keys)) rebuilds only those objects'
    pins and branches, selected from every key history has had with
    --all-history. A saved plan records its selection under its digest.

Changed

  • A saved plan (--plan FILE) records the tether version that made it, and
    --from-plan applies it only under that version. Plans saved by any other
    version, including every earlier release, are refused: re-run the plan.
  • tether recover prints each step as a command followed by a # note, and
    --json gives each as {"command": str or null, "note": str} instead of
    one string mixing the two.

Fixed

  • tether new --shared can join a bookmark whose branch is being written,
    such as a preview environment's database. The plan binds to the branch
    still building on the bookmark's pin, not to its head, which moved on.
  • tether new BOOKMARK (or new REV) to a revision that registers an
    object the current checkout lacks no longer fails with "this new plan
    predates the ref_absent/ref_head ... precondition(s)". Its checks now look
    in the stores the target revision names, which differ when an object was
    moved.
  • Applying a saved new plan refuses to adopt a branch that has a newer
    generation (.2) or is gone. 0.1.0b5's plans bound an adopt to its head
    only, which a newer generation leaves as it was.
  • restore --at and add --at refuse an empty or blank REF. An unset
    variable (--at "$UNSET") used to reset the branch from the upstream head.
    --at 0 (and at=0 from Python) is a version like any other, such as a
    Delta table's first.
  • A file or neon object registered with at = 0 is refused like any
    other at, instead of reading the current head.
  • tether ops shows a restore --at 0 as restored KEY from 0, not from None.
  • tether recover lists per-workspace branches from before bookmarks, which
    may hold uncommitted writes, with a restore --at step for each. It
    suggests no dataset id when run on some keys only, and puts tether repair
    first when a manifest's pin is missing from its store. It also matches
    escaped bookmark names (feature/x) to the VCS's bookmarks.
  • tether recover KEY... no longer suggests a tether commit, which pins
    every object under the current id and could lock in the wrong one; its
    last step is tether recover without keys.
  • tether recover's commands quote every key, ref, bookmark and message for
    the shell, and its advice for a legacy branch that objects share (two Neon
    databases on one branch) names them in one tether restore, which
    restore requires.
  • tether recover KEY... suggests tether repair -- KEY... for only the
    selected objects whose pins are missing, instead of a repair of every
    object that reached the stores the run left out.
  • tether recover's legacy-branch steps run from the trunk: each moves to a
    bookmark recover-<workspace> off the trunk first, since restore --at
    refuses the trunk, and commits what it restored.
  • tether recover's commands end their options with --, so a key such as
    --help or -x, or a git branch name starting with -, is not read as
    an option.
  • tether recover joins an existing recover-<workspace> bookmark only when
    it is an earlier recovery's (nothing but its commits, and the objects
    registered); an unrelated bookmark of that name is left alone and the steps
    use recover-<workspace>-2.
  • git: a branch whose name starts with - (git update-ref makes one) is
    read as a name by every git call tether makes, so tether new -- -feat
    switches to it instead of failing to resolve it.