v0.19.0
jj-vcs/jjv0.19.0Jul 5, 2024by martinvonz
AI Summary
This release focuses on revset parsing changes, command consolidation via the new `jj file` subcommand, and new features like Watchman integration and `jj branch move`.
Key Highlights
- Revset aliases now parse `kind:pattern` as a modifier; wrap in parentheses for string patterns.
- New `jj file` subcommand consolidates `cat`, `chmod`, and `files`.
- `jj branch move` allows moving branches by name or source revision.
- Support for Watchman triggers for background filesystem monitoring.
Breaking Changes
- Revset `kind:pattern` parsing changed.
- Repo format upgrade support dropped for versions < 0.12.0.
- `jj fix` default revset changed to `reachable(@, mutable())`.
- `jj branch delete`/`forget` `--glob` option dropped.
- `jj branch set` creates new branch instead of moving.
New Features
- `jj file` subcommand (show, chmod, list).
- `jj branch move` command.
- `jj diff --name-only` option.
- `jj git push -c` accepts revsets.
- `jj prev`/`next` `--conflict` flag.
- `jj git remote set-url` command.
- `jj commit` `--reset-author` option.
- `jj squash` `--keep-emptied` option.
Full Release Notes
### 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](https://github.com/martinvonz/jj/issues/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](https://github.com/martinvonz/jj/issues/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](docs/config.md#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](https://github.com/martinvonz/jj/issues/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](https://github.com/martinvonz/jj/issues/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](https://github.com/martinvonz/jj/issues/2476) ### Contributors Thanks to the people who made this release happen! * Austin Seipp (@thoughtpolice) * Benjamin Tan (@bnjmnt4n) * Daniel Ploch (@torquestomp) * Danny Hooper (@hooper) * Ilya Grigoriev (@ilyagr) * James Sully (@sullyj3) * Jonathan Tan (@jonathantanmy) * Kyle J Strand (@BatmanAoD) * Manuel Caldeira (@KiitoX) * Martin von Zweigbergk (@martinvonz) * Matt Kulukundis (@fowles) * Matt Stark (@matts1) * mlcui (@mlcui-corp) * Philip Metzger (@PhilipMetzger) * Scott Taylor (@scott2000) * Simon Wollwage (@Kintaro) * Tal Pressman (@tp-woven) * Yuya Nishihara (@yuja)