- Shell completions now surface descriptions for custom aliases, revset-aliases, template-aliases, and fileset-aliases extracted from the .doc field
- jj git fetch now generates evolution history based on change IDs and rebases local descendant revisions onto rewritten parents when change IDs are preserved by the remote
- Added jj util backend name command that prints the commit backend being used in the current repo
- Added edit-invocation-mode config option for diff editors with file-by-file mode to launch the editor once per changed file
- Switched to the mimalloc memory allocator for better multi-threaded performance
- jj show now accepts multiple revisions, showing all of them one after the other, behaving closer to git show
- jj git remote add now reports an error instead of panicking when the remote name is empty or contains whitespace
- Color-words diffs are now shown as separate before and after lines when color output is disabled
- jj bookmark forget no longer prints Forgot N local bookmarks message when no local bookmarks were actually forgotten
- The builtin_log_redacted template now also redacts workspace names
- Removed deprecated command options: jj commit --reset-author/--author, jj describe --no-edit/--edit/--reset-author/--author, jj git push --allow-new, and jj metaedit --update-committer-timestamp
- Removed deprecated config options: git.auto-local-bookmark and git.push-new-bookmarks
- jj evolog no longer supports legacy commit predecessors recorded in jj < 0.30
About
jj is a Git-compatible version control system that is both simple and powerful. See the installation instructions to get started.
Release highlights
- Switched to the mimalloc memory allocator for better multi-threaded performance.
Breaking changes
-
The following deprecated command options have been removed:
jj commit --reset-author/--authorjj describe --no-edit/--edit/--reset-author/--authorjj git push --allow-newjj metaedit --update-committer-timestamp
-
The following deprecated config options have been removed:
git.auto-local-bookmarkgit.push-new-bookmarks
Deprecations
jj evologno longer supports legacy commit predecessors recorded injj< 0.30.
New features
-
Shell completions now surface descriptions for custom aliases, revset-aliases, template-aliases, and fileset-aliases. Descriptions are extracted from the
.docfield of the alias definition if it is a table with.docand.definitionproperties. -
jj shownow accepts multiple revisions, showing all of them one after the other, behaving closer togit show. -
jj git fetchnow generates evolution history based on change IDs. If change IDs are preserved by the remote, local descendant revisions will be rebased onto the rewritten parents. -
Added
jj util backend namecommand that prints the commit backend being used in the current repo. -
Added
edit-invocation-modeconfig option for diff editors (e.g.jj diffedit,jj split). When set to"file-by-file", the editor is launched once per changed file, making it possible to use per-file tools likevimdifffor editing.
Fixed bugs
-
jj git remote addnow reports an error instead of panicking when the remote name is empty or contains whitespace. #9099 -
Color-words diffs are now shown as separate before and after lines when color output is disabled, making piped or redirected diffs readable. #5894
-
jj bookmark forgetno longer printsForgot N local bookmarks.when no local bookmarks were actually forgotten (e.g. when only an untracked remote bookmark matched). #9181. -
The
builtin_log_redactedtemplate now also redacts workspace names.
Contributors
Thanks to the people who made this release happen!
- Alex Jaspersen (@ajaspers)
- Archer (@archer-321)
- ase (@adamse)
- Austin Seipp (@thoughtpolice)
- David Rieber (@drieber)
- Eyüp Can Akman (@eyupcanakman)
- Jakub Stasiak (@jstasiak)
- James Dixon (@lemonase)
- Joseph Lou (@josephlou5)
- Laurynas Keturakis (@laulauland)
- Luna Schwalbe (@lunagl)
- Martin von Zweigbergk (@martinvonz)
- Niko Savola (@nikosavola)
- OlshaMB (@OlshaMB)
- Sergey Kasmy (@SergeyKasmy)
- truffle (@truffle-dev)
- Vincent Ging Ho Yim (@cenviity)
- Yuya Nishihara (@yuja)