Security fixes
- Fixed path traversal by cloning/checking out crafted Git repository containing
..,.jj,.gitpaths. (GHSA-88h5-6w7m-5w56; CVE-2024-51990)
Breaking changes
-
Revset function names can no longer start with a number.
-
Evaluation error of
revsets.short-prefixesconfiguration is now reported. -
The
HEAD@gitsymbol no longer resolves to the Git HEAD revision. Use
git_head()or@-revset expression instead. Thegit_headtemplate
keyword now returns a boolean. -
Help command doesn't work recursively anymore, i.e.
jj workspace help root
doesn't work anymore. -
The color label
op_logfrom the[colors]config section now only
applies to the op log and not to the other places operations are displayed. In
almost all cases, if you configuredop_logbefore, you should use the new
operationlabel instead. -
Default operation log template now shows end times of operations instead of
start times.
Deprecations
git.auto-local-bookmarkreplacesgit.auto-local-branch. The latter remains
supported for now (at lower precedence than the former).
New features
-
Added diff options to ignore whitespace when comparing lines. Whitespace
changes are still highlighted. -
New command
jj simplify-parentswill remove redundant parent edges. -
jj squashnow supports-f/-tshorthands for--from/--[in]to. -
Initial support for shallow Git repositories has been implemented. However,
deepening the history of a shallow repository is not yet supported. -
jj git clonenow accepts a--depth <DEPTH>option, which
allows to clone the repository with a given depth. -
New command
jj file annotatethat annotates files line by line. This is similar
in functionality togit blame. Invoke the command withjj file annotate <file_path>.
The output can be customized via thetemplates.annotate_commit_summary
config variable. -
jj bookmark listgained a--remote REMOTEoption to display bookmarks
belonging to a remote. This option can be combined with--trackedor
--conflicted. -
New command
jj config unsetthat unsets config values. For example,
jj config unset --user user.name. -
jj helpnow has the flag--keyword(shorthand-k), which can give help
for some keywords (e.g.jj help -k revsets). To see a list of the available
keywords you can dojj help --help. -
New
at_operation(op, expr)revset can be used in order to query revisions
based on historical state. -
String literals in filesets, revsets and templates now support hex bytes
(with\eas escape / shorthand for\x1b). -
New
coalesce(revsets...)revset which returns commits in the first revset
in therevsetslist that does not evaluate tonone(). -
New template function
raw_escape_sequence(...)preserves escape sequences. -
Timestamp objects in templates now have
after(date) -> Booleanand
before(date) -> Booleanmethods for comparing timestamps to other dates. -
New template functions
pad_start(),pad_end(),truncate_start(), and
truncate_end()are added. -
Add a new template alias
builtin_log_compact_full_description(). -
Added the config settings
diff.color-words.contextanddiff.git.contextto
control the default number of lines of context shown.
Fixed bugs
-
Error on
trunk()revset resolution is now handled gracefully.
#4616 -
Updated the built-in diff editor
scm-recordto version
0.4.0, which
includes multiple fixes.
Contributors
Thanks to the people who made this release happen!
- Alec Snyder (@allonsy)
- Arthur Grillo (Grillo-0)
- Austin Seipp (@thoughtpolice)
- Benjamin Tan (@bnjmnt4n)
- Dave Townsend (@Mossop)
- Daniel Ploch (@torquestomp)
- Emily (@neongreen)
- Essien Ita Essien (@essiene)
- Fedor Sheremetyev (@sheremetyev)
- Ilya Grigoriev (@ilyagr)
- Jakub Okoński (@farnoy)
- Jcparkyn (@Jcparkyn)
- Joaquín Triñanes (@JoaquinTrinanes)
- Lukas Wirth (@Veykril)
- Marco Neumann (@crepererum)
- Martin von Zweigbergk (@martinvonz)
- Matt Stark (@matts1)
- Philip Metzger (@PhilipMetzger)
- Philipp Albrecht (@pylbrecht)
- Remo Senekowitsch (@senekor)
- Richard Macklin (@rmacklin)
- Robin Stocker (@robinst)
- Samuel Tardieu (@samueltardieu)
- Sora (@SoraTenshi)
- Stephen Jennings (@jennings)
- Theodore Ehrenborg (@TheodoreEhrenborg)
- Vamsi Avula (@avamsi)
- Vincent Ging Ho Yim (@cenviity)
- Yuya Nishihara (@yuja)