CodeForPhilly / CodeForPhilly/codeforphilly-ng

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

オープン
#150 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
TypeScript
スター
1
フォーク
1
平均マージ
5日 3時間
マージ済み PR(30日)
9

説明

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.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

Start with the gitsheets 2.x migration guide and upstream issue #184, then inspect 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, and people.ts. Done means the API runs on 2.x, the stale-cache workarounds are removed where upstream support permits, and the noted casts are checked against the new API.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
git, rust, typescript
領域
api, backend
issue の種類
リファクタリング
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。