upgrade gitsheets 1.4.1 → 2.x (Rust core), pairing with upstream per-sheet refresh (gitsheets#184)

Aperta
#150 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
git, rust, typescript
Ambito
api, backend

Direzione di ricerca

Inizia con la guida alla migrazione di gitsheets 2.x e con l’issue upstream #184, quindi esamina apps/api/src/store/store.ts, apps/api/src/routes/attachments.ts, apps/api/src/lib/data-repo-lock.ts, apps/api/src/store/public.ts, importer.ts e people.ts. Il lavoro è completato quando l’API viene eseguita su 2.x, le soluzioni alternative per la cache obsoleta vengono rimosse dove il supporto upstream lo consente e i casts annotati vengono verificati rispetto alla nuova API.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

The API is pinned to `gitsheets ^1.4.1` — a full major version behind the 2.x line, which replaced the JS engine with a Rust core (canonical TOML, schema validation, and tree ops all native; measured ~4–5× faster on large-sheet commit workloads, with byte-identical output). A migration guide ships with 2.x.

Beyond the version bump, the upgrade is the right moment to retire three workarounds that all trace to the stale-`Sheet`-cache gap tracked upstream as JarvusInnovations/gitsheets#184:

  • `apps/api/src/store/store.ts` — `swapPublic()` and the funnel-all-reads-through-memory rule exist because direct `sheet.query*()` after a transact reads the pre-commit tree (documented in `specs/behaviors/storage.md` under "Direct gitsheets reads after a transact").
  • `apps/api/src/routes/attachments.ts` — deliberately bypasses `Sheet.getAttachment()` and streams via raw `git cat-file` to dodge the same cache.
  • `apps/api/src/lib/data-repo-lock.ts` — a parallel mutex because gitsheets' internal one isn't exposed for non-transact git ops.

Ideally the upgrade lands alongside (or drives) the upstream #184 implementation so those can be deleted rather than ported.

Also worth checking during the upgrade: the `asValidator()` cast in `apps/api/src/store/public.ts` (Zod v4 vs `StandardSchemaResult` structural mismatch) and the `BlobObject.write(hologit, buf as unknown as string)` casts (`importer.ts`, `people.ts`) — the 2.x API surface (`BlobHandle`, typed error classes) may eliminate both.

Lingua principale
TypeScript
Stelle
1
Fork
1
Merge medio
1g 20h
PR unite (30g)
25

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CodeForPhilly/codeforphilly-ng

Tutte le issue di CodeForPhilly/codeforphilly-ng

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.