Breaking changes
-
Dropped candidates set argument from
description(needle)
,author(needle)
,
committer(needle)
,merges()
revsets. Usex & description(needle)
instead. -
Adjusted precedence of revset union/intersection/difference operators.
x | y & z
is now equivalent tox | (y & z)
. -
Support for open commits has been dropped. The
ui.enable-open-commits
config
that was added in 0.5.0 is no longer respected. Thejj open/close
commands
have been deleted. -
jj commit
is now a separate command fromjj close
(which no longer
exists). The behavior has changed slightly. It now always asks for a
description, even if there already was a description set. It now also only
works on the working-copy commit (there's no-r
argument). -
If a workspace's working-copy commit has been updated from another workspace,
most commands in that workspace will now fail. Use the new
jj workspace update-stale
command to update the workspace to the new
working-copy commit. (The old behavior was to automatically update the
workspace.)
New features
-
Commands with long output are paginated.
#9 -
The new
jj git remote rename
command allows git remotes to be renamed
in-place. -
The new
jj resolve
command allows resolving simple conflicts with
an external 3-way-merge tool. -
jj git push
will search@-
for branches to push if@
has none. -
The new revset function
file(pattern..)
finds commits modifying the
paths specified by thepattern..
. -
The new revset function
empty()
finds commits modifying no files. -
Added support for revset aliases. New symbols and functions can be configured
byrevset-aliases.<name> = <expression>
. -
It is now possible to specify configuration options on the command line
with the new--config-toml
global option. -
jj git
subcommands will prompt for credentials when required for HTTPS
remotes rather than failing.
#469 -
Branches that have a different target on some remote than they do locally are
now indicated by an asterisk suffix (e.g.main*
) injj log
.
#254 -
The commit ID was moved from first on the line in
jj log
output to close to
the end. The goal is to encourage users to use the change ID instead, since
that is generally more convenient, and it reduces the risk of creating
divergent commits. -
The username and hostname that appear in the operation log are now
configurable via config optionsoperation.username
andoperation.hostname
. -
jj git
subcommands now support credential helpers. -
jj log
will warn if it appears that the provided path was meant to be a
revset. -
The new global flag
-v/--verbose
will turn on debug logging to give
some additional insight into what is happening behind the scenes.
Note: This is not comprehensively supported by all operations yet. -
jj log
,jj show
, andjj obslog
now all support showing relative
timestamps by settingui.relative-timestamps = true
in the config file.
Fixed bugs
-
A bug in the export of branches to Git caused spurious conflicted branches.
This typically occurred when running in a working copy colocated with Git
(created by runningjj init --git-dir=.
).
#463 -
When exporting branches to Git, we used to fail if some branches could not be
exported (e.g. because Git doesn't allow a branch calledmain
and another
branch calledmain/sub
). We now print a warning about these branches
instead.
#493 -
If you had modified branches in jj and also modified branches in conflicting
ways in Git,jj git export
used to overwrite the changes you made in Git.
We now print a warning about these branches instead. -
jj edit root
now fails gracefully. -
jj git import
used to abandon a commit if Git branches and tags referring
to it were removed. We now keep it if a detached HEAD refers to it. -
jj git import
no longer crashes when all Git refs are removed. -
Git submodules are now ignored completely. Earlier, files present in the
submodule directory in the working copy would become added (tracked), and
later removed if you checked out another commit. You can now usegit
to
populate the submodule directory andjj
will leave it alone. -
Git's GC could remove commits that were referenced from jj in some cases. We
are now better at adding Git refs to prevent that.
#815 -
When the working-copy commit was a merge,
jj status
would list only the
first parent, and the diff summary would be against that parent. The output
now lists all parents and the diff summary is against the auto-merged parents.
Contributors
Thanks to the people who made this release happen!
- Martin von Zweigbergk (@martinvonz)
- Benjamin Saunders (@Ralith)
- Yuya Nishihara (@yuja)
- Glen Choo (@chooglen)
- Ilya Grigoriev (@ilyagr)
- Ruben Slabbert (@rslabbert)
- Waleed Khan (@arxanas)
- Sean E. Russell (@xxxserxxx)
- Pranay Sashank (@pranaysashank)
- Luke Granger-Brown (@lukegb)