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.