sync

Fetches, moves the canonical forward when it can do so without a merge, and then runs whatever the project says brings it up to date.

gitto sync

Fetches, moves the canonical forward when it can do so without a merge, and then runs whatever the project says brings it up to date.

$ gitto sync
canonical storefront moved 3 commits forward
  running .gitto-refresh

What the project declares

gitto cannot know what your project has to rebuild after a fetch. The project does, so it writes it down in .gitto-refresh at the root of the canonical:

bun install --frozen-lockfile
make build

sync runs that file with sh in the canonical and says so before it starts. Without the file, sync fetches and fast-forwards and stops there.

Why it matters

Every clone starts as a copy of the canonical, so a canonical three weeks behind hands three-week-old dependencies to every lane you open. Nothing breaks loudly when that happens; the install you thought you had skipped comes back. list prints the distance on its first line so the drift stays visible.

On this page