Expand description
strop-git: the working surface (0001 pillar 3.1). libgit2 for the hot paths — no process spawn per keystroke. HEAD vs the live buffer (not the disk file), so gutter signs track unsaved edits.
Modules§
- memory
- Git memory (M3, 0001 pillar 3.2/3.3): log graph, blame, changed-file
stats. Reads via shell
git(matches user config; not hot-path). Permalinks and remote normalization live inpermalink/ssh(0033 finding 1). - permalink
- Permalink remote normalization and URL construction (0001 pillar
3.3, 0033 finding 1). Everything here is pure — no filesystem, no
environment, no process. SSH aliases come back to the caller as
unresolved data; OpenSSH effective-configuration evaluation lives
in
crate::sshand is owned IO-worker work, never this module. - ssh
- OpenSSH effective configuration (0033 finding 1): an SSH alias’s
real hostname is what
ssh -Gsays —Include, wildcardHostandHostNamerules included — not what a partial home-grown parser guesses from~/.ssh/config.
Structs§
- Diff
Line - One line of a hunk: content without prefix, plus the 1-based line
number on each side that has one (absent side:
None, never0). - File
Diff - One file’s diff at a commit (vs its parent): the delta view’s data.
- GitContext
- The pure cached view of a repository (R6): no libgit2 handle, no locks, no IO to read — render and command decisions consult this, while every native read runs on a worker. Equality is meaningful: an unchanged context (same HEAD, branch, remotes) means cached diffs stay valid.
- Hunk
- One diff hunk between two versions of a file, in 1-based lines.
- Repo
- Source
Location - A revisioned source location (0014 wave 4): permalinks, jumps into history, and blame’s parent-hop all speak this — no more “permalink from a historical view links HEAD’s file”.
Enums§
- GitError
- Why a repository operation failed — typed, not a string and not an empty Vec standing in for “something went wrong” (R9).
- GitRevision
- Hunk
Kind - Line
Origin - Where a diff line comes from — addition/deletion carry which side’s
line number applies (0010 §1: typed origins, never
+-sniffing). - Sign
- One changed line, for gutter signs. Hunk headers include context lines, so signs track the +/- lines, not the header range.