mergeFrom
Three-way merge of namespaces (#6ftriw5m), telling what a side only re-hashed (re-derived after a
dependency changed) from what it edited.
import { diffNamespaces } from "#codebase/tcmts/cli/diff"; import type { NameState } from "#codebase/tcmts/cli/diff"; import { mergeStates } from "#codebase/tcmts/cli/merge"; import type { MergeResult } from "#codebase/tcmts/cli/merge"; export function mergeFrom( base: NameState, ours: NameState, theirs: NameState, irOf: (hash: string) => string, ): MergeResult { const propagated = { ours: new Set(diffNamespaces(base, ours, irOf).propagated.map((c) => c.path)), theirs: new Set(diffNamespaces(base, theirs, irOf).propagated.map((c) => c.path)), }; return mergeStates(base, ours, theirs, propagated); }
uses
- tcmts.cli.diff.NameState
- tcmts.cli.diff.diffNamespaces
- tcmts.cli.merge.MergeResult
- tcmts.cli.merge.mergeStates