Skip to content

v0.6.0 — git-likeness Tier 2 (remotes, reflog, cherry-pick, gc)

Choose a tag to compare

@BangRocket BangRocket released this 03 Jun 19:18
· 200 commits to main since this release

Takes mcadiff from a local VCS toward a distributed one — sync world history between repositories (e.g. push backups to another drive/NAS). No network yet; remotes are repository directories, and because objects are content-addressed, transfer copies only what the other side lacks.

New

  • Remotes (filesystem): clone, remote add, fetch, push. push is fast-forward-checked (--force overrides); fetch populates refs/remotes/<remote>/* (resolvable as origin/main).
  • reflog — HEAD movement history (logged on commit).
  • cherry-pick <commit> — apply one commit onto HEAD via the 3-way engine.
  • gc — prune objects unreachable from any ref.

Fixes (found via Tier-2 testing)

  • Merge dropped a one-sided region: a region present on only one side (including an empty region like a fresh poi/) was lost by the manifest 3-way merge. Region existence is now resolved per-region (added / deleted / delete-modify conflict).
  • Nondeterministic classification hardened: a rare transient parse failure during the parallel commit could silently downgrade a valid NBT .dat to an opaque blob, making manifests nondeterministic. Parsing now retries before falling back.

72 tests (was 67): clone+push fast-forward, fetch remote-tracking refs, gc prunes unreachable objects, reflog records commits, merge carries a one-sided/empty region.

Deferred (by design)

A staging index and an in-place conflict-resolution workflow don't map cleanly to whole-world snapshots; network transport (ssh/http) and delta/packfiles remain future work.