entryChanges
uses tcmts.share.reviewItems, which uses tcmts.share.definitionLines, which uses tcmts.cli.files.fileContent, which uses Buffer
What a history entry changed, definition by definition (#eiskjzkr, in review order), and what only
re-hashed; undefined for the first entry. Names come as entryDiff's do.
import { diffNamespaces, namesIn } from "#codebase/tcmts/cli/diff"; import type { NamespaceDiff } from "#codebase/tcmts/cli/diff"; import { reviewItems, reviewOrder } from "#codebase/tcmts/share"; import type { ReviewItem, Share } from "#codebase/tcmts/share"; export function entryChanges( s: Pick<Share, "cb" | "cache">, hash: string, ): { items: ReviewItem[]; diff: NamespaceDiff } | undefined { const c = s.cb.store.causal(hash); if (!c?.parents.length) return undefined; const trees = s.cache.trees(s.cb); const after = trees.state(hash); const before = trees.state(c.parents[0]!); const diff = diffNamespaces(before, after, (h) => trees.ir(h)); const usesOf = (h: string) => (s.cb.store.getDef(h)?.deps ?? []) .filter((x) => x.ref.startsWith("#")) .map((x) => x.ref.slice(1)); return { items: reviewOrder(reviewItems(s.cb, diff, namesIn(before), namesIn(after)), usesOf), diff, }; }
uses
- tcmts.cli.diff.NamespaceDiff
- tcmts.cli.diff.diffNamespaces
- tcmts.cli.diff.namesIn
- tcmts.share.ReviewItem
- tcmts.share.Share
- tcmts.share.reviewItems
- tcmts.share.reviewOrder