Skip to main content

Module git

Module git 

Source
Expand description

The git speculator (D5): the second implementation of Speculator, and the one a production caller wants.

A state is a commit id and a merge is git merge --no-ff in a worktree this owns. That makes the queue’s window, its dependency-aware ejection and its refusal to land a change twice apply to a real repository instead of to one file’s text, which is the whole reason the seam exists.

This owns the worktree it is given. Every Speculator::step detaches it and forces it to a speculative state, so a repository anyone else is working in is the wrong argument. A clone made for the queue is the right one.

Nothing here is speculative in git’s sense of the word: the commits it writes are ordinary objects in that repository, unreferenced by any branch until a caller decides to move one. Refusing to move a branch is not this type’s job; it never touches a ref.

Structs§

GitSpeculator
A speculator over a real repository: states are commit ids.