v0.10.0

jj-vcs/jjv0.10.0Oct 5, 2023by martinvonz

AI Summary

This release introduces a default `trunk()` revset alias, adds an optional `depth` argument to the `ancestors()` function, enables the Watchman filesystem monitor by default, and improves interactive workflows with `jj split` and `jj commit`.

Key Highlights

  • Default revset-alias function `trunk()` now exists.
  • The `ancestors()` revset function now takes an optional `depth` argument.
  • Support for the Watchman filesystem monitor is now bundled by default.
  • The `jj split` command supports the `--interactive` flag.
  • Templates now support an additional escape: `\0` for literal null bytes.

Breaking Changes

  • A default revset-alias function `trunk()` now exists. If you previously defined your own `trunk()` alias it will continue to overwrite the built-in one.

New Features

  • `jj op log` now supports `--no-graph`.
  • jj now bundles a TUI tool to use as the default diff and merge editors.
  • `jj commit` accepts an optional list of paths and the `--interactive` flag.
  • You can now configure the set of immutable commits via `revset-aliases.immutable_heads()`.

Full Release Notes

### Breaking changes

* A default revset-alias function `trunk()` now exists. If you previously defined
  your own `trunk()` alias it will continue to overwrite the built-in one.
  Check [revsets.toml](cli/src/config/revsets.toml) and [revsets.md](docs/revsets.md)
  to understand how the function can be adapted.

### New features

* The `ancestors()` revset function now takes an optional `depth` argument 
  to limit the depth of the ancestor set. For example, use `jj log -r 
  'ancestors(@, 5)` to view the last 5 commits.

* Support for the Watchman filesystem monitor is now bundled by default. Set
  `core.fsmonitor = "watchman"` in your repo to enable.

* You can now configure the set of immutable commits via
  `revset-aliases.immutable_heads()`. For example, set it to
  `"remote_branches() | tags()"` to prevent rewriting those those. Their
  ancestors are implicitly also immutable.

* `jj op log` now supports `--no-graph`.

* Templates now support an additional escape: `\0`. This will output a literal
  null byte. This may be useful for e.g.
  `jj log -T 'description ++ "\0"' --no-graph` to output descriptions only, but
  be able to tell where the boundaries are

* jj now bundles a TUI tool to use as the default diff and merge editors. (The
  previous default was `meld`.)

* `jj split` supports the `--interactive` flag. (This is already the default if
  no paths are provided.)

* `jj commit` accepts an optional list of paths indicating a subset of files to
  include in the first commit

* `jj commit` accepts the `--interactive` flag.

### Fixed bugs

### Contributors

Thanks to the people who made this release happen!

* Austin Seipp (@thoughtpolice)
* Emily Kyle Fox (@emilykfox)
* glencbz (@glencbz)
* Hong Shin (@honglooker)
* Ilya Grigoriev (@ilyagr)
* James Sully (@sullyj3)
* Martin von Zweigbergk (@martinvonz)
* Philip Metzger (@PhilipMetzger)
* Ruben Slabbert (@rslabbert)
* Vamsi Avula (@avamsi)
* Waleed Khan (@arxanas)
* Willian Mori (@wmrmrx))
* Yuya Nishihara (@yuja)
* Zachary Dremann (@Dr-Emann)