Skip to content

Arbor v0.3.0 (Alpha) — Homebrew, Undo for deletions, what a worktree holds, and filters

Choose a tag to compare

@not-stbenjam not-stbenjam released this 06 Oct 12:30

This release adds the four things most missed in 0.2.0: installing with Homebrew, seeing what a worktree would lose before deleting it, getting a deleted worktree back, and narrowing the list by state and age. Each was reviewed again before it went out, and what the reviews found is fixed here.

Install with Homebrew

brew install stbenjam/arbor/arbor          # command line: macOS and Linux
brew install --cask stbenjam/arbor/arbor   # desktop app: macOS 13 or newer

The tap is stbenjam/homebrew-arbor. It follows new releases on its own, and both recipes are installed and tested in CI on every change. The app is still not signed with an Apple Developer ID, so macOS asks before opening it the first time.

Putting a deleted worktree back

Deleting a worktree has always kept its branch, so every commit is still there. Arbor now puts the worktree back for you.

  • Undo on the notice that follows a deletion, for 12 seconds, puts each worktree back where it was, on its branch.
  • Recently deleted, in the sidebar and the File menu, lists what the app deleted in the last 30 days, on this computer and on SSH hosts, with a Restore for each. It is kept across restarts.
  • arbor restore PATH --repo REPOSITORY --branch BRANCH from the terminal, and remove and clean print that command for what they just deleted.
  • Files that were never committed do not come back, and Arbor says so when it restores a worktree that had some.
  • Nothing is overwritten: the path must not exist. Hooks are not run, nothing is fetched, and a repository that names its own filter programs is not restored; the Git command to run yourself is given instead.

What a worktree holds

  • Show what it holds… in a row's menu, and Show files in a deletion review, list what deleting that worktree would discard: uncommitted changes, ignored files, repositories inside it, and what Git keeps for that worktree alone, largest first under a heading for each. It works over SSH.
  • arbor files PATH gives the same list in the terminal, and --json for scripts.
  • An ignored folder is one line with its size and file count. A size is marked "at least" when adding it up took too long or a folder could not be read, and the list says when it could not look through everything.

Filters

  • State and Last active, beside Sort, narrow the list to one state (Merged, Changed files, Ignored files, Locked, Not merged and the rest, each with its count) and to worktrees not used for a week, a month, three months or a year.
  • They work together with the search and the Recommended view, and keep what is ticked.

Also

  • The command printed for putting a worktree back, and the one for cleaning a folder, are now exact for paths with a line break or other unprintable character in them.

Tests

  • 91 scenarios drive the real application, and CI now also installs Arbor with Homebrew on macOS and Linux.