Skip to main content

Module git

Module git 

Source
Expand description

§8 anvil git plumbing — the change worktree and the SEAL.

Anvil is the narrow seam the op lifecycle (crate::lifecycle) drives: make the change worktree off the anvil, SEAL (commit + integrate the worktree onto the anvil, atomically), un-seal a post-abort (§14 tier-1), and tear the worktree down. Git is the real implementation, shelling out to git against one checkout; the lifecycle is unit-tested against a fake while Git is tested here on throwaway repos.

Topology: the checkout has the anvil branch at commit T. A change worktree is a DETACHED worktree created at T; balls + plugins edit it, then SEAL commits it to C (parent T) and fast-forwards the anvil onto C in one act. A post-seal abort git reset --hards the anvil back to T — local and reversible, because core never pushes (§14).

Structs§

Git
The real Anvil: shells out to git against one checkout.

Traits§

Anvil
The git acts the §8 seal needs, behind a seam so the lifecycle can be tested without a real repo. Each method is one atomic git act on the anvil.