Git Intelligence: Hotspots, Ownership & Coupling Explained

repowise team··9 min read
git hotspot analysiscode churnbus factorchange couplingcode ownership

Git intelligence is the practice of mining a repository's commit history to find risk that source code alone cannot show: which files are most likely to break, who carries the knowledge to fix them, and which files quietly change together. It treats git not as a backup log but as a behavioural dataset—every commit is evidence about how a system actually evolves. The four core signals are hotspots, ownership and bus factor, change coupling, and co-change, and repowise computes all four as part of its git layer.

What is git intelligence?

Git intelligence is the analysis of version-control history to derive engineering risk signals. It mines commit metadata—who changed what, when, and alongside which other files—to surface hotspots, code ownership, bus factor, and change coupling. Unlike static analysis, which reads a single snapshot, git intelligence reads change over time, exposing patterns that no single revision of the code reveals.

The distinction matters because most quality tooling looks only at the current tree. A linter sees today's complexity; it cannot see that a file has been rewritten eleven times this quarter by four different people. That temporal dimension is where defect risk concentrates, and it is exactly what the git history records for free.

repowise builds a dedicated git layer during indexing. It walks the commit graph once, then keeps it warm so re-indexes stay incremental—typically under 30 seconds for a routine change on an already-indexed repo. The signals below are all derived from that single pass.

Hotspots: churn × complexity

A hotspot is a file that is both complicated and frequently changed. Complexity alone is tolerable if the code is stable; churn alone is fine if the code is simple. The danger lives in the overlap, where hard-to-understand code keeps getting edited and every edit risks a regression.

The intuition is a two-axis map. Complexity sits on one axis, change frequency on the other, and the files drifting into the high-high corner are your hotspots. repowise does not publish a magic threshold—it ranks files relative to the rest of the repository, so a "hotspot" is always defined against that codebase's own distribution rather than a universal cut-off.

Hotspots are useful because they are predictive, not just descriptive. They tell you where to spend review attention, where to add tests first, and where refactoring buys the most safety per hour. The git hotspot analysis spoke walks through reading the ranking and acting on it.

A special case is the untested hotspot: a file that sits in the churn-complexity danger zone and has low test coverage. repowise computes this as the intersection of low coverage and the churn-complexity signal, ingesting coverage from standard report formats (LCOV, Cobertura, Clover, or JSON). Those files are the cheapest catastrophes to prevent.

Ownership and bus factor

Ownership asks a different question: not "what is risky to change" but "who would we lose if a person left." Git history records authorship per file, so it can estimate how concentrated knowledge is across a module or a service.

Bus factor is the headline summary—how many people would have to disappear before a critical area has no informed maintainer. A bus factor of one is a knowledge silo: a single contributor holds the working model in their head, and the org is one resignation away from a haunted directory nobody dares touch.

repowise describes ownership qualitatively rather than reducing a team to a single brittle number. It surfaces who has touched a file, how recently, and how concentrated that history is, so a manager can read the shape of the risk instead of trusting one formula. The ownership and bus factor spoke covers how to read those signals without turning git blame into a performance review.

Change coupling and co-change

Change coupling—also called temporal or evolutionary coupling—is the relationship between files that keep changing in the same commits even when nothing in the code imports one from the other. Two files with no static dependency on paper can still be locked together because editing one always forces an edit to the other.

Co-change is the raw observation behind it: file A and file B appeared in the same commit N times. Change coupling is the inference you draw once that count is high enough to suggest a hidden contract—a shared assumption, a serialization format, a frontend that must move whenever a backend route does.

This is the signal static analysis can never produce, because the dependency exists only in the history, not the AST. repowise mines co-change during indexing and exposes coupled pairs, so a reviewer can be warned when a PR touches one half of a known pair and forgets the other. The hidden coupling spoke shows how to separate real evolutionary coupling from migration noise.

The four signals at a glance

SignalQuestion it answersHistory it readsStatic analysis can produce it?
HotspotWhere is change risk concentrated?Change frequency × complexityPartly (complexity only)
Ownership / bus factorWho understands this, and how few of them?Authorship per file over timeNo
Change couplingWhat hidden dependencies exist?Files co-edited across commitsNo
Co-changeWhich files move together?Per-commit file setsNo

Three of the four cannot be derived from a code snapshot at all. That is the whole argument for a git layer: the most actionable risk signals are temporal, and a tool that only parses the current tree is structurally blind to them.

How the git layer feeds the rest of repowise

The git layer is not a standalone report—it is an input to repowise's wider code-health model. repowise computes 25 deterministic biomarkers, and the evolutionary ones (churn, change entropy, ownership concentration, co-change) sit alongside structural ones (complexity, coupling) in the same defect-risk score.

That blend is validated against an open benchmark. On repowise's open 21-repository benchmark, the health score achieves a ROC AUC of 0.74 (95% CI 0.68–0.79, reaching 0.90 on the strongest repos), and the files it flags as high-risk carry roughly 2.3× more defects than the repository baseline. Those numbers come from process signals as much as structural ones—evidence that mining history is not a nice-to-have but a primary predictor.

Because repowise is AGPL-3.0 licensed, the benchmark, the biomarker definitions, and the git-layer code are all open to inspect. You can reproduce the AUC yourself rather than take a vendor's word for it. See the git intelligence feature page for the product view of these signals.

The git-intelligence cluster

This guide is the hub. Each spoke below goes deep on one part of the picture:

Together they cover both sides of the same coin: the static structure of a codebase and the evolutionary record of how it actually changed.

Last reviewed: June 2026.

FAQ

What is git intelligence?

Git intelligence is the analysis of commit history to derive engineering risk signals—hotspots, code ownership, bus factor, and change coupling—that a single snapshot of the source code cannot reveal. It treats every commit as evidence about how the system really evolves.

How is a hotspot different from a complex file?

A complex file that never changes is stable debt; you can leave it alone. A hotspot is complex and frequently changed, so each edit risks a regression in code that is hard to reason about. repowise ranks hotspots relative to the rest of the repository rather than against a fixed threshold.

What is bus factor and how does git history estimate it?

Bus factor is the number of people who would have to leave before a critical area has no informed maintainer. Git records authorship per file, so the history shows how concentrated that knowledge is—a bus factor of one means a single contributor effectively owns the working model.

What is change coupling, and why can't static analysis find it?

Change coupling is the tendency of files to change together across commits even when neither imports the other. The relationship lives only in the history, not in the code's structure, so an AST-based static analyser is blind to it—you have to mine commits to see it.

How fast is git intelligence on a large repo?

The first index walks the full commit graph once. After that, repowise keeps the graph warm and re-indexes incrementally, typically in under 30 seconds for a routine change on an already-indexed repository.

Are these signals actually predictive of bugs?

On repowise's open 21-repository benchmark, the health score that blends these git signals with structural ones reaches a ROC AUC of 0.74 (95% CI 0.68–0.79, up to 0.90 on the strongest repos), and flagged files carry about 2.3× more defects than the repository baseline.

Try repowise on your repo

One command indexes your codebase.