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] [REVISIONS...]
PARAMETERS
--authors
Show revisions by authors matching the given regular expression.
-b, --branch
Display revisions belonging to the specified branch names.
--from-tool
Filter revisions to only show changes made by a specific tool.
--limit
Restrict the number of revisions shown to the specified count.
-m, --message
Show revisions with messages matching the given regular expression.
--no-graph
Disable drawing the graphical representation of the evolution.
--paths
Show revisions that modify any of the specified file paths.
-r, --revisions
Display revisions reachable from the specified revision identifiers. Defaults to the working copy parent (@) if none are given.
--stdin
Read additional revision identifiers from standard input.
-t, --tag
Show revisions belonging to the specified tag names.
-T, --template
Format the output using a custom template string. Provides extensive control over displayed information.
DESCRIPTION
jj-evolog is an experimental command within the Jujutsu (jj) version control system. It provides a unique visualization of how revisions have transformed over time, focusing on their evolution rather than a static history. Unlike traditional log commands, jj-evolog traces how revisions change through operations like jj amend, jj rebase, or jj squash. It displays each generation of a revision, connecting them to their predecessors via 'evolution links'. This command is invaluable for understanding the dynamic nature of history in Jujutsu, helping users track and debug the flow of iterative refinements and history rewrites. It offers a deeper insight into the lineage and transformation of changes within a repository.
CAVEATS
This command is currently experimental and its behavior or available options may change in future Jujutsu releases. It is exclusively for use within Jujutsu repositories and requires an understanding of Jujutsu's mutable history model.
DEFAULT BEHAVIOR
When invoked without specific revision arguments, jj-evolog defaults to showing the evolution of revisions reachable from the working copy parent (denoted by @).
TEMPLATE CUSTOMIZATION
The --template option is extremely powerful, allowing users to define precisely what revision attributes (e.g., rev_id, change_id, description, mutation_id) are displayed and how they are formatted, enabling highly customized views of revision evolution.
VISUALIZING HISTORY REWRITES
The primary utility of jj-evolog lies in its ability to clearly visualize the effects of history-rewriting operations like jj amend, jj rebase, and jj squash. It illustrates the 'before' and 'after' states of revisions, connected by their unique evolutionary links, making complex refactoring easier to follow.
HISTORY
Jujutsu (jj) is a modern version control system designed for flexible history management. The jj-evolog command was introduced to visually represent Jujutsu's core concept of mutable history and revision evolution. It helps users track how changes are iteratively refined and rewritten, a fundamental aspect of Jujutsu's design philosophy, distinguishing it from traditional, immutable-history VCS tools like Git.
SEE ALSO
jj log(1), jj rebase(1), jj amend(1), jj squash(1), git log(1)