v0.20.0
Note to packagers
jjnow linkslibgit2statically by default. To use dynamic linking, you
need to set the environment variableLIBGIT2_NO_VENDOR=1while compiling.
(#4163)
Breaking changes
-
jj rebase --skip-emptyhas been renamed tojj rebase --skip-emptied -
jj backout --revisionhas been renamed tojj backout --revisions.
The short alias-ris 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 logby default. -
Updated defaults for graph node symbol templates
templates.log_nodeand
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@gitare 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 -pno 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 fixis 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 fixfor 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 cloneandjj git initwith an existing git repository adds the
default branch of the remote as repository settings for
revset-aliases."trunk()".` -
jj workspace forgetnow abandons the workspace's working-copy commit if it
was empty. -
jj backoutnow includes the backed out commit's subject in the new commit
message. -
jj backoutcan now back out multiple commits at once. -
jj git clone some/nested/pathnow 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 diffthat can compare changes made between two
operations. -
New command
jj operation showthat can show the changes made in a single
operation. -
New config setting
git.private-commitsto prevent commits from being pushed. -
The default commit description template
can now be configured bytemplates.draft_commit_description. -
jj fixcan 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 fixfor details. -
Added revset functions
author_dateandcommitter_date. -
jj describecan now update the description of multiple commits.
Fixed bugs
-
jj statuswill 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 --gitno longer shows the contents of binary files. -
Windows binaries no longer require
vcruntime140.dllto be installed
(normally through Visual Studio.) -
On quit, the builtin pager no longer waits for all outputs to be discarded.
-
jj branch renameno 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)