gogit v0.14.0 Release Notes
Release Date: 2026-10-08
Overview
This release adds one thing: a way to ask which files your unpushed commits
touch. gitscan pending already told you which commits were ahead of the
push target; it can now also tell you which paths they carry, merged into
one list. The library gets the matching Repo.PendingFiles. No breaking
changes.
Highlights
The files behind your pending commits
gitscan pending --files adds a merged, de-duplicated, sorted list of the
paths touched by each repository's pending commits:
gitscan pending --files .
Files (3):
docs/export.md
go.mod
internal/invoice/export.go
A path changed by several commits appears once, and paths are relative to the
repository root. The list shows in the table and markdown views, and in JSON
as a files array on each repository, which makes it easy to feed another
tool:
gitscan pending --files --format json ~/src/acme \
| jq -r '.repos[] | .repo as $r | .files[]? | "\($r)/\(.)"'
Without --files, output is unchanged and JSON has no files key, so fleet
sweeps pay for nothing they did not ask for.
The list is every path the pending commits carry, so a file that a later
pending commit deleted is still listed, and a rename lists both the old and
the new path. That is deliberate: a file added and removed before a push is
still in the pushed history. For only the paths in the final tree, use
git diff --name-only @{upstream}..HEAD. The
guide covers the range rules and limits.
Repo.PendingFiles
res, err := repo.PendingFiles(ctx, "") // "" = the usual push baseline
for _, c := range res.Commits { fmt.Println(c.Subject) }
for _, f := range res.Files { fmt.Println(f) }
PendingFiles is PendingCommits plus the merged list in the new
PendingResult.Files. It reuses PendingCommits' baseline, so the commits
and the files always describe the same range, and it honors an explicit
since-commit. With nothing pending, Files is empty.
Documentation
- New guide: Review What a Push Will Publish.
- The
gitgrepdesign note moved todocs/design/gitgrep-design.md, and its status now reads implemented (it shipped in v0.11.0). AGENTS.mdnow defines the documentation layout:docs/guides/for user guides,docs/design/for design notes, anddocs/releases/for release notes.- Three older release notes now link the changelog by URL, so
mkdocs build --strictpasses.
Upgrade Notes
Additive only: PendingResult gains a Files field that is empty unless you
call PendingFiles, and no existing method changes its signature or
behavior. If you linked to docs/gitgrep-design.md on GitHub, the path is now
docs/design/gitgrep-design.md.
Dependencies
github.com/grokify/mogofrom 0.74.9 to 0.75.0
Installation
go get github.com/grokify/gogit@v0.14.0
go install github.com/grokify/gogit/cmd/gitscan@v0.14.0
See CHANGELOG.md for the categorized commit list.