Skip to content

What it will not do

These are not intentions. Each one is a rule the code is built around, and most of them exist because of something that happened on a real machine.

It will not push

There is no git push anywhere in talea. It reads and checks out.

It will not destroy uncommitted work

No reset --hard, no clean -fd, no checkout --force. A dirty repo is fetched and skipped, with a line saying so.

This is also why a repo in the wrong place is moved, not re-cloned. A rename keeps branches, stashes, the reflog and uncommitted work; a re-clone silently discards all of it. talea never copies-then-deletes either — a cross-device move is refused and reported.

It will not delete anything

A second copy of a repo moves to .talea-duplicates/<GROUP>/<repo> with everything in it. talea rm takes a repo off this machine’s list and leaves the checkout exactly where it is, printing the path.

The module that moves checkouts contains no rmSync. That is a property of the file, not a promise in a document.

It will not merge a divergence

Fast-forwards only. A repo that has diverged is reported for you to deal with.

It will not switch branches

talea sync fast-forwards the branch you are on, or leaves it alone and says why. A tool that moves you off a feature branch mid-task is no better than one that clobbers your changes.

This is also why there is no environment or branch-mapping machinery in talea. That belongs to a workspace of deploy branches, not to a person’s own repositories.

It will not guess a branch

defaultBranch is recorded per repo by discover, because GitHub is the only thing that knows. A repo with none recorded is cloned on whatever the server hands over.

It will not move a name-only match unattended

The remote URL is the identity. A folder that merely shares a name is listed and left alone until you say otherwise with --loose or -r.

It will not touch an ignored checkout

ignore: true on a catalogue entry means another tool owns that checkout. No command touches it — not sync, not adopt, not an explicit selection.

It will not quietly do nothing

An unknown group or repo name exits non-zero. talea where is the sharp case: it exits non-zero and writes every diagnostic to stderr, because cd $(talea where typo) must fail rather than land you in your home directory.

It will not update itself silently

talea tells you an update exists, once a day at most. You choose when. A tool that moves checkouts across every repo you have should not change behaviour underneath you mid-session.