Every day
talea sync # clone the new, fast-forward the resttalea status # branch, clean/dirty, ahead/behind, in one tablecd $(talea where eklavya)talea sync
Clones what is missing, fast-forwards what is there. Safe to run unattended, and safe to run twice.
What it will not do, and this is the whole of it:
- It will not merge a divergence. Fast-forwards only. Anything else is reported for you to deal with.
- It will not move you off your branch. It fast-forwards the branch you are on, or leaves it alone and says why. A branch with no upstream is fetched and left.
- It will not touch a dirty repo. Uncommitted changes mean it fetches and stops, with a line saying so.
- It will not push.
Every command runs from anywhere. Inside a workspace, that workspace. Outside one, the workspace talea init made — and if this machine has several, it asks which. With no terminal to ask on (a script, a pipe) it lists them and exits non-zero rather than picking one for you.
talea sync -g nonstopio # one grouptalea sync eklavya # one repo — same as -r eklavyatalea sync --no-clone # fast-forward only, clone nothingtalea sync --no-adopt # skip the existing-checkout scantalea clone is the first half on its own — clone what is missing and never fetch or merge. It is what you want on a slow connection.
talea status
| Column | What it shows |
|---|---|
REPO | repository name |
BRANCH | the branch checked out right now |
DEFAULT | the repo’s default branch, blank when you are already on it |
STATE | clean or dirty, and commits ahead or behind origin |
talea status --drift # only repos on some other branchtalea status --missing # only repos not cloned yettalea status --all # the whole catalogue, not just this machinetalea where
talea where eklavya # the absolute path, one line, nothing elsecd $(talea where eklavya) # what it is actually fortalea where # the workspace rootThe path goes to stdout on its own, so it composes with cd, code, open and anything else that takes a directory. Every diagnostic goes to stderr, and an unknown name exits non-zero — so cd $(talea where typo) fails rather than landing you in your home directory.
If two owners have a repo of the same name it says so and exits non-zero rather than picking one. Pass owner/name.
Changing what this machine keeps
talea add some-repo # keep one more here, and clone it nowtalea rm some-repo # take it off the listtalea select # reopen the whole checklisttalea pick some-repo # keep that one — an unknown name opens the checklisttalea rm removes the repo from this machine’s list and leaves the checkout exactly where it is, printing the path. Deleting it is your call — rm -rf already exists for when you mean it.
talea select opens the checklist with your current selection ticked. Everything in the catalogue is listed, including archived repos and forks: this machine is allowed to keep something the default set does not have. --no-clone saves the list without filling it.
talea pick <name> is talea add when the name matches exactly one repo — case does not matter, and owner/name works. When it matches none, or two owners share it, the checklist opens instead, so a typo lands you in the list rather than on an error.
Running one command everywhere
talea exec -- git log --oneline -1talea exec -g nonstopio -- npm installtalea exec --all -- git branch --show-currentEverything after -- is the command, run once per repo with that repo as the working directory. Repos are processed one at a time so the output stays readable and attributable.
Exit codes
Every bulk command exits non-zero if any repo failed. Per-repo errors are printed and the run keeps going, so without checking the exit code a partial failure reads as success to a script. A skip is not a failure — a sync over a workspace you are working in still exits 0.
Next: Adopting what you have.