v0.20.0
Note to packagers
jj
now linkslibgit2
statically by default. To use dynamic linking, you
need to set the environment variableLIBGIT2_NO_VENDOR=1
while compiling.
(#4163)
Breaking changes
-
jj rebase --skip-empty
has been renamed tojj rebase --skip-emptied
-
jj backout --revision
has been renamed tojj backout --revisions
.
The short alias-r
is still supported. -
The default
immutable_heads()
set
now includesuntracked_remote_branches()
with the assumption that untracked
branches aren't managed by you. Therefore, untracked branches are no longer
displayed injj log
by default. -
Updated defaults for graph node symbol templates
templates.log_node
and
templates.op_log_node
. -
The "fileset" language is now enabled by default. It can
still be disable by settingui.allow-filesets=false
. -
On
jj git fetch
/import
, commits referred to byHEAD@git
are no longer
preserved. If a checked-out named branch gets deleted locally or remotely, the
corresponding commits will be abandoned. -
jj --at-op=@
no longer merges concurrent operations if explicitly specified. -
jj obslog -p
no longer shows diffs at non-partial squash operations.
Previously, it showed the same diffs as the second predecessor.
Deprecations
- The original configuration syntax for
jj fix
is now deprecated in favor of
one that allows defining multiple tools that can affect different filesets.
These can be used in combination for now. Seejj help fix
for details.
New features
-
External diff tools can now be configured to invoke the tool on each file
individually instead of being passed a directory by setting
merge-tools.$TOOL.diff-invocation-mode="file-by-file"
in config.toml. -
In git diffs, word-level hunks are now highlighted with underline. See diff
colors and styles for customization. -
New
.diff().<format>()
commit template methods are added. They can be used
in order to show diffs conditionally. For example,
if(current_working_copy, diff.summary())
. -
jj git clone
andjj git init
with an existing git repository adds the
default branch of the remote as repository settings for
revset-aliases."trunk()"
.` -
jj workspace forget
now abandons the workspace's working-copy commit if it
was empty. -
jj backout
now includes the backed out commit's subject in the new commit
message. -
jj backout
can now back out multiple commits at once. -
jj git clone some/nested/path
now creates the full directory tree for
nested destination paths if they don't exist. -
String patterns now support case‐insensitive matching by suffixing any
pattern kind with-i
.mine()
uses case‐insensitive matching on your email
address unconditionally. Only ASCII case folding is currently implemented,
but this will likely change in the future. -
String patterns now support
regex:"pattern"
. -
New
tracked_remote_branches()
anduntracked_remote_branches()
revset
functions can be used to select tracked/untracked remote branches. -
The
file()
revset function now accepts fileset as argument. -
New
diff_contains()
revset function can be used to search diffs. -
New command
jj operation diff
that can compare changes made between two
operations. -
New command
jj operation show
that can show the changes made in a single
operation. -
New config setting
git.private-commits
to prevent commits from being pushed. -
The default commit description template
can now be configured bytemplates.draft_commit_description
. -
jj fix
can now be configured to run different tools on different filesets.
This simplifies the use case of configuring code formatters for specific file
types. Seejj help fix
for details. -
Added revset functions
author_date
andcommitter_date
. -
jj describe
can now update the description of multiple commits.
Fixed bugs
-
jj status
will show different messages in a conflicted tree, depending
on the state of the working commit. In particular, if a child commit fixes
a conflict in the parent, this will be reflected in the hint provided
byjj status
-
jj diff --git
no longer shows the contents of binary files. -
Windows binaries no longer require
vcruntime140.dll
to be installed
(normally through Visual Studio.) -
On quit, the builtin pager no longer waits for all outputs to be discarded.
-
jj branch rename
no longer shows a warning in colocated repos.
Contributors
Thanks to the people who made this release happen!
- Anton Älgmyr (@algmyr)
- Austin Seipp (@thoughtpolice)
- Benjamin Tan (@bnjmnt4n)
- Daniel Ploch (@torquestomp)
- Danny Hooper (@hooper)
- Emily (@emilazy)
- Essien Ita Essien (@essiene)
- Erich Gubler (@ErichDonGubler)
- Fedor Sheremetyev (@sheremetyev)
- Ilya Grigoriev (@ilyagr)
- Jonathan Tan (@jonathantanmy)
- Julien Vincent (@julienvincent)
- Martin von Zweigbergk (@martinvonz)
- Matt Kulukundis (@fowles)
- Matt Stark (@matts1)
- mlcui (@mlcui-corp)
- Philip Metzger (@PhilipMetzger)
- Scott Taylor (@scott2000)
- Skyler Grey (@Minion3665)
- Stephen Jennings (@jennings)
- Tim Janik (@tim-janik)
- Vincent Ging Ho Yim (@cenviity)
- Vladimír Čunát (@vcunat)
- Vladimir (@0xdeafbeef)
- Yuya Nishihara (@yuja)