Skip to content
FahnoeePublic

About

The health of a git repository, at a glance: heatmap, punchcard, hotspots and bus factor in your terminal

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

gitpulse

The health of a git repository, at a glance. One command, zero config, no server, no account.

gitpulse reads your git history and shows you what matters: how active the project is, who actually knows the code, which files keep changing, and where you're one resignation away from trouble.

gitpulse overview of charmbracelet/bubbletea

Why

Every codebase has a few files that change constantly and a few directories only one person understands. Those are where bugs, merge conflicts and onboarding pain come from. You can dig this out of git log with a pile of shell, or you can run:

gitpulse

Use it to:

  • Onboard to a new repo: see who to ask about what, and which files are the beating heart.
  • Plan refactors: hotspots are the files where cleanup pays off most.
  • Spot risk: a bus factor of 1 in billing/ is worth knowing before someone goes on leave.
  • Show off: a GitHub-style contribution graph for any repo, in your terminal.

Install

# Go
go install github.com/Fahnoee/gitpulse@latest

# Nix (run without installing)
nix run github:Fahnoee/gitpulse

# Binaries for Linux, macOS and Windows
# → https://github.com/Fahnoee/gitpulse/releases

It's a single static binary that uses only the Go standard library. All it needs is git on your PATH.

Commands

Command What it shows
gitpulse Overview: summary, heatmap, top authors, hotspots, bus factor
gitpulse heatmap GitHub-style contribution graph (fits your terminal width)
gitpulse punchcard Commits by weekday × hour, in each author's own timezone
gitpulse authors Commits, lines added/removed, share, and last activity per person
gitpulse hotspots Files ranked by change frequency, weighted by churn
gitpulse busfactor Per directory: the fewest people who wrote ≥50% of the code

punchcard and bus factor

Flags

-C dir         Run as if started in dir
--since date   Only commits after date ("6 months ago", "2025-01-01", ...)
--until date   Only commits before date
-n N           Max rows to show (0 = all)
--weeks N      Weeks shown in the heatmap
--depth N      Directory depth for busfactor (default 1)
--exclude pat  Ignore files matching a glob (repeatable): "*.md", "docs/"
--all          Include files that no longer exist (hotspots, busfactor)
--json         Machine-readable output
--no-color     Disable colors (NO_COLOR is respected too)

Anything after -- is passed to git as a pathspec, so you can focus on part of a monorepo:

gitpulse hotspots --since "1 year ago" -n 20
gitpulse busfactor --depth 2 -- services/
gitpulse authors --json | jq '.[] | select(.commits > 50) | .name'

How it works

  • One git log pass. History is streamed from git log --numstat and analyzed in memory. Large repos stay fast: fzf (3.6k commits, 13 years) takes under a second.
  • Renames are followed. If src/app.go became lib/app.go, its whole history counts toward lib/app.go.
  • Duplicate identities are merged. Commits by the same person under several emails or name spellings are combined. .mailmap is honored too.
  • Noise is filtered. Lockfiles (package-lock.json, go.sum, Cargo.lock, …) and minified assets are ignored, and merge commits are skipped. Deleted files are left out of hotspots and bus factor unless you pass --all.
  • Hotspot score = commits × (1 + log10(churn + 1)): how often a file changes counts most, and big rewrites still rank higher.
  • Bus factor is the fewest authors who together wrote at least half of the changed lines in a directory. 1 is red, 2 is amber, 3+ is green.
  • Heatmap and punchcard scale by quartiles, so one huge import day doesn't wash out the rest of the year.

Development

nix develop      # go, gopls, git, goreleaser
go test ./...
go run . -C ~/some/repo

Releases are cut by pushing a v* tag; GoReleaser builds the binaries.

License

MIT

About

The health of a git repository, at a glance: heatmap, punchcard, hotspots and bus factor in your terminal

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages