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
Uh oh!
There was an error while loading. Please reload this page.
-
Breaking changes
The minimum supported Rust version (MSRV) is now 1.61.0.
The
jj touchupcommand was renamed tojj diffedit.The
-ioption tojj restorewas removed in favor of new--from/--tooptions to
jj diffedit.To report the situation when a change id corresponds to multiple visible
commits,
jj lognow prints the change id in red and puts??after it.Previously, it printed the word "divergent".
jj logprefixes commit descriptions with "(empty)" when they contain nochange compared to their parents.
The
author/committertemplates 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
jjbinary will have a "HEAD@git" reference thatis not visible to older binaries.
The
descriptiontemplate keyword is now empty if no description set.Use
if(description, description, "(no description set)\n")to get backthe previous behavior.
The
template.log.graphandtemplate.commit_summaryconfig keys wererenamed to
templates.logandtemplates.commit_summaryrespectively.If a custom
templates.logtemplate 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-timestampsoption has been removed. Use theformat_timestamp()template alias instead. For details on showing relativetimestamps in
jj logandjj show, see the documentation.jj op lognow shows relative timestamps by default. To disable, setui.oplog-relative-timestampstofalse.The global
--no-commit-working-copyis now called--ignore-working-copy.The
diff.formatconfig option is now calledui.diff.format. The old nameis still supported for now.
merge-tools.<name>.edit-argsnow requires$left/$rightparameters.The default is
edit-args = ["$left", "$right"].The builtin
jj updateandjj upaliases forjj checkouthave 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 --patchnow shows both summary and diff outputs.jj git pushnow accepts multiple--branch/--changeargumentsjj config listcommand prints values from config andconfig editopensthe config in an editor.
jj debug config-schemacommand prints out JSON schema for the jj TOML configfile format.
jj resolve --listcan now describe the complexity of conflicts.jj resolvenow notifies the user of remaining conflicts, if any, on success.This can be prevented by the new
--quietoption.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
emptycondition in templates is true when the commit makes no change tothe three compared to its parents.
branches([needle])revset function now takesneedleas an optionalargument and matches just the branches whose name contains
needle.remote_branches([branch_needle[, remote_needle]])now takesbranch_needleand
remote_needleas optional arguments and matches just the branches whosename contains
branch_needleand remote containsremote_needle.jj git fetchaccepts repeated--remotearguments.Default remotes can be configured for the
jj git fetchandjj git pushoperations ("origin" by default) using the
git.fetchandgit.pushconfiguration entries.
git.fetchcan be a list if multiple remotes mustbe fetched from.
jj duplicatecan now duplicate multiple changes in one go. This preservesany parent-child relationships between them. For example, the entire tree of
descendants of
abccan be duplicated withjj duplicate abc:.jj lognow 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 printwas renamed tojj cat.jj printremains 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 rootprints 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 splitaccepts 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-pathinserts an empty commit between thetarget commit and its parents.
Command arguments to
ui.diff-editor/ui.merge-editorcan now be specifiedinline without referring to
[merge-tools]table.jj rebasenow accepts a new--allow-large-revsetsargument that allows therevset in the
-dargument to expand to several revisions. For example,jj rebase -s B -d B- -d Cnow works even ifBis a merge commit.jj newnow also accepts a--allow-large-revsetsargument that behavessimilarly to
jj rebase --allow-large-revsets.jj new --insert-beforeinserts the new commit between the target commit andits parents.
jj new --insert-afterinserts the new commit between the target commit andits children.
author/committertemplates now support.username(), which leaves out thedomain information of
.email().It is now possible to change the author format of
jj logwith 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/--messageis now terminated with a newlinecharacter, just like descriptions set by editor are.
The
-R/--repositorypath 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 undonow works afterjj duplicate.jj duplicatefollowed byjj rebaseof 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 --helpby reversing fish and zsh text.Fixed edge case in
jj git fetchwhen 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