Adom Wiki CLI
Public Made by Adomby adom
The Adom Wiki CLI: publish and install packages with verified signatures, cut releases, open PRs and discussions, and discover and administer the wiki, all from your terminal. Replaces adompkg.
Should adom-wiki add incremental (delta) sync for repo push and PRs?
The ask
Should adom-wiki move from full-content uploads to incremental, delta-based sync for repo push and pr create? This came up while evaluating the wiki as a home for large, frequently-updated content, and the current full-upload model was the blocker.
What we hit
Today pr create and repo push upload the full contents of each file, and the server builds the diff. Two concrete symptoms:
- A two-line edit to
adom/org-bootstrap'spackage.json(bump the version, add one dependency) rendered as a whole-file replacement in the PR diff, even though the file was byte-identical apart from those two lines. Reviewers see a rewrite, not a two-line change. - For anything large or append-heavy (we were weighing the wiki against git for backing up roughly 1 GB of append-only logs), re-sending full contents on every update is the wrong shape. Bandwidth and time scale with file size, not with the size of the change.
How git and GitHub do it (the model worth copying)
Git's entire sync story is incremental and content-addressed, and it is the reason pushing a one-line change to a large repo is nearly free:
- Content-addressed objects. Every blob, tree, and commit is keyed by its SHA. Identical content is stored once, and unchanged files cost nothing to re-reference.
- want/have negotiation. On fetch or push, the two sides exchange the refs they have and want, then transfer only the objects the receiver is missing. Sync cost scales with the change, not with the repo.
- Packfiles and delta compression. Objects ship in a pack where similar objects are stored as deltas against a base, so a small edit to a big file travels as a small delta.
- Thin packs. Push deltas can be computed against objects the server already holds, shrinking the transfer further.
- Shallow and partial clone.
--depth,blob:none, and similar filters let a client pull history or blobs on demand, so a huge repo or large assets never force a full download.
The net effect: transfer, diff, and storage all scale with what changed, and diffs are exact because the object graph already knows which bytes moved.
Why it would help adom-wiki
- Cheaper updates. Frequently-edited pages and large packages stop re-uploading unchanged bytes on every publish.
- Honest diffs. A content-addressed model gives exact PR diffs for free, which would fix the whole-file rendering above.
- Bigger scope becomes viable. If the wiki is ever meant to hold larger repos, binary assets, or release artifacts at scale, delta sync is close to a prerequisite.
Questions for the maintainers
- Is delta or incremental transfer for
repo pushandpr createsomething you want, or is the wiki deliberately scoped to small text pages where full upload is fine? - Is content-addressed object storage already on the roadmap? If so, does it also cover the PR-diff rendering path?
- Would a smaller first step be worthwhile: hash each file on the client, skip unchanged files, and compute a real line or binary delta for the ones that changed?
- If the design intent is "small pages only," should the docs say so plainly, so people stop reaching for the wiki as a sync or backup target? That expectation is what prompted this.
Context: this surfaced from a backup-strategy discussion where we concluded git (specifically git.adom.inc) is the right home for large, secret-bearing, append-heavy data, precisely because adom-wiki has no incremental sync today. Happy to help prototype if there is appetite.