Repository navigation
v0.6.0
The pool tends itself.
Auto-refresh. Any take, fill, or status that finds the last refresh older than refresh_every (24 hours by default) spawns a detached background refresh --fetch and returns immediately — the git gc --auto pattern. No daemon, no cron, no waiting: using the pool keeps the pool warm, fetching origin and re-warming slots whose lockfiles changed, while your own checkout is never touched.
Details that make it safe:
- The overdue check-and-claim runs under the pool lock, so overlapping commands cannot double-spawn; a failed spawn hands the duty back instead of suppressing retries.
- A no-op pass over an empty pool does not mark it fresh; a fetch always counts, so an all-taken pool does not spawn busywork.
- Opt out with
refresh_every = "off"in.warmtree.toml, orWARMTREE_AUTO_REFRESH=offin the environment (handy in CI). - A nightly
warmtree refresh --fetchin cron still composes, for slots that should be fresh before the day's first command.
With this, the full loop is automatic: origin moves → the next warmtree command notices → slots land on origin's tip with dependencies current → take branches from there. Local branches are never pulled or moved; that remains yours.