gogit v0.6.0 Release Notes
Release Date: 2026-07-25
Overview
This release adds four major library features that extend gogit from a commit-log parser into a complete Git analytics toolkit: AI authorship detection, conventional commit parsing, trailer lookup, and generic parallel multi-repo execution. Together these enable consumers like OmniDevX to classify every commit by AI tool, model, and conventional type across hundreds of repositories in parallel.
Highlights
AI authorship detection
A canonical registry of AI coding assistant co-author signatures — Claude Code, GitHub Copilot, Gemini CLI, Cursor, and Aider — with email matching that handles GitHub noreply suffix forms with variable user-ID prefixes.
AIProviderByEmail/AIToolByEmail— match an email to a known providerParseAIModel— extract model identity from names like "Claude Opus 4.6"AnalyzeAuthorship— full attribution breakdown: AI tools, models, and human co-authors
attr := gogit.AnalyzeAuthorship(commit)
if attr.IsAIAuthored {
fmt.Println("AI tools:", attr.Tools)
fmt.Println("Models:", attr.Models)
}
Conventional commit parsing
ParseConventionalCommit extracts type, scope, breaking flag, and subject
from conventional commit messages. Commit.ParseConventional() is the
convenience method on parsed commits.
cc := gogit.ParseConventionalCommit("feat(auth)!: add OAuth2 login")
// cc.Type == "feat", cc.Scope == "auth", cc.Breaking == true
Trailer lookup
Commit.TrailerValue(key) and Commit.TrailerValues(key) provide
case-insensitive access to any git trailer — not just Co-authored-by.
rmiRef := commit.TrailerValue("Refs") // "RMI-FOO-001"
Parallel multi-repo execution
Generic concurrent execution across multiple repositories with configurable worker count, context cancellation, and progress reporting.
RunAll[T]— execute a function on each repo path, return ordered resultsRunAllPaths[T]— lower-level variant for non-repo directoriesRunAllWithProgress[T]— adds a callback for progress updates
results := gogit.RunAll(ctx, repoPaths, func(ctx context.Context, repo *gogit.Repo) ([]gogit.Commit, error) {
return repo.Log(ctx, gogit.LogOptions{Since: cutoff})
}, 0)
Incremental log ingestion
LogOptions.SinceCommit limits output to commits reachable from HEAD but
not from a given SHA (sha..HEAD), enabling high-water-mark ingestion
without date-based filtering. LogOptions.Reverse returns commits in
chronological order (oldest first).
Dependencies
- GitHub Actions checkout bumped from v6 to v7
- GitHub Actions setup-go bumped from v6 to v7
Installation
Library:
go get github.com/grokify/gogit@v0.6.0
CLI:
go install github.com/grokify/gogit/cmd/gitscan@v0.6.0
Commits
See CHANGELOG.md for the full categorized list with commit links.