Skip to main content

Crate strop_git

Crate strop_git 

Source
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 in permalink/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::ssh and is owned IO-worker work, never this module.
ssh
OpenSSH effective configuration (0033 finding 1): an SSH alias’s real hostname is what ssh -G says — Include, wildcard Host and HostName rules included — not what a partial home-grown parser guesses from ~/.ssh/config.

Structs§

DiffLine
One line of a hunk: content without prefix, plus the 1-based line number on each side that has one (absent side: None, never 0).
FileDiff
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
SourceLocation
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
HunkKind
LineOrigin
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.