Deprecations
jj move
was deprecated in favor ofjj squash
.
Breaking changes
-
The
git_head
template keyword now returns an optional value instead of a
list of 0 or 1 element. -
The
jj sparse set --edit
/--reset
flags were split up intojj sparse edit
/reset
subcommands respectively. -
The
jj sparse
subcommands now parse and print patterns as workspace-relative
paths. -
The
jj log
command no longer uses the default revset when a path is specified.
New features
-
Config now supports rgb hex colors (in the form
#rrggbb
) wherever existing color names are supported. -
ui.default-command
now accepts multiple string arguments, for more complex
defaultjj
commands. -
Graph node symbols are now configurable via templates
templates.log_node
templates.op_log_node
-
jj log
now includes synthetic nodes in the graph where some revisions were
elided. -
jj squash
now accepts--from
and--into
(also aliased as--to
) if-r
is not specified. It can now be used for all use cases wherejj move
could
previously be used. The--from
argument accepts a revset that resolves to
more than one revision. -
Commit templates now support
immutable
keyword. -
New template function
coalesce(content, ..)
is added. -
Timestamps are now shown in local timezone and without milliseconds and
timezone offset by default. -
jj git push
now prints messages from the remote. -
jj branch list
now supports a--conflicted/-c
option to show only conflicted branches. -
jj duplicate
andjj abandon
can now take more than a single-r
argument,
for consistency with other commands. -
jj branch list
now allows combining-r REVISIONS
/NAMES
and-a
options. -
--all
is now named--all-remotes
forjj branch list
-
There is a new global
--quiet
flag to silence commands' non-primary output. -
jj split
now supports a--siblings/-s
option that splits the target
revision into siblings with the same parents and children. -
new function
working_copies()
for revsets to show the working copy commits of all workspaces.
Fixed bugs
None.
Contributors
Thanks to the people who made this release happen!
- Aleksey Kuznetsov (@zummenix)
- Anton Älgmyr (@algmyr)
- Austin Seipp (@thoughtpolice)
- Benjamin Tan (@bnjmnt4n)
- Chris Krycho (@chriskrycho)
- Christoph Koehler (@ckoehler)
- Daniel Ploch (@torquestomp)
- Evan Mesterhazy (@emesterhazy)
- Ilya Grigoriev (@ilyagr)
- Khionu Sybiern (@khionu)
- Martin von Zweigbergk (@martinvonz)
- Matthew Davidson (@KingMob)
- mrstanwell (@mrstanwell)
- Noah Mayr (@noahmayr)
- Patric Stout (@TrueBrain)
- Poliorcetics (@poliorcetics)
- Simon Wollwage (@Kintaro)
- Steve Klabnik (@steveklabnik)
- Tom Ward (@tomafro)
- TrashCan (@TrashCan69420)
- Yuya Nishihara (@yuja)