You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
jj is a Git-compatible version control system that is both simple and powerful. See the installation instructions to get started.
Release highlights
The experimental support from release 0.29.0 for transferring the change ID
to/from Git remotes has been enabled by default. The change ID is stored in
the Git commit itself (in a commit header called change-id), which means
it will be transferred by regular git push etc. Please let us know if you
run into any problems with it. You can disable it setting git.write-change-id-header. Note that some Git remotes (e.g GitLab) and
some Git commands (e.g. git rebase) do not preserve the change ids when
they rewrite commits.
jj rebase now automatically abandons divergent commits if another commit
with the same change ID is already present in the destination with identical
changes.
jj split has gained --message, --insert-before, --insert-after, and --destination options.
jj evolog can show associated operations for commits created by new jj
versions.
Breaking changes
The old libgit2 code path for fetches and pushes has been removed,
and the git.subprocess setting along with it.
In templates, bookmark/tag/remote names are now formatted in revset symbol
notation. The type of bookmark.remote() is changed to Option<_>. bookmark.remote() == "foo" still works, but bookmark.remote().<method>()
might need if(bookmark.remote(), ..) to suppress error.
jj rebase now automatically abandons divergent commits if another commit
with the same change ID is already present in the destination with identical
changes. To keep these divergent commits, use the --keep-divergent flag.
The deprecated --skip-empty flag for jj rebase has been removed. Use the --skip-emptied flag instead.
The deprecated jj branch subcommands have been removed. Use the jj bookmark subcommands instead.
jj util completion now requires the name of the shell as a positional
argument and no longer produces Bash completions by default. The deprecated
optional arguments for different shells have been removed.
(Update: this entry was mistakenly omitted in the release notes previously)
External diff tools are now run in the temporary directory containing
the before (left) and after (right) directories, making diffs appear
more pleasing for tools that display file paths prominently. Users can
opt out of this by setting merge-tools.<tool>.diff-do-chdir = false,
but this will likely be removed in a future release. Please report any
issues you run into.
Deprecations
The ui.diff.format and ui.diff.tool config options have been merged as ui.diff-formatter. The builtin format can be specified as :<format>
(e.g. ui.diff-formatter=":git" for Git diffs.)
The .normal_hex() method will be removed from the CommitId template type.
It's useful only for the ChangeId type.
New features
jj split has gained a --message option to set the description of the
commit with the selected changes.
jj split has gained the ability to place the revision with the selected
changes anywhere in the revision tree with the --insert-before, --insert-after and --destination command line flags.
Added git.track-default-bookmark-on-clone setting to control whether to
track the default remote bookmark on jj git clone.
Templates can now do arithmetic on integers with the +, -, *, /, and % infix operators.
Evolution history is now stored in the operation log. jj evolog can show
associated operations for commits created by new jj versions.
Fixed bugs
Work around a git issue that could cause subprocess operations to hang if the core.fsmonitor gitconfig is set in the global or system gitconfigs. #6440
jj parallelize can now parallelize groups of changes that start with an
immutable change, but do not contain any other immutable changes.
jj will no longer warn about deprecated paths on macOS if the configured
XDG directory is the deprecated one (~/Library/Application Support).
The builtin diff editor now correctly handles splitting changes where a file
is replaced by a directory of the same name. #5189
Packaging changes
Due to the removal of the libgit2 code path, packagers should remove any
dependencies on libgit2, libssh2, Zlib, OpenSSL, and pkg-config, and
ensure they are not setting the Cargo git2 or vendored-openssl features.
Contributors
Thanks to the people who made this release happen!
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
About
jj is a Git-compatible version control system that is both simple and powerful. See the installation instructions to get started.
Release highlights
The experimental support from release 0.29.0 for transferring the change ID
to/from Git remotes has been enabled by default. The change ID is stored in
the Git commit itself (in a commit header called
change-id
), which meansit will be transferred by regular
git push
etc. Please let us know if yourun into any problems with it. You can disable it setting
git.write-change-id-header
. Note that some Git remotes (e.g GitLab) andsome Git commands (e.g.
git rebase
) do not preserve the change ids whenthey rewrite commits.
jj rebase
now automatically abandons divergent commits if another commitwith the same change ID is already present in the destination with identical
changes.
jj split
has gained--message
,--insert-before
,--insert-after
, and--destination
options.jj evolog
can show associated operations for commits created by new jjversions.
Breaking changes
The old
libgit2
code path for fetches and pushes has been removed,and the
git.subprocess
setting along with it.In templates, bookmark/tag/remote names are now formatted in revset symbol
notation. The type of
bookmark.remote()
is changed toOption<_>
.bookmark.remote() == "foo"
still works, butbookmark.remote().<method>()
might need
if(bookmark.remote(), ..)
to suppress error.jj rebase
now automatically abandons divergent commits if another commitwith the same change ID is already present in the destination with identical
changes. To keep these divergent commits, use the
--keep-divergent
flag.The deprecated
--skip-empty
flag forjj rebase
has been removed. Use the--skip-emptied
flag instead.The deprecated
jj branch
subcommands have been removed. Use thejj bookmark
subcommands instead.jj util completion
now requires the name of the shell as a positionalargument and no longer produces Bash completions by default. The deprecated
optional arguments for different shells have been removed.
(Update: this entry was mistakenly omitted in the release notes previously)
External diff tools are now run in the temporary directory containing
the before (
left
) and after (right
) directories, making diffs appearmore pleasing for tools that display file paths prominently. Users can
opt out of this by setting
merge-tools.<tool>.diff-do-chdir = false
,but this will likely be removed in a future release. Please report any
issues you run into.
Deprecations
The
ui.diff.format
andui.diff.tool
config options have been merged asui.diff-formatter
. The builtin format can be specified as:<format>
(e.g.
ui.diff-formatter=":git"
for Git diffs.)The
.normal_hex()
method will be removed from theCommitId
template type.It's useful only for the
ChangeId
type.New features
jj split
has gained a--message
option to set the description of thecommit with the selected changes.
jj split
has gained the ability to place the revision with the selectedchanges anywhere in the revision tree with the
--insert-before
,--insert-after
and--destination
command line flags.Added
git.track-default-bookmark-on-clone
setting to control whether totrack the default remote bookmark on
jj git clone
.Templates can now do arithmetic on integers with the
+
,-
,*
,/
, and%
infix operators.Evolution history is now stored in the operation log.
jj evolog
can showassociated operations for commits created by new jj versions.
Fixed bugs
Work around a git issue that could cause subprocess operations to hang if the
core.fsmonitor
gitconfig is set in the global or system gitconfigs.#6440
jj parallelize
can now parallelize groups of changes that start with animmutable change, but do not contain any other immutable changes.
jj
will no longer warn about deprecated paths on macOS if the configuredXDG directory is the deprecated one (~/Library/Application Support).
The builtin diff editor now correctly handles splitting changes where a file
is replaced by a directory of the same name.
#5189
Packaging changes
libgit2
code path, packagers should remove anydependencies on
libgit2
,libssh2
, Zlib, OpenSSL, andpkg-config
, andensure they are not setting the Cargo
git2
orvendored-openssl
features.Contributors
Thanks to the people who made this release happen!
This discussion was created from the release v0.30.0.
Beta Was this translation helpful? Give feedback.
All reactions