Documentation
¶
Overview ¶
Package gitgraph — коннектор git-истории → граф 2dph (L-9.4 #233). Читает локальные репозитории git.produktor.io (eSlider/*, produktor/*) через internal/gitlog (go-git, без git-бинара) — тот же источник, что premises-корпус Leaf (source=git, kind=commit) — и мапит в brain.CommitInput: Commit-узел (id = repo:sha) + Person по email + ребро AUTHORED. Слой чистый (cgo-free): запись в Ladybug исполняет bin/git/graph.go через brain.UpsertCommits.
Канон git-коммита: (repo, sha) — полный sha уникален в репозитории, один и тот же sha в разных репо (форк/копия истории) — разные узлы. repo — имя origin-remote (gitlog.RepoName), стабильное при переезде клона. Авторство — по Author (как gitlog/git-корпус); merge-коммиты gitlog.Log пропускает (тот же канон, что premises-слой Leaf).
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CommitID ¶
CommitID — канон узла Commit: repo:sha (полный sha), формат как FileID (repo:path). Стабилен при переезде клона; одинаковый sha в разных репо — разные узлы.
func ToInputs ¶
func ToInputs(rcs []RepoCommit) []brain.CommitInput
ToInputs мапит RepoCommit → brain.CommitInput: id = repo:sha, email lowercase (Person.id = email канон, как mail D-1 #257), dedup по (repo,sha) — повторный прогон не плодит дублей, сортировка по дате ASC (родители раньше; детерминизм отчёта/записи), tie-break по id.
func WeakSubject ¶
WeakSubject — неинформативный subject коммита: пустой/пробельный или целиком служебное слово (Update/WIP/fix…). Содержательный subject («feat: mesh node», «fix: typo») слабым не считается.
Types ¶
type Fact ¶
type Fact struct {
Repo string `json:"repo"`
Person string `json:"person"` // name <email>
Claim string `json:"claim"`
Period string `json:"period"`
Commits int `json:"commits"`
Weak int `json:"weak"`
Premises []string `json:"premises"`
Inference string `json:"inference"`
Gaps []string `json:"gaps"`
Verdict string `json:"verdict"`
Rows []FactRow `json:"rows,omitempty"` // --commits
}
Fact — audit card по Vinogradov (claim/premises/inference/gaps/verdict).
func BuildFacts ¶
BuildFacts превращает группы в факты-карточки. Premises — первые 5 commit id группы (+счётчик остатка); verdict accept, либо weaken когда ВСЕ subject-ы слабые (только «трогал файлы»), partial weak → gap OPEN.
type FactFilter ¶
type FactFilter struct {
Repo string // пусто = все
Author string // email, пусто = все
Since time.Time // только коммиты с датой >=
}
FactFilter — фильтры git-facts CLI.
type FactGroup ¶
FactGroup — факт: person работал над repo; Rows отсортированы по дате ASC.
func GroupFacts ¶
func GroupFacts(rows []FactRow, f FactFilter) []FactGroup
GroupFacts фильтрует строки (repo/author/since) и группирует по (repo, email): person работал над repo. Детерминизм: группа сортирует коммиты по дате ASC (tie-break id), группы — по (repo, email).
type FactRow ¶
type FactRow struct {
ID string // repo:sha
Repo string
Subject string
Date string // RFC3339
Email string // Person.id = email lowercase
Name string
}
FactRow — одна строка выборки Commit-AUTHORED-Person из графа.
type Repo ¶
Repo — один источник git-фактов: путь клона и стабильное имя из origin-remote (fallback — имя каталога).
type RepoCommit ¶
RepoCommit — один коммит истории с репозиторием (контекст канона).
type Stats ¶
Stats — числа dry-run импорта: раскладка по repo, уникальные автор-email (приближение Person-узлов до записи), коммиты со слабым subject.
func ComputeStats ¶
func ComputeStats(inputs []brain.CommitInput) Stats
ComputeStats считает числа dry-run до записи.