Jujutsu is a Git-compatible DVCS. It combines features from Git (data model,
distributed file system).
to replace (rare in English). The project is called "Jujutsu" because it
2025-03-10 16:31:13 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.27.0.
## [0.27.0] - 2025-03-05
### Release highlights
* `git.subprocess` is now enabled by default, improving compatibility with Git
fetches and pushes by spawning an external `git` process. Users can opt out
of this by setting `git.subprocess = false`, but this will likely be removed
in a future release. Please report any issues you run into.
### Breaking changes
* Bookmark name to be created/updated is now parsed as [a revset
symbol](docs/revsets.md#symbols). Quotation may be needed in addition to shell
quotes. Example: `jj bookmark create -r@- "'name with space'"`
* `jj bookmark create`, `jj bookmark set` and `jj bookmark move` onto a hidden
commit make it visible.
* `jj bookmark forget` now untracks any corresponding remote bookmarks instead
of forgetting them, since forgetting a remote bookmark can be unintuitive.
The old behavior is still available with the new `--include-remotes` flag.
* `jj fix` now always sets the working directory of invoked tools to be the
workspace root, instead of the working directory of the `jj fix`.
* The `ui.allow-filesets` configuration option has been removed.
[The "fileset" language](docs/filesets.md) has been enabled by \
default since v0.20.
* `templates.annotate_commit_summary` is renamed to `templates.file_annotate`,
and now has an implicit `self` parameter of type `AnnotationLine`, instead of
`Commit`. All methods on `Commit` can be accessed with `commit.method()`, or
`self.commit().method()`.
### Deprecations
* This release takes the first steps to make target revision required in
`bookmark create`, `bookmark move` and `bookmark set`. Those commands will display
a warning if the user does not specify target revision explicitly. In the near
future those commands will fail if target revision is not specified.
* The `signing.sign-all` config option has been deprecated in favor of
`signing.behavior`. The new option accepts `drop` (never sign), `keep` (preserve
existing signatures), `own` (sign own commits), or `force` (sign all commits).
Existing `signing.sign-all = true` translates to `signing.behavior = \
"own"`, and
`false` translates to `"keep"`. Invalid configuration is now an error.
### New features
* The new `jj sign` and `jj unsign` commands allow for signing/unsigning commits.
`jj sign` supports configuring the default revset through `revsets.sign` when
no `--revisions` arguments are provided.
* `jj git fetch` now supports [string pattern \
syntax](docs/revsets.md#string-patterns)
on `--remote` option and `git.fetch` configuration.
* Template functions `truncate_start()` and `truncate_end()` gained an optional
`ellipsis` parameter; passing this prepends or appends the ellipsis to the
content if it is truncated to fit the maximum width.
* Templates now support `stringify(x)` function and string method
`.escape_json()`. The latter serializes the string in JSON format. It is
useful for making machine-readable templates by escaping problematic
characters like `\n`.
* Templates now support `trim()`, `trim_start()` and `trim_end()` methods
which remove whitespace from the start and end of a `String` type.
* The description of commits backed out by `jj backout` can now be configured
using `templates.backout_description`.
* New `AnnotationLine` templater type. Used in `templates.file_annotate`.
Provides `self.commit()`, `.content()`, `.line_number()`, and
`.first_line_in_hunk()`.
* Templates now have `format_short_operation_id(id)` function for users to
customize the default operation id representation.
* The `jj init`/`jj revert` stubs that print errors can now be overridden with
aliases. All of `jj clone/init/revert` add a hint to a generic error.
* Help text is now colored (when stdout is a terminal).
* Commands that used to suggest `--ignore-immutable` now print the number of
immutable commits that would be rewritten if used and a link to the docs.
* `jj undo` now shows a hint when undoing an undo operation that the user may
be looking for `jj op restore` instead.
### Fixed bugs
* `jj status` now shows untracked files under untracked directories.
[#5389](https://github.com/jj-vcs/jj/issues/5389)
* Added workaround for the bug that untracked files are ignored when watchman is
enabled. [#5728](https://github.com/jj-vcs/jj/issues/5728)
* The `signing.backends.ssh.allowed-signers` configuration option will now
expand `~/` to `$HOME/`.
[#5626](https://github.com/jj-vcs/jj/pull/5626)
* `config-schema.json` now allows arrays of strings for the settings `ui.editor`
and `ui.diff.tool`.
* `config-schema.json` now allows an array of strings or nested table for the
`ui.pager` setting.
|
2025-02-09 22:21:14 by Thomas Klausner | Files touched by this commit (7) |  |
Log message:
jj: update to 0.26.0.
## [0.26.0] - 2025-02-05
### Release highlights
* Improved Git push/fetch compatibility by spawning an external `git` process.
This can be enabled by the `git.subprocess=true` config knob, and will be the
default in a future release.
* `jj log` can now show cryptographic commit signatures. The output can be
controlled by the `ui.show-cryptographic-signatures=true` config knob.
### Breaking changes
* `jj abandon` now deletes bookmarks pointing to the revisions to be abandoned.
Use `--retain-bookmarks` to move bookmarks backwards. If deleted bookmarks
were tracking remote bookmarks, the associated bookmarks (or branches) will be
deleted from the remote on `jj git push --all`.
[#3505](https://github.com/jj-vcs/jj/issues/3505)
* `jj init --git` and `jj init --git-repo` have been removed. They were
deprecated in early 2024. Use `jj git init` instead.
* The following deprecated commands have been removed:
- `jj cat` is replaced by `jj file show`.
- `jj chmod` is replaced by `jj file chmod`.
- `jj files` is replaced by `jj file list`.
* The deprecated `-l` short alias for `--limit` in `jj log`, `jj op log`
and `jj obslog` has been removed. The `-n` short alias can be used instead.
* The deprecated `--siblings` options for `jj split` has been removed.
`jj split --parallel` can be used instead.
* The deprecated `fix.tool-command` config option has been removed.
* In colocated repos, the Git index now contains the changes from all parents
of the working copy instead of just the first parent (`HEAD`). 2-sided
conflicts from the merged parents are now added to the Git index as conflicts
as well.
* The following change introduced in 0.25.0 is reverted:
- `jj config list` now prints inline tables `{ key = value, .. }` literally.
Inner items of inline tables are no longer merged across configuration
files.
* `jj resolve` will now attempt to resolve all conflicted files instead of
resolving the first conflicted file. To resolve a single file, pass a file
path to `jj resolve`.
* `jj util mangen` is replaced with `jj util install-man-pages`, which can
install man pages for all `jj` subcommands to a given path.
* In `jj config list` template, `value` is now typed as `ConfigValue`, not as
`String` serialized in TOML syntax.
* `jj git remote add`/`set-url` now converts relative Git remote path to
absolute path.
* `jj log`/`op log` now applies `-n`/`--limit` *before* the items are reversed.
Rationale: It's more useful to see the N most recent commits/operations, and
is more performant. The old behavior can be achieved by `jj log .. | head`.
[#5403](https://github.com/jj-vcs/jj/issues/5403)
* Upgraded `scm-record` from v0.4.0 to v0.5.0. See release notes at
<https://github.com/arxanas/scm-record/releases/tag/v0.5.0>.
* The builtin pager is switched to
[streampager](https://github.com/markbt/streampager/). It can handle large
inputs better and can be configured.
* Conflicts materialized in the working copy before `jj 0.19.0` may no longer
be parsed correctly. If you are using version 0.18.0 or earlier, check out a
non-conflicted commit before upgrading to prevent issues.
### Deprecations
### New features
* `jj git {push,clone,fetch}` can now spawn an external `git` subprocess, via
the `git.subprocess = true` config knob. This provides an alternative that,
when turned on, fixes SSH bugs when interacting with Git remotes due to
`libgit2`s limitations [#4979](https://github.com/jj-vcs/jj/issues/4979).
* `jj describe` now accepts `--edit`.
* `jj evolog` and `jj op log` now accept `--reversed`.
* `jj restore` now supports `-i`/`--interactive` selection.
* `jj file list` now supports templating.
* There is a new `builtin_op_log_oneline` template alias you can pass to `jj op
log -T` for a more compact output. You can use `format_operation_oneline` and
`format_snapshot_operation_oneline` to customize parts of it.
* New template function `config(name)` to access to configuration variable from
template.
* New template function `pad_centered()` to center content within a minimum
width.
* Templater now supports `list.filter(|x| ..)` method.
* The `diff` commit template keyword now supports custom formatting via
`diff.files()`. For example, `diff.files().map(|e| e.path().display())` prints
changed file paths.
* The `diff.stat()` template method now provides methods to get summary values.
* `jj log` can now show cryptographic commit signatures. The output can be
controlled by the `ui.show-cryptographic-signatures=true` config knob. The
signature template can be customized using
`format_detailed_cryptographic_signature(signature)` and
`format_short_cryptographic_signature(signature)`.
* New `git.sign-on-push` config option to automatically sign commits which are
being pushed to a Git remote.
* New `git.push-new-bookmarks` config option to push new bookmarks without
`--allow-new`.
* `jj status` now shows untracked files when they reside directly under a
tracked directory. There's still an issue that files under untracked
directories aren't listed. [#5389](https://github.com/jj-vcs/jj/issues/5389)
* New `merge-tools.<TOOL>.diff-expected-exit-codes` config option to suppress
warnings from tools exiting with non-zero exit codes.
* New `fix.tools.TOOL.enabled` config option to enable/disable tools. This is
useful for defining disabled tools in user configuration that can be enabled
in individual repositories with one config setting.
* Added `--into` flag to `jj restore`, similarly to `jj squash` and `jj
absorb`. It is equivalent to `--to`, but `--into` is the recommended name.
* Italic text is now supported. You can set e.g. `color.error = { fg = \
"red",
italic = true }` in your config.
* New `author_name`/`author_email`/`committer_name`/`committer_email(pattern)`
revset functions to match either name or email field explicitly.
* New `subject(pattern)` revset function that matches first line of commit
descriptions.
* Conditional configuration now supports `--when.commands` to change
configuration based on subcommand.
* The Jujutsu documentation site now publishes a schema for the official
configuration file, which can be integrated into your editor for autocomplete,
inline errors, and more.
Please [see the documentation](/docs/config.md#json-schema-support) for more
on this.
### Fixed bugs
* `jj git fetch` with multiple remotes will now fetch from all remotes before
importing refs into the jj repo. This fixes a race condition where the
treatment of a commit that is found in multiple fetch remotes depended on the
order the remotes were specified.
* Fixed diff selection by external tools with `jj split`/`commit -i FILESETS`.
[#5252](https://github.com/jj-vcs/jj/issues/5252)
* Conditional configuration now applies when initializing new repository.
[#5144](https://github.com/jj-vcs/jj/issues/5144)
* `[diff.<format>]` configuration now applies to \
`.diff().<format>()` commit
template methods.
* Conflicts at the end of files which don't end with a newline character are
now materialized in a way that can be parsed correctly.
[#3968](https://github.com/jj-vcs/jj/issues/3968)
* Bookmark and remote names written by `jj git clone` to
`revset-aliases.'trunk()'` are now escaped if necessary.
[#5359](https://github.com/jj-vcs/jj/issues/5359)
|
2025-01-07 14:00:56 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.25.0.
## [0.25.0] - 2025-01-01
### Release highlights
It's the holidays, and this release was overall pretty quiet, without many major
changes. Two select improvements:
* Improvements to configuration management, including support for [conditional
variables](docs/config.md#conditional-variables) in config files.
* Large files in the working copy will no longer cause commands to fail; instead
the large files will remain intact but untracked in the working copy.
### Breaking changes
* Configuration variables are no longer "stringly" typed. For example, \
`true` is
not converted to a string `"true"`, and vice versa.
* The following configuration variables are now parsed strictly:
`colors.<labels>`, `git.abandon-unreachable-commits`,
`git.auto-local-bookmark`, `git.push-bookmark-prefix`, `revsets.log`,
`revsets.short-prefixes` `signing.backend`, `operation.hostname`,
`operation.username`, `ui.allow-init-native`, `ui.color`,
`ui.default-description`, `ui.progress-indicator`, `ui.quiet`, `user.email`,
`user.name`
* `jj config list` now prints inline tables `{ key = value, .. }` literally.
Inner items of inline tables are no longer merged across configuration files.
See [the table syntax
documentation](docs/config.md#dotted-style-headings-and-inline-tables) for
details.
* `jj config edit --user` now opens a file even if `$JJ_CONFIG` points to a
directory. If there are multiple config files, the command will fail.
* `jj config set` no longer accepts a bare string value that looks like a TOML
expression. For example, `jj config set NAME '[foo]'` must be quoted as `jj
config set NAME '"[foo]"'`.
* The deprecated `[alias]` config section is no longer respected. Move command
aliases to the `[aliases]` section.
* `jj absorb` now abandons the source commit if it becomes empty and has no
description.
### Deprecations
* `--config-toml=TOML` is deprecated in favor of `--config=NAME=VALUE` and
`--config-file=PATH`.
* The `Signature.username()` template method is deprecated for
`Signature().email().local()`.
### New features
* `jj` command no longer fails due to new working-copy files larger than the
`snapshot.max-new-file-size` config option. It will print a warning and large
files will be left untracked.
* Configuration files now support [conditional
variables](docs/config.md#conditional-variables).
* New command options `--config=NAME=VALUE` and `--config-file=PATH` to set
string value without quoting and to load additional configuration from files.
* Templates now support the `>=`, `>`, `<=`, and `<` relational \
operators for
`Integer` types.
* A new Email template type is added. `Signature.email()` now returns an Email
template type instead of a String.
* Adds a new template alias `commit_timestamp(commit)` which defaults to the
committer date.
* Conflict markers are now allowed to be longer than 7 characters, allowing
conflicts to be materialized and parsed correctly in files which already
contain lines that look like conflict markers.
* New `$marker_length` variable to allow merge tools to support longer conflict
markers (equivalent to "%L" for Git merge drivers).
* `jj describe` now accepts a `JJ: ignore-rest` line that ignores everything
below it, similar to a "scissor line" in git. When editing multiple \
commits,
only ignore until the next `JJ: describe` line.
### Fixed bugs
* The `$NO_COLOR` environment variable must now be non-empty to be respected.
* Fixed incompatible rendering of empty hunks in git/unified diffs.
[#5049](https://github.com/jj-vcs/jj/issues/5049)
* Fixed performance of progress bar rendering when fetching from Git remote.
[#5057](https://github.com/jj-vcs/jj/issues/5057)
* `jj config path --user` no longer creates new file at the default config path.
* On Windows, workspace paths (printed by `jj root`) no longer use UNC-style
`\\?\` paths unless necessary.
* On Windows, `jj git clone` now converts local Git remote path to
slash-separated path.
* `jj resolve` no longer removes the executable bit on resolved files when using
an external merge tool.
|
2024-12-11 11:28:18 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.24.0.
## [0.24.0] - 2024-12-04
### Breaking changes
* `jj move` has been removed. It was deprecated in 0.16.0.
* `jj checkout` and the built-in alias `jj co` have been removed.
It was deprecated in 0.14.0.
* `jj merge` has been removed. It was deprecated in 0.14.0.
* `jj git push` no longer pushes new bookmarks by default. Use `--allow-new` to
bypass this restriction.
* Lines prefixed with "JJ:" in commit descriptions and in sparse \
patterns (from
`jj sparse edit`) are now stripped even if they are not immediately followed
by a space. [#5004](https://github.com/martinvonz/jj/issues/5004)
### Deprecations
### New features
* Templates now support the `==` and `!=` logical operators for `Boolean`,
`Integer`, and `String` types.
* New command `jj absorb` that moves changes to stack of mutable revisions.
* New command `jj util exec` that can be used for arbitrary aliases.
* `jj rebase -b` can now be used with the `--insert-after` and `--insert-before`
options, like `jj rebase -r` and `jj rebase -s`.
* A preview of improved shell completions was added. Please refer to the
\
[documentation](https://martinvonz.github.io/jj/latest/install-and-setup/#command-line-completion)
to activate them. They additionally complete context-dependent, dynamic values
like bookmarks, aliases, revisions, operations and files.
* Added the config setting `snapshot.auto-update-stale` for automatically
running `jj workspace update-stale` when applicable.
* `jj duplicate` now accepts `--destination`, `--insert-after` and
`--insert-before` options to customize the location of the duplicated
revisions.
* `jj log` now displays the working-copy branch first.
* New `fork_point()` revset function can be used to obtain the fork point
of multiple commits.
* The `tags()` revset function now takes an optional `pattern` argument,
mirroring that of `bookmarks()`.
* Several commands now support `-f/-t` shorthands for `--from/--to`:
- `diff`
- `diffedit`
- `interdiff`
- `op diff`
- `restore`
* New `ui.conflict-marker-style` config option to change how conflicts are
materialized in the working copy. The default option ("diff") renders
conflicts as a snapshot with a list of diffs to apply to the snapshot.
The new "snapshot" option renders conflicts as a series of \
snapshots, showing
each side and base of the conflict. The new "git" option replicates Git's
"diff3" conflict style, meaning it is more likely to work with \
external tools,
but it doesn't support conflicts with more than 2 sides.
* New `merge-tools.<TOOL>.conflict-marker-style` config option to override the
conflict marker style used for a specific merge tool.
* New `merge-tools.<TOOL>.merge-conflict-exit-codes` config option to allow a
merge tool to exit with a non-zero code to indicate that not all conflicts
were resolved.
* `jj simplify-parents` now supports configuring the default revset when no
`--source` or `--revisions` arguments are provided with the
`revsets.simplify-parents` config.
### Fixed bugs
* `jj config unset <TABLE-NAME>` no longer removes a table (such as `[ui]`.)
|
2024-11-10 10:56:13 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.23.0.
## [0.23.0] - 2024-11-06
### Security fixes
* Fixed path traversal by cloning/checking out crafted Git repository containing
`..`, `.jj`, `.git` paths.
\
([GHSA-88h5-6w7m-5w56](https://github.com/martinvonz/jj/security/advisories/GHSA-88h5-6w7m-5w56);CVE-2024-51990)
### Breaking changes
* Revset function names can no longer start with a number.
* Evaluation error of `revsets.short-prefixes` configuration is now reported.
* The `HEAD@git` symbol no longer resolves to the Git HEAD revision. Use
`git_head()` or `@-` revset expression instead. The `git_head` template
keyword now returns a boolean.
* Help command doesn't work recursively anymore, i.e. `jj workspace help root`
doesn't work anymore.
* The color label `op_log` from the `[colors]` config section now **only**
applies to the op log and not to the other places operations are displayed. In
almost all cases, if you configured `op_log` before, you should use the new
`operation` label instead.
* Default operation log template now shows end times of operations instead of
start times.
### Deprecations
* `git.auto-local-bookmark` replaces `git.auto-local-branch`. The latter remains
supported for now (at lower precedence than the former).
### New features
* Added diff options to ignore whitespace when comparing lines. Whitespace
changes are still highlighted.
* New command `jj simplify-parents` will remove redundant parent edges.
* `jj squash` now supports `-f/-t` shorthands for `--from/--[in]to`.
* Initial support for shallow Git repositories has been implemented. However,
deepening the history of a shallow repository is not yet supported.
* `jj git clone` now accepts a `--depth <DEPTH>` option, which
allows to clone the repository with a given depth.
* New command `jj file annotate` that annotates files line by line. This is similar
in functionality to `git blame`. Invoke the command with `jj file annotate \
<file_path>`.
The output can be customized via the `templates.annotate_commit_summary`
config variable.
* `jj bookmark list` gained a `--remote REMOTE` option to display bookmarks
belonging to a remote. This option can be combined with `--tracked` or
`--conflicted`.
* New command `jj config unset` that unsets config values. For example,
`jj config unset --user user.name`.
* `jj help` now has the flag `--keyword` (shorthand `-k`), which can give help
for some keywords (e.g. `jj help -k revsets`). To see a list of the available
keywords you can do `jj help --help`.
* New `at_operation(op, expr)` revset can be used in order to query revisions
based on historical state.
* String literals in filesets, revsets and templates now support hex bytes
(with `\e` as escape / shorthand for `\x1b`).
* New `coalesce(revsets...)` revset which returns commits in the first revset
in the `revsets` list that does not evaluate to `none()`.
* New template function `raw_escape_sequence(...)` preserves escape sequences.
* Timestamp objects in templates now have `after(date) -> Boolean` and
`before(date) -> Boolean` methods for comparing timestamps to other dates.
* New template functions `pad_start()`, `pad_end()`, `truncate_start()`, and
`truncate_end()` are added.
* Add a new template alias `bultin_log_compact_full_description()`.
* Added the config settings `diff.color-words.context` and `diff.git.context` to
control the default number of lines of context shown.
### Fixed bugs
* Error on `trunk()` revset resolution is now handled gracefully.
[#4616](https://github.com/martinvonz/jj/issues/4616)
* Updated the built-in diff editor `scm-record` to version
[0.4.0](https://github.com/arxanas/scm-record/releases/tag/v0.4.0), which
includes multiple fixes.
|
2024-10-08 17:29:58 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.22.0.
## [0.22.0] - 2024-10-02
### Breaking changes
* Fixing [#4239](https://github.com/martinvonz/jj/issues/4239) means the
ordering of some messages have changed.
* Invalid `ui.graph.style` configuration is now an error.
* The builtin template `branch_list` has been renamed to `bookmark_list` as part
of the `jj branch` deprecation.
### Deprecations
* `jj branch` has been deprecated in favor of `jj bookmark`.
**Rationale:** Jujutsu's branches don't behave like Git branches, which a
confused many newcomers, as they expected a similar behavior given the name.
We've renamed them to "bookmarks" to match the actual behavior, as \
we think
that describes them better, and they also behave similar to Mercurial's
bookmarks.
* `jj obslog` is now called `jj evolution-log`/`jj evolog`. `jj obslog` remains
as an alias.
* `jj unsquash` has been deprecated in favor of `jj squash` and
`jj diffedit --restore-descendants`.
**Rationale:** `jj squash` can be used in interactive mode to pull
changes from one commit to another, including from a parent commit
to a child commit. For fine-grained dependent diffs, such as when
the parent and the child commits must successively modify the same
location in a file, `jj diffedit --restore-descendants` can be used
to set the parent commit to the desired content without altering the
content of the child commit.
* The `git.push-branch-prefix` config has been deprecated in favor of
`git.push-bookmark-prefix`.
* `conflict()` and `file()` revsets have been renamed to `conflicts()` and `files()`
respectively. The old names are still around and will be removed in a future
release.
### New features
* The new config option `snapshot.auto-track` lets you automatically track only
the specified paths (all paths by default). Use the new `jj file track`
command to manually tracks path that were not automatically tracked. There is
no way to list untracked files yet. Use `git status` in a colocated workspace
as a workaround.
[#323](https://github.com/martinvonz/jj/issues/323)
* `jj fix` now allows fixing unchanged files with the \
`--include-unchanged-files` flag. This
can be used to more easily introduce automatic formatting changes in a new
commit separate from other changes.
* `jj workspace add` now accepts a `--sparse-patterns=<MODE>` option, which
allows control of the sparse patterns for a newly created workspace: `copy`
(inherit from parent; default), `full` (full working copy), or `empty` (the
empty working copy).
* New command `jj workspace rename` that can rename the current workspace.
* `jj op log` gained an option to include operation diffs.
* `jj git clone` now accepts a `--remote <REMOTE NAME>` option, which
allows to set a name for the remote instead of using the default
`origin`.
* `jj op undo` now reports information on the operation that has been undone.
* `jj squash`: the `-k` flag can be used as a shorthand for `--keep-emptied`.
* CommitId / ChangeId template types now support `.normal_hex()`.
* `jj commit` and `jj describe` now accept `--author` option allowing to quickly \
change
author of given commit.
* `jj diffedit`, `jj abandon`, and `jj restore` now accept a `--restore-descendants`
flag. When used, descendants of the edited or deleted commits will keep their \
original
content.
* `jj git fetch -b <remote-git-branch-name>` will now warn if the branch(es)
can not be found in any of the specified/configured remotes.
* `jj split` now lets the user select all changes in interactive mode. This may \
be used
to keeping all changes into the first commit while keeping the current commit
description for the second commit (the newly created empty one).
* Author and committer names are now yellow by default.
### Fixed bugs
* Update working copy before reporting changes. This prevents errors during reporting
from leaving the working copy in a stale state.
* Fixed panic when parsing invalid conflict markers of a particular form.
([#2611](https://github.com/martinvonz/jj/pull/2611))
* Editing a hidden commit now makes it visible.
* The `present()` revset now suppresses missing working copy error. For example,
`present(@)` evaluates to `none()` if the current workspace has no
working-copy commit.
|
2024-09-13 10:13:43 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.21.0.
## [0.21.0] - 2024-09-04
### Breaking changes
* `next/prev` will no longer infer when to go into edit mode when moving from
commit to commit. It now either follows the flags `--edit|--no-edit` or it
gets the mode from `ui.movement.edit`.
### Deprecations
* `jj untrack` has been renamed to `jj file untrack`.
### New features
* Add new boolean config knob, `ui.movement.edit` for controlling the behaviour
of `prev/next`. The flag turns `edit` mode `on` and `off` permanently when set
respectively to `true` or `false`.
* All diff formats except `--name-only` now include information about copies and
moves. So do external diff tools in file-by-file mode. `jj status` also
includes information about copies and moves.
* Color-words diff has gained [an option to display complex changes as separate
lines](docs/config.md#color-words-diff-options). It's enabled by default. To
restore the old behavior, set `diff.color-words.max-inline-alternation = -1`.
* A tilde (`~`) at the start of the path will now be expanded to the user's home
directory when configuring a `signing.key` for SSH commit signing.
* When reconfiguring the author, warn that the working copy won't be updated
|
2024-07-07 14:46:33 by Thomas Klausner | Files touched by this commit (3) |  |
Log message:
jj: update to 0.19.0.
## [0.19.0] - 2024-07-03
### 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)
|