Explain product rationale in docs · Entire
Explain product rationale in docs
Sessions
ace64d1131b3View transcript
Changes
- MREADME.md+35
- docs
- Marchitecture.md+23
That keeps the target side incremental without fetching target objects into the local process first.
Why This Exists
Git already has pieces of this problem, but not this exact tool shape.
What usually exists today:
- a full local
git clone --mirrorfollowed bygit push --mirror - host-specific import or migration features
- CI jobs or shell scripts that glue fetch and push steps together
- one-off migration tooling tied to a specific platform
What those approaches usually do not give you:
- direct remote-to-remote relay behavior
- a small standalone CLI with explicit sync semantics
- front-loaded validation and planning
- machine-readable output for automation
- one tool that covers empty-target bootstrap, normal sync, and large-repo bootstrap fallback
That is the gap git-sync is trying to fill.
The main value is operational:
- avoid requiring a full local mirror checkout just to move refs between remotes
- make initial seeding of large repositories cheaper and more predictable
- keep incremental sync behavior explicit and safe
- give operators and automation a stable way to inspect, plan, execute, and benchmark the same workflows
This is especially useful when:
- the target is a new hosted Git service or internal Git endpoint
- bootstrap size matters more than local developer ergonomics
- you want a repeatable machine-oriented sync primitive rather than an ad hoc migration script
- you need clearer control over mapping, pruning, force rules, and relay behavior than generic shell glue usually provides
The command surface is:
git-sync probe: inspect a source remote, and optionally a target remote
git-sync is a remote-to-remote Git mirroring CLI over smart HTTP.
Product Rationale
The point of git-sync is not that Git mirroring is impossible without it. The point is that the usual alternatives are awkward at the exact layer operators often need:
- a full local mirror clone and mirror push is simple, but it turn remote-to-remote movement into a local storage and local bandwidth problem
- host-specific migration tools are useful, but they are not portable and they usually do not expose one consistent sync primitive across providers
- scripts around
git fetchandgit pushcan work, but they usually lack planning, explicit policy checks, stable machine-readable output, and a clean distinction between bootstrap and incremental sync
git-sync is meant to be that missing middle layer:
- provider-agnostic
- remote-to-remote
- automation-friendly
- explicit about safety and relay eligibility
- capable of handling both first-time seeding and repeat syncs
That is why the design leans so heavily on:
- relay-first strategies
- front-loaded validation
- typed results and JSON output
- explicit execution modes instead of a single opaque "mirror" operation