DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
Generic, dependency-light Git ergonomics for Go: repository discovery, commit-log parsing with Co-authored-by trailers and change stats, plus the gitscan CLI
翻訳待ち
Loading the full README.
Read the full README ↗Generic, dependency-light Git ergonomics for Go, by shelling out to the
git CLI: repository discovery, commit-log parsing with trailers
(Co-authored-by) and change stats, AI authorship detection, conventional
commit parsing, parallel multi-repo execution, calendar-date filtering,
branch/origin metadata, remote-URL normalization, tag dates, and
exposure queries (which refs and tagged releases contain a commit or
path, every file ever committed, and ignored local files). The base
layer for higher-level tools — including the bundled gitscan CLI and
the OmniDevX telemetry collectors — in the same way
gogithub underlies GitHub
integrations.
repo, _ := gogit.Open("/path/to/repo")
commits, _ := repo.Log(ctx, gogit.LogOptions{
Since: weekStart,
IncludeStats: true,
Reverse: true,
})
for _, c := range commits {
attr := gogit.AnalyzeAuthorship(c)
fmt.Println(c.Hash, c.Author.Email, attr.Tools, c.Insertions)
}
| Feature | Entry Point | Description |
|---|---|---|
| Discovery | Discover(roots, maxDepth) | Depth-bounded repository discovery |
| Commit log | Repo.Log(ctx, LogOptions) | Parsed commits with dates, trailers, numstat |
| Commit message body | LogOptions.IncludeBody | Adds Commit.Body (opt-in, costs more per commit) |
| Incremental log | LogOptions.SinceCommit | High-water-mark ingestion (sha..HEAD) |
| Reverse order | LogOptions.Reverse | Chronological (oldest-first) iteration |
| Co-authors | Commit.CoAuthors() | Co-authored-by trailer extraction |
| AI authorship | AnalyzeAuthorship(c) | Detect AI tools, models, and human co-authors |
| AI provider registry | DefaultAITools | Claude Code, Copilot, Gemini CLI, Cursor, Aider |
| AI co-author parsing | Commit.AICoAuthors() | Identify AI tools with model version extraction |
| Commit stats | Repo.CollectCommitStats | Commit/LOC aggregation by conventional-commit category |
| Multi-repo stats | AggregateCommitStats | Parallel aggregation with AI-assisted metrics |
| Conventional commits | ParseConventionalCommit(s) | Type, scope, breaking flag, subject |
| Trailer lookup | Commit.TrailerValue(key) | Case-insensitive trailer access |
| Parallel execution | RunAll(ctx, paths, fn, workers) | Generic concurrent multi-repo operations |
| Progress reporting | RunAllWithProgress(...) | Parallel execution with progress callback |
| Metadata | Repo.Branch, Repo.OriginURL | Branch name and remote URL |
| Remote normalization | NormalizeRemoteURL(url) | Canonical host/path identifiers |
| Tags | Repo.Tags, Repo.TagsWithDates | Tag listing with creation dates |
| Pending commits | Repo.PendingCommits(ctx, sinceCommit) | Commits ahead of upstream, or after an explicit commit hash; result carries the current branch |
| Upstream check | Repo.HasUpstream(ctx) | Whether the current branch has an upstream configured |
| File listing | Repo.LsFiles(ctx, includeUntracked) | Tracked files, optionally plus untracked/non-ignored files |
| Staged files | Repo.StagedFiles(ctx) | Files with staged additions/modifications |
| Object content | Repo.ShowContent(ctx, spec) | Content at a git spec (e.g. :path for the staged version) |
| Revision tree | Repo.LsTree(ctx, rev) | Full file list at a revision |
| Last commit touching a path | Repo.LastCommitTouching(ctx, at, path) | Most recent commit at/before a revision that modified a path, or "" |
| Ref reachability | Repo.RefsContaining(ctx, commit) | Branches, remote-tracking branches, and tags containing a commit (pushed? released?) |
| Tagged path | Repo.TagsWithPath(ctx, path) | Tags whose tree contains a path, in one batched call |
| Historical files | Repo.FilesEverAdded(ctx) | Every path ever added on any ref, including since-deleted files |
| Ignored files | Repo.IgnoredFiles(ctx) | Untracked paths excluded by ignore rules; fully ignored dirs collapse to dir/ |
| Content search | gitgrep.GrepTree(ctx, repoPath, opts) | Search the working tree, index, or a revision for patterns |
| History search | gitgrep.HistoryPickaxe(ctx, repoPath, opts) | Commits whose diff added/removed a pattern (git log -S/-G) |
| Patch streaming | gitgrep.StreamPatches(ctx, repoPath, rng, fn) | Stream git log -p diffs with commit context, for custom detectors |
Renamed from gitscan (the CLI lives on at cmd/gitscan).
This is the beginning of the README. Read the rest at the original. Read the full README ↗