v0.18.0
Breaking changes
-
Dropped support for
ui.default-revset
config (replaced byrevsets.log
in
0.8.0). -
The
commit_summary_no_branches
template is superseded by
templates.branch_list
. -
jj split
will now refuse to split an empty commit. -
jj config list
now uses multi-line strings and single-quoted strings in the
output when appropriate. -
jj config get
/list
/set
now parsename
argument as TOML
key. Quote meta characters as needed.
Example:jj config get "revset-aliases.'trunk()'"
-
When updating the working copy away from an empty and undescribed commit, it
is now abandoned even if it is a merge commit. -
If a new working-copy commit is created because the old one was abandoned, and
the old commit was merge, then the new commit will now also be.
#2859 -
jj new
's--insert-before
/--insert-after
options must now be set for each
commit the new commit will be inserted before/after. Previously, those options
were global flags and specifying them once would insert the new commit before/
after all the specified commits.
Deprecations
- Attempting to alias a built-in command now gives a warning, rather than being
silently ignored.
New features
-
jj branch list
/tag list
now accept-T
/--template
option. The tag list
prints commit summary along with the tag name by default. -
Conflict markers now include an explanation of what each part of the conflict
represents. -
ui.color = "debug"
prints active labels alongside the regular colored output. -
jj branch track
now show conflicts if there are some. -
A new revset
reachable(srcs, domain)
will return all commits that are
reachable fromsrcs
withindomain
. -
There are now prebuilt binaries for
aarch64-linux-unknown-musl
.
Note, these are cross compiled and currently untested.
We plan on providing fully tested builds later once our CI system allows it. -
Added new revsets
mutable()
andimmutable()
. -
Upgraded
scm-record
from v0.2.0 to v0.3.0. See release notes at
https://github.com/arxanas/scm-record/releases/tag/v0.3.0 -
New command
jj fix
that can be configured to update commits by running code
formatters (or similar tools) on changed files. The configuration schema and
flags are minimal for now, with a number of improvements planned (for example,
#3800 and
#3801). -
jj new
's--insert-before
and--insert-after
options can now be used
simultaneously. -
jj git push
now can push commits with empty descriptions with the
--allow-empty-description
flag
Fixed bugs
-
Previously,
jj git push
only made sure that the branch is in the expected
location on the remote server when pushing a branch forward (as opposed to
sideways or backwards). Now,jj git push
makes a safety check in all cases
and fails wheneverjj git fetch
would have introduced a conflict.In other words, previously branches that moved sideways or backward were
pushed similarly to Git'sgit push --force
; now they have protections
similar togit push --force-with-lease
(though not identical to it, to match
the behavior ofjj git fetch
). Note also that because of the wayjj git fetch
works,jj
does not suffer from the same problems as Git'sgit push --force-with-lease
in situations whengit fetch
is run in the background. -
When the working copy commit becomes immutable, a new one is automatically created
on top of it to avoid letting the user edit the immutable one. -
jj config list
now properly escapes TOML keys (#1322). -
Files with conflicts are now checked out as executable if all sides of the
conflict are executable. -
The progress bar (visible when using e.g.
jj git clone
) clears the
remainder of the cursor row after drawing rather than clearing the entire row
before drawing, eliminating the "flicker" effect seen on some terminals.
Contributors
Thanks to the people who made this release happen!
- Alexander Potashev (@aspotashev)
- Austin Seipp (@thoughtpolice)
- Benjamin Tan (@bnjmnt4n)
- Charles Crete (@Cretezy)
- Daniel Ploch (@torquestomp)
- Danny Hooper (@hooper)
- Eidolon (@HybridEidolon)
- Glen Choo (@chooglen)
- Gregory Anders (@gpanders)
- Ilya Grigoriev (@ilyagr)
- jyn (@jyn514)
- Martin von Zweigbergk (@martinvonz)
- Matt Stark (@matts1)
- Matthew Davidson (@KingMob)
- Michael Gattozzi (@mgattozzi)
- mlcui (@mlcui-corp)
- Philip Metzger (@PhilipMetzger)
- Remo Senekowitsch (@senekor)
- Thomas Castiglione (@gulbanana)
- Théo Daron (@tdaron)
- tinger (@tingerrr)
- Waleed Khan (@arxanas)
- Yuya Nishihara (@yuja)