Skip to content

v0.19.0

Compare
Choose a tag to compare
@martinvonz martinvonz released this 05 Jul 02:59

Breaking changes

  • In revset aliases, top-level kind:pattern expression is now parsed as
    modifier. Surround with parentheses if it should be parsed as string/file
    pattern.

  • Dropped support for automatic upgrade of repo formats used by versions before
    0.12.0.

  • jj fix now defaults to the broader revset -s reachable(@, mutable())
    instead of -s @.

  • Dropped support for deprecated jj branch delete/forget --glob option.

  • jj branch set now creates new branch if it doesn't exist. Use jj branch move to ensure that the target branch already exists.
    #3584

Deprecations

  • Replacing -l shorthand for --limit with -n in jj log, jj op log
    and jj obslog.

  • jj split --siblings is deprecated in favor of jj split --parallel (to
    match jj parallelize).

  • A new jj file subcommand now replaces several existing uncategorized
    commands, which are deprecated.

    • jj file show replaces jj cat.
    • jj file chmod replaces jj chmod.
    • jj file list replaces jj files.

New features

  • Support background filesystem monitoring via watchman triggers enabled with
    the core.watchman.register_snapshot_trigger = true config.

  • Show paths to config files when configuration errors occur.

  • jj fix now supports configuring the default revset for -s using the
    revsets.fix config.

  • The descendants() revset function now accepts an optional depth argument;
    like the ancestors() depth argument, it limits the depth of the set.

  • Revset/template aliases now support function overloading.
    #2966

  • Conflicted files are individually simplified before being materialized.

  • The jj file subcommand now contains several existing file utilities.

    • jj file show, replacing jj cat.
    • jj file chmod replacing jj chmod.
    • jj file list replacing jj files.
  • New command jj branch move let you update branches by name pattern or source
    revision.

  • New diff option jj diff --name-only allows for easier shell scripting.

  • In color-words diffs, hunks are now highlighted with underline. See diff
    colors and styles
    for customization.

  • jj git push -c <arg> can now accept revsets that resolve to multiple
    revisions. This means that jj git push -c xyz -c abc is now equivalent to
    jj git push -c 'all:(xyz | abc)'.

  • jj prev and jj next have gained a --conflict flag which moves you
    to the next conflict in a child commit.

  • New command jj git remote set-url that sets the url of a git remote.

  • Author timestamp is now reset when rewriting discardable commits (empty
    commits with no description) if authored by the current user.
    #2000

  • jj commit now accepts --reset-author option to match jj describe.

  • jj squash now accepts a --keep-emptied option to keep the source commit.

Fixed bugs

  • jj git push now ignores immutable commits when checking whether a
    to-be-pushed commit has conflicts, or has no description / committer / author
    set. #3029

  • jj will look for divergent changes outside the short prefix set even if it
    finds the change id inside the short prefix set.
    #2476

Contributors

Thanks to the people who made this release happen!