v0.7.0 #1268
martinvonz
started this conversation in
General
v0.7.0
#1268
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Breaking changes
The minimum supported Rust version (MSRV) is now 1.61.0.
The
jj touchup
command was renamed tojj diffedit
.The
-i
option tojj restore
was removed in favor of new--from
/--to
options to
jj diffedit
.To report the situation when a change id corresponds to multiple visible
commits,
jj log
now prints the change id in red and puts??
after it.Previously, it printed the word "divergent".
jj log
prefixes commit descriptions with "(empty)" when they contain nochange compared to their parents.
The
author
/committer
templates now display both name and email. Useauthor.name()
/committer.name()
to extract the name.Storage of the "HEAD@git" reference changed and can now have conflicts.
Operations written by a new
jj
binary will have a "HEAD@git" reference thatis not visible to older binaries.
The
description
template keyword is now empty if no description set.Use
if(description, description, "(no description set)\n")
to get backthe previous behavior.
The
template.log.graph
andtemplate.commit_summary
config keys wererenamed to
templates.log
andtemplates.commit_summary
respectively.If a custom
templates.log
template is set, working-copy commit willno longer be highlighted automatically. Wrap your template with
label(if(current_working_copy, "working_copy"), ...)
to label theworking-copy entry.
The
ui.relative-timestamps
option has been removed. Use theformat_timestamp()
template alias instead. For details on showing relativetimestamps in
jj log
andjj show
, see the documentation.jj op log
now shows relative timestamps by default. To disable, setui.oplog-relative-timestamps
tofalse
.The global
--no-commit-working-copy
is now called--ignore-working-copy
.The
diff.format
config option is now calledui.diff.format
. The old nameis still supported for now.
merge-tools.<name>.edit-args
now requires$left
/$right
parameters.The default is
edit-args = ["$left", "$right"]
.The builtin
jj update
andjj up
aliases forjj checkout
have beendeleted.
Change IDs are now rendered using letters from the end of the alphabet (from
'z' through 'k') instead of the usual hex digits ('0' through '9' and 'a'
through 'f'). This is to clarify the distinction between change IDs and commit
IDs, and to allow more efficient lookup of unique prefixes. This change
doesn't affect the storage format; existing repositories will remain usable.
New features
The default log format now uses the committer timestamp instead of the author
timestamp.
jj log --summary --patch
now shows both summary and diff outputs.jj git push
now accepts multiple--branch
/--change
argumentsjj config list
command prints values from config andconfig edit
opensthe config in an editor.
jj debug config-schema
command prints out JSON schema for the jj TOML configfile format.
jj resolve --list
can now describe the complexity of conflicts.jj resolve
now notifies the user of remaining conflicts, if any, on success.This can be prevented by the new
--quiet
option.Per-repository configuration is now read from
.jj/repo/config.toml
.Background colors, bold text, and underlining are now supported. You can set
e.g.
color.error = { bg = "red", bold = true, underline = true }
in your~/.jjconfig.toml
.The
empty
condition in templates is true when the commit makes no change tothe three compared to its parents.
branches([needle])
revset function now takesneedle
as an optionalargument and matches just the branches whose name contains
needle
.remote_branches([branch_needle[, remote_needle]])
now takesbranch_needle
and
remote_needle
as optional arguments and matches just the branches whosename contains
branch_needle
and remote containsremote_needle
.jj git fetch
accepts repeated--remote
arguments.Default remotes can be configured for the
jj git fetch
andjj git push
operations ("origin" by default) using the
git.fetch
andgit.push
configuration entries.
git.fetch
can be a list if multiple remotes mustbe fetched from.
jj duplicate
can now duplicate multiple changes in one go. This preservesany parent-child relationships between them. For example, the entire tree of
descendants of
abc
can be duplicated withjj duplicate abc:
.jj log
now highlights the shortest unique prefix of every commit and changeid and shows the rest in gray. To customize the length and style, use the
format_short_id()
template alias. For details, seethe documentation.
jj print
was renamed tojj cat
.jj print
remains as an alias.In content that goes to the terminal, the ANSI escape byte (0x1b) is replaced
by a "␛" character. That prevents them from interfering with the ANSI escapes
jj itself writes.
jj workspace root
prints the root path of the current workspace.The
[alias]
config section was renamed to[aliases]
. The old name isstill accepted for backwards compatibility for some time.
Commands that draw an ASCII graph (
jj log
,jj op log
,jj obslog
) nowhave different styles available by setting e.g.
ui.graph.style = "curved"
.jj split
accepts creating empty commits when given a path.jj split .
inserts an empty commit between the target commit and its children if any,
and
jj split any-non-existent-path
inserts an empty commit between thetarget commit and its parents.
Command arguments to
ui.diff-editor
/ui.merge-editor
can now be specifiedinline without referring to
[merge-tools]
table.jj rebase
now accepts a new--allow-large-revsets
argument that allows therevset in the
-d
argument to expand to several revisions. For example,jj rebase -s B -d B- -d C
now works even ifB
is a merge commit.jj new
now also accepts a--allow-large-revsets
argument that behavessimilarly to
jj rebase --allow-large-revsets
.jj new --insert-before
inserts the new commit between the target commit andits parents.
jj new --insert-after
inserts the new commit between the target commit andits children.
author
/committer
templates now support.username()
, which leaves out thedomain information of
.email()
.It is now possible to change the author format of
jj log
with theformat_short_signature()
template alias. For details, seethe documentation.
Added support for template aliases. New symbols and functions can be
configured by
template-aliases.<name> = <expression>
. Be aware thatthe template syntax isn't documented yet and is likely to change.
Fixed bugs
When sharing the working copy with a Git repo, we used to forget to export
branches to Git when only the working copy had changed. That's now fixed.
Commit description set by
-m
/--message
is now terminated with a newlinecharacter, just like descriptions set by editor are.
The
-R
/--repository
path must be a valid workspace directory. Itsancestor directories are no longer searched.
Fixed a crash when trying to access a commit that's never been imported into
the jj repo from a Git repo. They will now be considered as non-existent if
referenced explicitly instead of crashing.
Fixed handling of escaped characters in .gitignore (only keep trailing spaces
if escaped properly).
jj undo
now works afterjj duplicate
.jj duplicate
followed byjj rebase
of a tree containing both the originaland duplicate commit no longer crashes. The fix should also resolve any remaining
instances of
jj close
(and some others) sometimes crashes on first attempt with Git backend #27.Fix the output of
jj debug completion --help
by reversing fish and zsh text.Fixed edge case in
jj git fetch
when a pruned branch is a prefix of anotherbranch.
Contributors
Thanks to the people who made this release happen!
This discussion was created from the release v0.7.0.
Beta Was this translation helpful? Give feedback.
All reactions