Breaking changes
-
Conflicts are now stored in a different way. Commits written by a new
jj
binary will not be read correctly by olderjjbinaries. The new model
solves some performance problems with the old model. For example,jj log
should be noticeably faster on large repos. You may need to create a new
clone to see the full speedup. -
The
remote_branches()revset now includes branches exported to the Git
repository (so called Git-tracking branches.) Use
remote_branches(remote=exact:"origin")to query branches of certain remote. -
Status messages are now printed to stderr.
-
jj config setnow interprets the value as TOML also if it's a valid TOML
array or table. For example,jj config set --user 'aliases.n' '["new"]' -
Remote branches now have tracking or non-tracking flags. The
git.auto-local-branchsetting is applied only to newly fetched remote
branches. Existing remote branches are migrated as follows:- If local branch exists, the corresponding remote branches are considered
tracking branches. - Otherwise, the remote branches are non-tracking branches.
If the deduced tracking flags are wrong, use
jj branch track/untrack
commands to fix them up.See automatic local branch creation
for details. - If local branch exists, the corresponding remote branches are considered
-
Non-tracking remote branches aren't listed by default. Use
jj branch list --allto show all local and remote branches. -
It's not allowed to push branches if non-tracking remote branches of the same
name exist. -
Pushing deleted/moved branches no longer abandons the local commits referenced
by the remote branches. -
jj git fetch --branchnow requiresglob:prefix to expand*in branch
name.
New features
-
jj's stable release can now be installed withcargo binstall jj-cli. -
jj workspace addnow takes a--revisionargument. -
jj workspace forgetcan now forget multiple workspaces at once. -
branches()/remote_branches()/author()/committer()/description()
revsets now support glob matching. -
jj branch delete/forget/list, andjj git push --branchnow support
string pattern syntax. The--globoption
is deprecated in favor ofglob:pattern. -
The
branches/tags/git_refs/git_headtemplate keywords now return a
list ofRefNames. They were previously pre-formatted strings. -
The new template keywords
local_branches/remote_branchesare added to show
only local/remote branches. -
jj workspace addnow preserves all parents of the old working-copy commit
instead of just the first one. -
jj rebase -rgained the ability to rebase a revisionAonto a descendant
ofA.
Fixed bugs
-
Updating the working copy to a commit where a file that's currently ignored
in the working copy no longer leads to a crash
(#976). -
Conflicts in executable files can now be resolved just like conflicts in
non-executable files (#1279). -
jj new --insert-beforeand--insert-afternow respect immutable revisions
(#2468).
Contributors
Thanks to the people who made this release happen!
- Antoine Cezar (@AntoineCezar)
- Austin Seipp (@thoughtpolice)
- Benjamin Saunders (@Ralith)
- Gabriel Scherer (@gasche)
- Ilya Grigoriev (@ilyagr)
- Infra (@1011X)
- Isabella Basso (@isinyaaa)
- Martin von Zweigbergk (@martinvonz)
- Tal Pressman (@talpr)
- Waleed Khan (@arxanas)
- Yuya Nishihara (@yuja)