jj-evolog
Show commit evolution log
TLDR
Show how a revision has evolved over time
Show diff statistics in the evolution log
Show summary of each change in the evolution log
SYNOPSIS
jj evolog [OPTIONS] [REVSET]
PARAMETERS
-r, --revision <REVSET>
Revset selecting revisions to show (default: roots()..@)
--limit <LIMIT>
Limit number of revisions displayed (default: 25)
--no-graph
Disable graph rendering; show flat list
--color <WHEN>
Colorization mode: always|never|auto (default: auto)
--no-pager
Disable pager for output
-R, --repository <PATH>
Repository to operate on (default: current)
--by-change-id
Group and sort by change ID (default behavior)
--template <FORMAT>
Custom template for revision rendering
DESCRIPTION
jj evolog is a subcommand of the Jujutsu (jj) version control system that displays an evolutionary log—a compact graph showing how changes evolve across commits.
Unlike traditional logs like jj log or git log, which list commits chronologically, jj evolog groups commits by their change ID, highlighting the progression of a single logical change through rebases, amendments, and conflicts. This makes it ideal for understanding complex histories in Git-compatible workflows.
It renders a text-based graph with branches, merges, and evolutionary paths, using colors for visibility. Supports revsets for filtering (e.g., trunk..) and pagination. Best for developers navigating non-linear histories in jj repositories.
Key benefits: Reduces noise from automatic rebases; focuses on semantic changes; integrates with jj's operation log for full context.
CAVEATS
Experimental in early jj versions; graph may truncate long histories.
Requires jj ≥ 0.18.0. Not compatible with plain Git repos without jj init.
EXAMPLE
jj evolog -r trunk.. — Show evolution on trunk branch.
jj evolog --limit 10 @- — Recent changes on working copy.
CONFIGURATION
Customize via [ui] section in ~/.config/jj/config.toml: default-revset-evol = "roots()..@".
HISTORY
Introduced in Jujutsu 0.18.0 (2024) by Martin von Zweigbergk to address limitations of linear logs in rewrite-heavy workflows. Evolved in 0.20+ with better revset support and templates.
SEE ALSO
jj log(1), jj op log(1), git log(1)


