github martinvonz/jj v0.11.0

latest releases: v0.23.0, v0.22.0, v0.21.0...
12 months ago

Breaking changes

  • Conflicts are now stored in a different way. Commits written by a new jj
    binary will not be read correctly by older jj binaries. The new model
    solves some performance problems with the old model. For example, jj log
    should be noticeably faster on large repos. You may need to create a new
    clone to see the full speedup.

  • The remote_branches() revset now includes branches exported to the Git
    repository (so called Git-tracking branches.) Use
    remote_branches(remote=exact:"origin") to query branches of certain remote.

  • Status messages are now printed to stderr.

  • jj config set now interprets the value as TOML also if it's a valid TOML
    array or table. For example, jj config set --user 'aliases.n' '["new"]'

  • Remote branches now have tracking or non-tracking flags. The
    git.auto-local-branch setting is applied only to newly fetched remote
    branches. Existing remote branches are migrated as follows:

    • If local branch exists, the corresponding remote branches are considered
      tracking branches.
    • Otherwise, the remote branches are non-tracking branches.

    If the deduced tracking flags are wrong, use jj branch track/untrack
    commands to fix them up.

    See automatic local branch creation
    for details.

  • Non-tracking remote branches aren't listed by default. Use jj branch list --all to show all local and remote branches.

  • It's not allowed to push branches if non-tracking remote branches of the same
    name exist.

  • Pushing deleted/moved branches no longer abandons the local commits referenced
    by the remote branches.

  • jj git fetch --branch now requires glob: prefix to expand * in branch
    name.

New features

  • jj's stable release can now be installed with cargo binstall jj-cli.

  • jj workspace add now takes a --revision argument.

  • jj workspace forget can now forget multiple workspaces at once.

  • branches()/remote_branches()/author()/committer()/description()
    revsets now support glob matching.

  • jj branch delete/forget/list, and jj git push --branch now support
    string pattern syntax. The --glob option
    is deprecated in favor of glob: pattern.

  • The branches/tags/git_refs/git_head template keywords now return a
    list of RefNames. They were previously pre-formatted strings.

  • The new template keywords local_branches/remote_branches are added to show
    only local/remote branches.

  • jj workspace add now preserves all parents of the old working-copy commit
    instead of just the first one.

  • jj rebase -r gained the ability to rebase a revision A onto a descendant
    of A.

Fixed bugs

  • Updating the working copy to a commit where a file that's currently ignored
    in the working copy no longer leads to a crash
    (#976).

  • Conflicts in executable files can now be resolved just like conflicts in
    non-executable files (#1279).

  • jj new --insert-before and --insert-after now respect immutable revisions
    (#2468).

Contributors

Thanks to the people who made this release happen!

Don't miss a new jj release

NewReleases is sending notifications on new releases.