OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm/jujutsu?expand=0&rev=66
2228 lines
110 KiB
Plaintext
2228 lines
110 KiB
Plaintext
-------------------------------------------------------------------
|
||
Tue Feb 10 05:50:40 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- do not update cargo dependencies in cargo_vendor, as this causes
|
||
three tests to fail
|
||
|
||
-------------------------------------------------------------------
|
||
Fri Feb 6 06:21:51 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.38.0:
|
||
* Release highlights
|
||
- Per-repo and per-workspace config is now stored outside the
|
||
repo, for security reasons. This is not a breaking change
|
||
because we automatically migrate legacy repos to this new
|
||
format. .jj/repo/config.toml and .jj/workspace-config.toml
|
||
should no longer be used.
|
||
* Breaking changes
|
||
- The minimum supported git command version is now 2.41.0.
|
||
macOS users will need to either upgrade "Developer Tools" to
|
||
26 or install Git from e.g. Homebrew.
|
||
- Deprecated ui.always-allow-large-revsets setting and all:
|
||
revset modifier have been removed.
|
||
- <name>@<remote> revset symbols can also be resolved to remote
|
||
tags. Tags are prioritized ahead of bookmarks.
|
||
- Legacy placeholder support used for unset user.name or
|
||
user.email has been removed. Commits containing these values
|
||
will now be pushed with jj git push without producing an
|
||
error.
|
||
- If any side of a conflicted file is missing a terminating
|
||
newline, then the materialized file in the working copy will
|
||
no longer be terminated by a newline.
|
||
* Deprecations
|
||
- The revset function diff_contains() has been renamed to
|
||
diff_lines().
|
||
* New features
|
||
- jj git fetch now shows details of abandoned commits (change
|
||
IDs and descriptions) by default, matching the jj abandon
|
||
output format. #3081
|
||
- jj workspace root now accepts an optional --name argument to
|
||
show the root path of the specified workspace (defaults to
|
||
the current one). When given a workspace that was created
|
||
before this release, it errors out.
|
||
- jj git push --bookmark <name> will now automatically track
|
||
the bookmark if it isn't tracked with any remote already.
|
||
- Add git_web_url([remote]) template function that converts a
|
||
git remote URL to a web URL, suitable for opening in a
|
||
browser. Defaults to the "origin" remote.
|
||
- New divergent() revset function for divergent changes.
|
||
- String pattern values in revsets and templates can now be
|
||
substituted by aliases. For example, grep(x) =
|
||
description(regex:x) now works.
|
||
- A new config option
|
||
remotes.<name>.auto-track-created-bookmarks behaves similarly
|
||
to auto-track-bookmarks, but it only applies to bookmarks
|
||
created locally. Setting it to "*" is now the closest
|
||
replacement for the deprecated git.push-new-bookmarks option.
|
||
- jj tag list can now be filtered by revset.
|
||
- Conflict markers will use LF or CRLF as the line ending
|
||
according to the contents of the file. #7376
|
||
- New experimental jj git fetch --tag flag to fetch tags in the
|
||
same way as bookmarks. If specified, tags won't be fetched
|
||
implicitly, and only tags matching the pattern will be
|
||
fetched as <name>@<remote> tags. The fetched remote tags will
|
||
be tracked by the local tags of the same name.
|
||
- New remote_tags() revset function to query remote tags.
|
||
- New builtin hyperlink() template function that gracefully
|
||
falls back to text when outputting to a non-terminal, instead
|
||
of emitting raw OSC 8 escape codes. #7592
|
||
* Fixed bugs
|
||
- jj git init --colocate now refuses to run inside a Git
|
||
worktree, providing a helpful error message with
|
||
alternatives. #8052
|
||
- jj git push now ensures that tracked remote bookmarks are
|
||
updated even if there are no mappings in the Git fetch
|
||
refspecs. #5115
|
||
- jj git fetch/push now forwards most of git stderr outputs
|
||
such as authentication requests. #5760
|
||
- Conflicted bookmarks and tags in trunk() will no longer
|
||
generate verbose warnings. The configured trunk() alias will
|
||
temporarily be disabled. #8501
|
||
- Dynamic shell completion for jj config unset now only
|
||
completes configuration options which are set. #7774
|
||
- Dynamic shell completion no longer attempts to resolve
|
||
aliases at the completion position. This previously prevented
|
||
a fully-typed alias from being accepted on some shells and
|
||
replaced it entirely with its expansion on bash. Now, the
|
||
completion will only resolve the alias, and suggest
|
||
candidates accordingly, after the cursor has been advanced to
|
||
the next position. #7773
|
||
- Setting the editor via ui.editor, $EDITOR, or JJ_EDITOR now
|
||
respects shell quoting.
|
||
- jj gerrit upload will no longer swallow errors and surface if
|
||
changes fail to get pushed to gerrit. #8568
|
||
- jj file track --include-ignored now works when
|
||
fsmonitor.backend="watchman". #8427
|
||
- Conflict labels are now preserved correctly when restoring
|
||
files from commits with different conflict labels.
|
||
- The empty tree is now always written when the working copy is
|
||
empty. #8480
|
||
- When using the Watchman filesystem monitor, changes to
|
||
.gitignore now trigger a scan of the affected subtree so
|
||
newly unignored files are discovered. #8427
|
||
- --quiet now hides progress bars.
|
||
|
||
-------------------------------------------------------------------
|
||
Sun Jan 11 09:19:50 UTC 2026 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.37.0:
|
||
* Release highlights
|
||
A new syntax for referring to hidden and divergent change IDs
|
||
is available: xyz/n where n is a number. For instance, xyz/0
|
||
refers to the latest version of xyz, while xyz/1 refers to the
|
||
previous version of xyz. This allows you to perform actions
|
||
like jj restore --from xyz/1 --to xyz to restore xyz to its
|
||
previous contents, if you made a mistake. For divergent
|
||
changes, the numeric suffix will always be shown in the log,
|
||
allowing you to disambiguate them in a similar manner.
|
||
* Breaking changes
|
||
- String patterns in revsets, command
|
||
arguments, and configuration are now parsed as globs by
|
||
default. Use substring: or exact: prefix as needed.
|
||
- remotes.<name>.auto-track-bookmarks is now parsed the same
|
||
way they are in revsets and can be combined with logical
|
||
operators.
|
||
- jj bookmark track/untrack now accepts --remote argument. If
|
||
omitted, all remote bookmarks matching the bookmark names
|
||
will be tracked/untracked. The old <bookmark>@<remote> syntax
|
||
is deprecated in favor of <bookmark> --remote=<remote>.
|
||
- On Windows, symlinks that point to a path with / won't be
|
||
supported. This path is invalid on Windows.
|
||
- The template alias
|
||
format_short_change_id_with_hidden_and_divergent_info(commit)
|
||
has been replaced by
|
||
format_short_change_id_with_change_offset(commit).
|
||
- The following deprecated config options have been removed:
|
||
- git.push-bookmark-prefix
|
||
- ui.default-description
|
||
- ui.diff.format
|
||
- ui.diff.tool
|
||
- The deprecated commit_id.normal_hex() template method has
|
||
been removed.
|
||
- Template expansion that did not produce a terminating newline
|
||
will not be fixed up to provide one by jj log, jj evolog, or
|
||
jj op log.
|
||
- The diff conflict marker style can now use \\\\\\\ markers to
|
||
indicate the continuation of a conflict label from the
|
||
previous line.
|
||
* Deprecations
|
||
- The git_head() and git_refs() functions will be removed from
|
||
revsets and templates. git_head() should point to the
|
||
first_parent(@) revision in colocated repositories.
|
||
git_refs() can be approximated as
|
||
remote_bookmarks(remote=glob:*) | tags().
|
||
* New features
|
||
- Updated the executable bit representation in the local
|
||
working copy to allow ignoring executable bit changes on
|
||
Unix. By default we try to detect the filesystem's behavior,
|
||
but this can be overridden manually by setting
|
||
working-copy.exec-bit-change = "respect" | "ignore".
|
||
- jj workspace add now also works for empty destination
|
||
directories.
|
||
- jj git remote family of commands now supports different fetch
|
||
and push URLs.
|
||
- [colors] table now supports dim = true attribute.
|
||
- In color-words diffs, context line numbers are now rendered
|
||
with decreased intensity.
|
||
- Hidden and divergent commits can now be unambiguously
|
||
selected using their change ID combined with a numeric
|
||
suffix. For instance, if there are two commits with change ID
|
||
xyz, then one can be referred to as xyz/0 and the other can
|
||
be referred to as xyz/1. These suffixes are shown in the log
|
||
when necessary to make a change ID unambiguous.
|
||
- jj util gc now prunes unreachable files in
|
||
.jj/repo/store/extra to save disk space.
|
||
- Early version of a jj file search command for searching for a
|
||
pattern in files (like git grep).
|
||
- Conflict labels now contain information about where the sides
|
||
of a conflict came from (e.g. nlqwxzwn 7dd24e73 "first line
|
||
of description").
|
||
- --insert-before now accepts a revset that resolves to an
|
||
empty set when used with --insert-after. The behavior is
|
||
similar to --onto.
|
||
- jj tag list now supports --sort option.
|
||
- TreeDiffEntry type now has a display_diff_path() method that
|
||
formats renames/copies appropriately.
|
||
- TreeDiffEntry now has a status_char() method that returns
|
||
single-character status codes (M/A/D/C/R).
|
||
- CommitEvolutionEntry type now has a predecessors() method
|
||
which returns the predecessor commits (previous versions) of
|
||
the entry's commit.
|
||
- CommitEvolutionEntry type now has a inter_diff() method which
|
||
returns a TreeDiff between the entry's commit and its
|
||
predecessor version. Optionally accepts a fileset literal to
|
||
limit the diff.
|
||
- jj file annotate now reports an error for non-files instead
|
||
of succeeding and displaying no content.
|
||
- jj workspace forget now warns about unknown workspaces
|
||
instead of failing.
|
||
* Fixed bugs
|
||
- Broken symlink on Windows. #6934.
|
||
- Fixed failure on exporting moved/deleted annotated tags to
|
||
Git. Moved tags are exported as lightweight tags.
|
||
- jj gerrit upload now correctly handles mixed explicit and
|
||
implicit Change-Ids in chains of commits (#8219)
|
||
- jj git push now updates partially-pushed remote bookmarks
|
||
accordingly. #6787
|
||
- Fixed problem of loading large Git packfiles.
|
||
GitoxideLabs/gitoxide#2265
|
||
- The builtin pager won't get stuck when stdin is redirected.
|
||
jj workspace add now prevents creating an empty workspace
|
||
name.
|
||
- Fixed checkout of symlinks pointing to themselves or .git/.jj
|
||
on Unix. The problem would still remain on Windows if
|
||
symlinks are enabled. #8348
|
||
- Fixed a bug where jj would fail to read git delta objects
|
||
from pack files. GitoxideLabs/gitoxide#2344
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Dec 4 15:30:22 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||
|
||
- update to 0.36.0:
|
||
* Release highlights
|
||
- The documentation has moved from
|
||
https://jj-vcs.github.io/jj/ to https://docs.jj-vcs.dev/.
|
||
- Fixed race condition that could cause divergent operations
|
||
when running concurrent jj commands in colocated
|
||
repositories.
|
||
- jj now ignores $PAGER set in the environment and uses `less
|
||
-FRX` on most platforms (:builtin on Windows).
|
||
* Breaking changes
|
||
- In filesets or path patterns, glob matching is enabled by
|
||
default.
|
||
- In the following commands, string pattern arguments are now
|
||
parsed the same way they are in revsets and can be combined
|
||
with logical operators: jj bookmark
|
||
delete/forget/list/move, jj tag delete/list, jj git
|
||
clone/fetch/push
|
||
- In the following commands, unmatched bookmark/tag names is
|
||
no longer an error. A warning will be printed instead: jj
|
||
bookmark delete/forget/move/track/untrack, jj tag delete,
|
||
jj git clone/push
|
||
- The default string pattern syntax in revsets will be
|
||
changed to glob: in a future release. You can opt in to the
|
||
new default by setting ui.revsets-use-glob-by-default=true.
|
||
- Sub-repos are no longer tracked. Any directory containing
|
||
.jj or .git is ignored. Note that Git submodules are
|
||
unaffected by this.
|
||
* Deprecations
|
||
- The --destination/-d arguments for jj rebase, jj split, jj
|
||
revert, etc. were renamed to --onto/-o.
|
||
- jj describe --edit is deprecated in favor of --editor.
|
||
- The config options git.auto-local-bookmark and
|
||
git.push-new-bookmarks are deprecated in favor of
|
||
remotes.<name>.auto-track-bookmarks. [remotes.origin]
|
||
auto-track-bookmarks = "glob:*"
|
||
- The flag --allow-new on jj git push is deprecated. In order
|
||
to push new bookmarks, please track them with jj bookmark
|
||
track.
|
||
* New features
|
||
- jj commit, jj describe, jj squash, and jj split now accept
|
||
--editor, which ensures an editor will be opened with the
|
||
commit description even if one was provided via
|
||
--message/-m.
|
||
- All jj commands show a warning when the provided fileset
|
||
expression doesn't match any files.
|
||
- Added files() template function to DiffStats. This supports
|
||
per-file stats like lines_added() and lines_removed()
|
||
- Added join() template function. This is different from
|
||
separate() in that it adds a separator between all
|
||
arguments, even if empty.
|
||
- RepoPath template type now has a absolute() -> String
|
||
method that returns the absolute path as a string.
|
||
- Added format_path(path) template that controls how file
|
||
paths are printed with jj file list.
|
||
- New built-in revset aliases visible() and hidden().
|
||
- Unquoted * is now allowed in revsets. bookmarks(glob:foo*)
|
||
no longer needs quoting.
|
||
- jj prev/next --no-edit now generates an error if the
|
||
working-copy has some children.
|
||
- A new config option remotes.<name>.auto-track-bookmarks can
|
||
be set to a string pattern. New bookmarks matching it will
|
||
be automatically tracked for the specified remote.
|
||
- jj log now supports a --count flag to print the number of
|
||
commits instead of displaying them.
|
||
* Fixed bugs
|
||
- jj fix now prints a warning if a tool failed to run on
|
||
a file.
|
||
- Shell completion now works with non‑normalized paths,
|
||
fixing the previous panic and allowing prefixes containing
|
||
. or .. to be completed correctly.
|
||
- Shell completion now always uses forward slashes to
|
||
complete paths, even on Windows. This renders completion
|
||
results viable when using jj in Git Bash.
|
||
- Unexpected keyword arguments now return a parse failure for
|
||
the coalesce() and concat() templating functions.
|
||
- Nushell completion script documentation add -f option, to
|
||
keep it up to date.
|
||
- Ensured that with Git submodules, remnants of your
|
||
submodules do not show up in the working copy after running
|
||
jj new.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Nov 6 06:50:31 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.35.0:
|
||
* Release highlights
|
||
- Workspaces can now have their own separate configuration. For
|
||
instance, you can use jj config set --workspace to update a
|
||
configuration option only in the current workspace.
|
||
- After creating a local bookmark, it is now possible to use jj
|
||
bookmark track to associate the bookmark with a specific
|
||
remote before pushing it. When pushing a tracked bookmark, it
|
||
is not necessary to use --allow-new.
|
||
- The new jj git colocation enable and jj git colocation
|
||
disable commands allow converting between colocated and
|
||
non-colocated workspaces.
|
||
* Breaking changes
|
||
- The remote_bookmarks(remote=pattern) revset now includes
|
||
Git-tracking bookmarks if the specified pattern matches git.
|
||
The default is remote=~exact:"git" as before.
|
||
- The deprecated flag --summary of jj abandon has been removed.
|
||
- The deprecated command jj backout has been removed, use jj
|
||
revert instead.
|
||
- The following deprecated config options have been removed:
|
||
- signing.sign-all
|
||
- core.watchman.register_snapshot_trigger
|
||
- diff.format
|
||
* Deprecations
|
||
- jj bisect run --command <cmd> is deprecated in favor of jj
|
||
bisect run -- <cmd>.
|
||
- jj metaedit --update-committer-timestamp was renamed to jj
|
||
metaedit --force-rewrite since the old name (and help text)
|
||
incorrectly suggested that the committer name and email would
|
||
not be updated.
|
||
* New features
|
||
- Workspaces may have an additional layered configuration,
|
||
located at .jj/workspace-config.toml. jj config subcommands
|
||
which took layer options like --repo now also support
|
||
--workspace.
|
||
- jj bookmark track can now associate new local bookmarks with
|
||
remote. Tracked bookmarks can be pushed without --allow-new.
|
||
#7072
|
||
- The new jj git colocation command provides sub-commands to
|
||
show the colocation state (status), to convert a
|
||
non-colocated workspace into a colocated workspace (enable),
|
||
and vice-versa (disable).
|
||
- New jj tag set/delete commands to create/update/delete tags
|
||
locally. Created/updated tags are currently always exported
|
||
to Git as lightweight tags. If you would prefer them to be
|
||
exported as annotated tags, please give us feedback on #7908.
|
||
- Templates now support a .split(separator, [limit]) method on
|
||
strings to split a string into a list of substrings.
|
||
- -G is now available as a short form of --no-graph in jj log,
|
||
jj evolog, jj op log, jj op show and jj op diff. jj metaedit
|
||
now accepts -m/--message option to non-interactively update
|
||
the change description.
|
||
- The CryptographicSignature.key() template method now also
|
||
works for SSH signatures and returns the corresponding public
|
||
key fingerprint.
|
||
- Added template-aliases.empty_commit_marker. Users can
|
||
override this value in their config to change the "(empty)"
|
||
label on empty commits.
|
||
- Add support for --when.workspaces config scopes.
|
||
- Add support for --when.hostnames config scopes. This allows
|
||
configuration to be conditionally applied based on the
|
||
hostname set in operation.hostname.
|
||
- jj bisect run accepts the command and arguments to pass to
|
||
the command directly as positional arguments, such as jj
|
||
bisect --range=..main -- cargo check --all-targets.
|
||
- Divergent changes are no longer marked red in immutable
|
||
revisions. Since the revision is immutable, the user
|
||
shouldn't take any action, so the red color was unnecessarily
|
||
alarming.
|
||
- New commit template keywords local/remote_tags to show only
|
||
local/remote tags. These keywords may be useful in
|
||
non-colocated Git repositories where local and exported @git
|
||
tags can point to different revisions. jj git clone now
|
||
supports the --branch option to specify the branch(es) to
|
||
fetch during clone. If present, the first matching branch is
|
||
used as the working-copy parent.
|
||
- Revsets now support logical operators in string patterns.
|
||
* Fixed bugs
|
||
- jj metaedit --author-timestamp twice with the same value no
|
||
longer edits the change twice in some cases.
|
||
- jj squash: fixed improper revision rebase when both
|
||
--insert-after and --insert-before were used.
|
||
- jj undo can now revert "fetch"/"import" operation that
|
||
involves tag updates. #6325
|
||
- Fixed parsing of files(expr) revset expression including
|
||
parentheses. #7747
|
||
- Fixed jj describe --stdin to append a final newline
|
||
character.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Oct 2 07:28:33 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.34.0:
|
||
* Release highlights
|
||
- Support for uploading changes to Gerrit Code Review with jj
|
||
gerrit upload. This lets you submit trees or multiple stacks
|
||
of work at once. Support for fetching changes, submitting
|
||
changes, and other operations is not yet implemented. This
|
||
should be considered experimental, and we welcome feedback on
|
||
using it.
|
||
- Support for automated bisection using jj bisect run; this
|
||
will continuously bisect a commit range until a given commit
|
||
is found to trigger a bug.
|
||
* Breaking changes
|
||
- Git-based repositories are now colocated by default.
|
||
Configure git.colocate = false to keep the previous behavior.
|
||
- Conflicts written by jj < 0.11 are no longer supported. They
|
||
will now appear as regular files with a .jjconflict suffix
|
||
and JSON contents.
|
||
- The minimum supported Rust version (MSRV) is now 1.88.
|
||
* Deprecations
|
||
- Various flags on jj describe and jj commit have been
|
||
deprecated in favor of jj metaedit. They are:
|
||
- describe:
|
||
--author, --reset-author, --no-edit
|
||
- commit:
|
||
--author, --reset-author
|
||
- The storage format of remote bookmarks and tags has changed.
|
||
Remote bookmarks will be written in both old and new formats
|
||
to retain forward compatibility. Git-tracking tags are also
|
||
recorded for future native tagging support. This change
|
||
should be transparent, but let us know if you see anything
|
||
odd.
|
||
* New features
|
||
- The new command jj bisect run uses binary search to find a
|
||
commit that introduced a bug.
|
||
- The default editor on Unix is now nano instead of pico.
|
||
- New config option merge.hunk-level = "word" to enable
|
||
word-level merging.
|
||
- New config option merge.same-change = "keep" to disable lossy
|
||
resolution rule for same-change conflicts. #6369
|
||
- Templates now support a replace() method on strings for
|
||
pattern-based string replacement with optional limits.
|
||
Supports all string patterns, including regex with capture
|
||
groups (e.g.
|
||
"hello world".replace(regex:'(\w+) (\w+)', "$2 $1")
|
||
).
|
||
- A new builtin hyperlink(url, text) template alias creates
|
||
clickable hyperlinks using OSC8 escape sequences for
|
||
terminals that support them.
|
||
- Added a new conditional configuration --when.platforms to
|
||
include settings only on certain platforms.
|
||
- External diff commands now support substitution variable
|
||
$width for the number of available terminal columns.
|
||
- The new jj gerrit upload command allows you to upload given
|
||
revisions to an instance of Gerrit Code Review.
|
||
- jj bookmark create/set/move use the working copy as a default
|
||
again and no longer require an explicit revision argument.
|
||
This walks back a deprecation from jj 0.26, as the community
|
||
feedback was mostly negative.
|
||
- The revset function exactly(x, n) will now evaluate x and
|
||
error if it does not have exactly n elements.
|
||
- jj util exec now matches the exit status of the program it
|
||
runs, and doesn't print anything.
|
||
- jj config get now supports displaying array and table config
|
||
values.
|
||
- jj util exec sets the environment variable JJ_WORKSPACE_ROOT
|
||
* Fixed bugs
|
||
- Fetching repositories that have submodules no longer errors
|
||
even if submodule.recurse=true is set in .gitconfig (but jj
|
||
still isn't able to fetch the submodules or to operate on
|
||
them).
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Sep 18 05:58:36 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- exlude i586 due to out-of-memory errors during compilation
|
||
- update to 0.33.0:
|
||
* Release highlights
|
||
- jj undo is now sequential: invoking it multiple times in
|
||
sequence repeatedly undoes actions in the operation log.
|
||
Previously, jj undo would only undo the most recent operation
|
||
in the operation log. As a result, a new jj redo command has
|
||
been added.
|
||
- Experimental support for improving query performance over
|
||
filesets and file queries (like jj log path/to/file.txt) has
|
||
been added. This is not enabled by default. To enable this,
|
||
you must use the jj debug index-changed-paths command.
|
||
* Breaking changes
|
||
- jj evolog templates now accept CommitEvolutionEntry as
|
||
context type. To get Commit properties, use
|
||
commit.<method>(). To customize the default output, set
|
||
templates.evolog instead of templates.log.
|
||
- jj op show now uses templates.op_show configuration for its
|
||
default template instead of templates.op_log.
|
||
- The deprecated config option git.auto-local-branch has been
|
||
removed. Use git.auto-local-bookmark instead.
|
||
- The deprecated Signature.username() template method has been
|
||
removed. Use Signature.email().local() instead.
|
||
- The deprecated --config-toml flag has been removed. Use
|
||
--config=NAME=VALUE or --config-file=PATH instead.
|
||
- jj undo can now undo multiple operations progressively by
|
||
calling it repeatedly, whereas previously, running jj undo
|
||
twice was previously a no-op (it only undid the last change).
|
||
- jj git fetch will now only fetch the refspec patterns
|
||
configured on remotes when the --bookmark option is omitted.
|
||
Only simple refspec patterns are currently supported, and
|
||
anything else (like refspecs which rename branches) will be
|
||
ignored.
|
||
- The conflict label used for coloring log graph nodes was
|
||
renamed to conflicted.
|
||
* Deprecations
|
||
- The on-disk index format has changed. jj will write index
|
||
files in both old and new formats, so old jj versions should
|
||
be able to read these index files. This compatibility layer
|
||
will be removed in a future release.
|
||
- jj op undo is deprecated in favor of jj op revert. (jj undo
|
||
is still available, but with new semantics. See also the
|
||
breaking changes above.)
|
||
- The argument <operation> of jj undo is deprecated in favor of
|
||
jj op revert <operation>.
|
||
- The --what flag on jj undo is deprecated. Consider using jj
|
||
op restore --what instead.
|
||
* New features
|
||
- The new command jj redo can progressively redo operations
|
||
that were previously undone by multiple calls to jj undo.
|
||
- Templates now support any() and all() methods on lists to
|
||
check whether any or all elements satisfy a predicate.
|
||
Example: parents.any(|c| c.mine()) returns true if any parent
|
||
commit is authored by the user.
|
||
- Add experimental support for indexing changed paths, which
|
||
will speed up jj log PATH query, jj file annotate, etc. The
|
||
changed-path index can be enabled by jj debug
|
||
index-changed-paths command. Indexing may take tens of
|
||
minutes depending on the number of merge commits. The
|
||
indexing command UI is subject to change. #4674
|
||
- jj config list now supports -T'json(self) ++ "\n"'
|
||
serialization output.
|
||
- jj file show now accepts -T/--template option to insert file
|
||
metadata.
|
||
- The template language now allows arbitrary whitespace between
|
||
any operators.
|
||
- The new configuration option git.colocate=boolean controls
|
||
whether or not Git repositories are colocated by default.
|
||
- Both jj git clone and jj git init now take a --no-colocate
|
||
flag to disable colocation (in case git.colocate is set to
|
||
true.)
|
||
- jj git remote add and jj git clone now support --fetch-tags
|
||
to control when tags are fetched for all subsequent fetches.
|
||
- jj git fetch now supports --tracked to fetch only tracked
|
||
bookmarks.
|
||
- jj diff --stat now shows the change in size to binary files.
|
||
- jj interdiff, jj evolog -p, and jj op log -p now show diff of
|
||
commit descriptions.
|
||
- jj log and jj op log output can now be anonymized with the
|
||
builtin_log_redacted and builtin_op_log_redacted templates.
|
||
- jj git init now checks for an upstream remote in addition to
|
||
origin when setting the repository-level trunk() alias. The
|
||
upstream remote takes precedence over origin if both exist.
|
||
- Add the jj metaedit command, which modifies a revision's
|
||
metadata. This can be used to generate a new change-id, which
|
||
may help resolve some divergences. It also has options to
|
||
modify author name, email and timestamp, as well as to modify
|
||
committer timestamp.
|
||
- Filesets now support case-insensitive glob patterns with the
|
||
glob-i:, cwd-glob-i:, and root-glob-i: pattern kinds. For
|
||
example, glob-i:"*.rs" will match both file.rs and FILE.RS.
|
||
- jj op show now accepts -T/--template option to customize the
|
||
operation output using template expressions, similar to jj op
|
||
log. Also added --no-op-diff flag to suppress the operation
|
||
diff.
|
||
- A nearly identical string pattern system as revsets is now
|
||
supported in the template language, and is exposed as
|
||
string.match(pattern).
|
||
* Fixed bugs
|
||
- jj git clone now correctly fetches all tags, unless
|
||
--fetch-tags is explicitly specified, in which case the
|
||
specified option will apply for both the initial clone and
|
||
subsequent fetches.
|
||
- Operation and working-copy state files are now synchronized
|
||
to disk on save. This will mitigate data corruption on
|
||
system crash. #4423
|
||
* Packaging changes
|
||
- The test suite no longer optionally uses Taplo CLI or jq, and
|
||
packagers can remove them as dependencies if present.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Aug 7 05:17:21 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.32.0:
|
||
* Breaking changes
|
||
- In revsets, symbol expressions (such as change ID prefix) no
|
||
longer resolve to multiple revisions, and error out if
|
||
resolved to more than one revisions. Use change_id(prefix) or
|
||
bookmarks(exact:name) to query divergent changes or
|
||
conflicted bookmarks. Commands like jj rebase no longer
|
||
require all: to specify multiple destination revisions.
|
||
- jj op abandon now discards previous versions of a change (or
|
||
predecessors) if they become unreachable from the operation
|
||
history. The evolution history is truncated accordingly.
|
||
- Once jj op abandon and jj util gc are run in a repository,
|
||
old versions of jj might get "commit not found" error on jj
|
||
evolog.
|
||
- commit.working_copies() template method now returns
|
||
List<WorkspaceRef>
|
||
- The previously predefined amend alias has been removed. You
|
||
can restore it by setting the config aliases.amend =
|
||
["squash"].
|
||
* Deprecations
|
||
- The all: revset modifier and ui.always-allow-large-revsets
|
||
setting is planned to be removed in a future release. #6016
|
||
- Rename the core.fsmonitor and core.watchman settings to
|
||
fsmonitor.backend, and fsmonitor.watchman respectively.
|
||
* New features
|
||
- jj workspace list now accepts -T/--template option to
|
||
customize its output via templates.
|
||
- Added templates.workspace_list template to customize the
|
||
output of jj workspace list.
|
||
- jj fix now buffers the standard error stream from
|
||
subprocesses and emits the output from each all at once. The
|
||
file name is printed before the output.
|
||
- jj status now collapses fully untracked directories into one
|
||
line. It still fully traverses them while snapshotting but
|
||
they won't clutter up the output with all of their contents.
|
||
- Add the working-copy.eol-conversion config which is similar
|
||
to the git core.autocrlf config. A heuristics is used to
|
||
detect if a file is a binary file to prevent the EOL
|
||
conversion from changing binary files unexpectedly.
|
||
- Add a .parents() method to the Operation type in the
|
||
templating language.
|
||
- Merge tools config can now explicitly forbid using them as
|
||
diff editors or diff formatters. Built-in tools that do not
|
||
function well as diff editing tools or as diff formatters
|
||
will now report an error when used as such.
|
||
- jj diffedit now accepts filesets to edit only the specified
|
||
paths.
|
||
- AnnotationLine objects in templates now have a
|
||
original_line_number() -> Integer method.
|
||
- Commit templates now support .files() to list all existing
|
||
files at that revision.
|
||
- Glob patterns now support {foo,bar} syntax. There may be
|
||
subtle behavior changes as we use the globset library now.
|
||
- The new bisect(x) revset function can help bisect a range of
|
||
commits to find when a bug was introduced.
|
||
- New first_parent() and first_ancestors() revset functions
|
||
which are similar to parents() and ancestors(), but only
|
||
traverse the first parent of each commit (similar to Git's
|
||
--first-parent option).
|
||
- New signing.backends.ssh.revocation-list config for
|
||
specifying a list of revoked public keys for commit signature
|
||
verification.
|
||
- jj fix commands now replace $root with the workspace's root
|
||
path. This is useful for tools stored inside the workspace.
|
||
* Fixed bugs
|
||
- Fixed an error in jj util gc caused by the empty blob being
|
||
missing from the Git store. #7062
|
||
- jj op diff -p and jj op log -p now show content diffs from
|
||
the first predecessor only. #7090
|
||
- jj git fetch no longer shows NaN% progress when connecting to
|
||
slow remotes. #7155
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Jul 3 05:00:12 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.31.0:
|
||
* Breaking changes
|
||
- Revset expressions like hidden_id | description(x) now search
|
||
the specified hidden revision and its ancestors as well as
|
||
all visible revisions.
|
||
- Commit templates no longer normalize description by appending
|
||
final newline character. Use description.trim_end() ++ "\n"
|
||
if needed.
|
||
* Deprecations
|
||
- The git.push-bookmark-prefix setting is deprecated in favor
|
||
of templates.git_push_bookmark, which supports templating.
|
||
The old setting can be expressed in template as "<prefix>" ++
|
||
change_id.short().
|
||
* New features
|
||
- New change_id(prefix)/commit_id(prefix) revset functions to
|
||
explicitly query commits by change/commit ID prefix.
|
||
- The parents() and children() revset functions now accept an
|
||
optional depth argument. For instance, parents(x, 3) is
|
||
equivalent to x---, and children(x, 3) is equivalent to x+++.
|
||
- jj evolog can now follow changes from multiple revisions such
|
||
as divergent revisions.
|
||
- jj diff now accepts -T/--template option to customize summary
|
||
output.
|
||
- Log node templates are now specified in toml rather than
|
||
hardcoded.
|
||
- Templates now support json(x) function to serialize values in
|
||
JSON format.
|
||
- The ANSI 256-color palette can be used when configuring
|
||
colors. For example, colors."diff removed token" = { bg =
|
||
"ansi-color-52", underline = false } will apply a dark red
|
||
background on removed words in diffs.
|
||
* Fixed bugs
|
||
- jj file annotate can now process files at a hidden revision.
|
||
- jj op log --op-diff no longer fails at displaying "reconcile
|
||
divergent operations." #4465
|
||
- jj util gc --expire=now now passes the corresponding flag to
|
||
git gc.
|
||
- change_id/commit_id.shortest() template functions now take
|
||
conflicting bookmark and tag names into account. #2416
|
||
- Fixed lockfile issue on stale file handles observed with NFS.
|
||
|
||
-------------------------------------------------------------------
|
||
Wed Jun 4 19:49:02 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.30.0:
|
||
* Release highlights
|
||
- The experimental support from release 0.29.0 for transferring
|
||
the change ID to/from Git remotes has been enabled by
|
||
default. The change ID is stored in the Git commit itself (in
|
||
a commit header called change-id), which means it will be
|
||
transferred by regular git push etc. Please let us know if
|
||
you run into any problems with it. You can disable it setting
|
||
git.write-change-id-header. Note that some Git remotes (e.g
|
||
GitLab) and some Git commands (e.g. git rebase) do not
|
||
preserve the change ids when they rewrite commits.
|
||
- jj rebase now automatically abandons divergent commits if
|
||
another commit with the same change ID is already present in
|
||
the destination with identical changes.
|
||
- jj split has gained --message, --insert-before,
|
||
--insert-after, and --destination options.
|
||
- jj evolog can show associated operations for commits created
|
||
by new jj versions.
|
||
* Breaking changes
|
||
- The old libgit2 code path for fetches and pushes has been
|
||
removed, and the git.subprocess setting along with it.
|
||
- In templates, bookmark/tag/remote names are now formatted in
|
||
revset symbol notation. The type of bookmark.remote() is
|
||
changed to Option<_>. bookmark.remote() == "foo" still
|
||
works, but bookmark.remote().<method>() might need
|
||
if(bookmark.remote(), ..) to suppress error.
|
||
- jj rebase now automatically abandons divergent commits if
|
||
another commit with the same change ID is already present in
|
||
the destination with identical changes. To keep these
|
||
divergent commits, use the --keep-divergent flag.
|
||
- The deprecated --skip-empty flag for jj rebase has been
|
||
removed. Use the --skip-emptied flag instead.
|
||
- The deprecated jj branch subcommands have been removed. Use
|
||
the jj bookmark subcommands instead.
|
||
- jj util completion now requires the name of the shell as a
|
||
positional argument and no longer produces Bash completions
|
||
by default. The deprecated optional arguments for different
|
||
shells have been removed.
|
||
* Deprecations
|
||
- The ui.diff.format and ui.diff.tool config options have been
|
||
merged as ui.diff-formatter. The builtin format can be
|
||
specified as :<format> (e.g. ui.diff-formatter=":git" for Git
|
||
diffs.)
|
||
- The .normal_hex() method will be removed from the CommitId
|
||
template type. It's useful only for the ChangeId type.
|
||
* New features
|
||
- jj split has gained a --message option to set the description
|
||
of the commit with the selected changes.
|
||
- jj split has gained the ability to place the revision with
|
||
the selected changes anywhere in the revision tree with the
|
||
--insert-before, --insert-after and --destination command
|
||
line flags.
|
||
- Added git.track-default-bookmark-on-clone setting to control
|
||
whether to track the default remote bookmark on jj git clone.
|
||
- Templates can now do arithmetic on integers with the +, -, *,
|
||
/, and % infix operators.
|
||
- Evolution history is now stored in the operation log. jj
|
||
evolog can show associated operations for commits created by
|
||
new jj versions.
|
||
* Fixed bugs
|
||
- Work around a git issue that could cause subprocess
|
||
operations to hang if the core.fsmonitor gitconfig is set in
|
||
the global or system gitconfigs. #6440
|
||
- jj parallelize can now parallelize groups of changes that
|
||
start with an immutable change, but do not contain any other
|
||
immutable changes.
|
||
- jj will no longer warn about deprecated paths on macOS if the
|
||
configured XDG directory is the deprecated one
|
||
(~/Library/Application Support).
|
||
- The builtin diff editor now correctly handles splitting
|
||
changes where a file is replaced by a directory of the same
|
||
name. #5189
|
||
* Packaging changes
|
||
- Due to the removal of the libgit2 code path, packagers should
|
||
remove any dependencies on libgit2, libssh2, Zlib, OpenSSL,
|
||
and pkg-config, and ensure they are not setting the Cargo
|
||
git2 or vendored-openssl features.
|
||
|
||
-------------------------------------------------------------------
|
||
Wed May 7 19:14:59 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.29.0:
|
||
* Release highlights
|
||
Experimental support for transferring the change ID to/from Git
|
||
remotes behind configuration setting
|
||
git.write-change-id-header. If this is enabled, the change ID
|
||
will be stored in the Git commit itself (in a commit header
|
||
called change-id), which means it will be transferred by
|
||
regular git push etc. This is an evolving feature that
|
||
currently defaults to "false". This default will likely change
|
||
in the future as we gain confidence with forge support and user
|
||
expectations.
|
||
* Breaking changes
|
||
- jj git push -c/--change no longer moves existing local
|
||
bookmarks.
|
||
- The editor-*.jjdescription files passed to your editor by
|
||
e.g. jj describe are now written to your system's temporary
|
||
directory instead of .jj/repo/.
|
||
* Deprecations
|
||
- git.subprocess = false has been deprecated, and the old
|
||
libgit2 code path for fetches and pushes will be removed
|
||
entirely in 0.30. Please report any remaining issues you
|
||
have with the Git subprocessing path.
|
||
- ui.default-description has been deprecated, and will be
|
||
migrated to template-aliases.default_commit_description.
|
||
Please also consider using
|
||
templates.draft_commit_description, and/or
|
||
templates.commit_trailers.
|
||
- On macOS, config.toml files in ~/Library/Application
|
||
Support/jj are deprecated; one should instead use
|
||
$XDG_CONFIG_HOME/jj (defaults to ~/.config/jj)
|
||
* New features
|
||
- Color-words diff has gained an option to compare conflict
|
||
pairs without materializing.
|
||
- jj show patches can now be suppressed with --no-patch.
|
||
- Added ui.bookmark-list-sort-keys setting to configure default
|
||
sort keys for the jj bookmark list command.
|
||
- New signed revset function to filter for cryptographically
|
||
signed commits.
|
||
- jj describe, jj commit, jj new, jj squash and jj split add
|
||
the commit trailers, configured in the commit_trailers
|
||
template, to the commit description. Use cases include DCO
|
||
Sign Off and Gerrit Change Id.
|
||
- Added duplicate_description template, which allows
|
||
customizing the descriptions of the commits jj duplicate
|
||
creates.
|
||
- jj absorb can now squash a deleted file if it was added by
|
||
one of the destination revisions.
|
||
- Added ui.streampager.show-ruler setting to configure whether
|
||
the ruler should be shown when the builtin pager starts up.
|
||
- jj git fetch now warns instead of erroring for unknown
|
||
git.fetch remotes if other remotes are available.
|
||
- Commit objects in templates now have trailers() ->
|
||
List<Trailer>, the Trailer objects have key() -> String and
|
||
value() -> String.
|
||
- jj config edit will now roll back to previous version if a
|
||
syntax error has been introduced in the new config.
|
||
- When using dynamic command-line completion, revision names
|
||
will be completed in more complex expressions. For example,
|
||
typing jj log -r first-bookmark..sec and then pressing Tab
|
||
could complete the expression to
|
||
first-bookmark..second-bookmark.
|
||
* Fixed bugs
|
||
- Fixed crash on change-delete conflict resolution. #6250
|
||
- The builtin diff editor now tries to preserve unresolved
|
||
conflicts. #4963
|
||
- Fixed bash and zsh shell completion when completing aliases
|
||
of multiple arguments. #5377
|
||
* Packaging changes
|
||
- Jujutsu now uses zlib-rs, a fast compression library written
|
||
in Rust. Packagers should remove any dependency on CMake and
|
||
drop the packaging Cargo feature.
|
||
|
||
-------------------------------------------------------------------
|
||
Tue Apr 8 04:54:21 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.28.2:
|
||
* Fixed bugs
|
||
- Fixed problem that old commits could be re-imported from Git.
|
||
GitoxideLabs/gitoxide#1928
|
||
|
||
-------------------------------------------------------------------
|
||
Sat Apr 5 12:54:04 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.28.1:
|
||
* Security fixes
|
||
- Fixed SHA-1 collision attacks not being detected.
|
||
(GHSA-794x-2rpg-rfgr)
|
||
* Fixed bugs
|
||
- Resolved some potential build issues for packagers. #6232
|
||
- Fix a bug with :ours and :theirs merge tools involving
|
||
conflicted trees with more than two sides. #6227
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Apr 3 05:18:21 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.28.0:
|
||
* Release highlights
|
||
- jj's configuration can now be split into multiple files more
|
||
easily.
|
||
- jj resolve now accepts built-in tools :ours and :theirs.
|
||
- In colocated repos, newly-created files will now appear in
|
||
git diff.
|
||
- A long-standing bug relating to empty files in the built-in
|
||
diff editor was fixed. #3702
|
||
* Breaking changes
|
||
- The minimum supported Rust version (MSRV) is now 1.84.0.
|
||
- The git.push-branch-prefix config has been removed in favor
|
||
of git.push-bookmark-prefix.
|
||
- jj abandon no longer supports --summary to suppress the list
|
||
of abandoned commits. The list won't show more than 10
|
||
commits to not clutter the console.
|
||
- jj unsquash has been removed in favor of jj squash and jj
|
||
diffedit --restore-descendants.
|
||
- The jj untrack subcommand has been removed in favor of jj
|
||
file untrack.
|
||
- The following deprecated revset functions have been removed:
|
||
branches(), remote_branches(), tracked_remote_branches(), and
|
||
untracked_remote_branches(), which were renamed to
|
||
"bookmarks". file() and conflict(), which were renamed to
|
||
plural forms. files(x, y, ..) with multiple patterns. Use
|
||
files(x|y|..) instead.
|
||
- The following deprecated template functions have been
|
||
removed:
|
||
branches(), local_branches(), and remote_branches(), which
|
||
were renamed to "bookmarks".
|
||
- The flags --all and --tracked on jj git push by themself do
|
||
not cause deleted bookmarks to be pushed anymore, as an
|
||
additional safety measure. They can now be combined with
|
||
--deleted instead.
|
||
* Deprecations
|
||
- core.watchman.register_snapshot_trigger has been renamed to
|
||
core.watchman.register-snapshot-trigger for consistency with
|
||
other configuration options.
|
||
- jj backout is deprecated in favor of jj revert.
|
||
New features
|
||
- jj sign can now sign with PKCS#12 certificates through the
|
||
gpgsm backend.
|
||
- jj sign will automatically use the gpg key associated with
|
||
the author's email in the absence of a signing.key
|
||
configuration.
|
||
- Multiple user configs are now supported and are loaded in the
|
||
following precedence order:
|
||
- $HOME/.jjconfig.toml
|
||
- $XDG_CONFIG_HOME/jj/config.toml
|
||
- $XDG_CONFIG_HOME/jj/conf.d/*.toml
|
||
- The JJ_CONFIG environment variable can now contain multiple
|
||
paths separated by a colon (or semicolon on Windows).
|
||
- The command jj config list now supports showing the origin of
|
||
each variable via the builtin_config_list_detailed template.
|
||
- jj config {edit,set,unset} now prompt when multiple config
|
||
files are found.
|
||
- jj diff -r now allows multiple revisions (as long as there
|
||
are no gaps in the revset), such as jj diff -r 'mutable()'.
|
||
- jj git push now accepts a --named NAME=REVISION argument to
|
||
create a named bookmark and immediately push it.
|
||
- The 'how to resolve conflicts' hint that is shown when
|
||
conflicts appear can be hidden by setting
|
||
hints.resolving-conflicts = false.
|
||
- jj op diff and jj op log --op-diff now show changes to which
|
||
commits correspond to working copies.
|
||
- jj op log -d is now an alias for jj op log --op-diff.
|
||
- jj bookmark move --to/--from can now be abbreviated to jj
|
||
bookmark move -t/-f
|
||
- jj bookmark list now supports --sort option. Similar to git
|
||
branch --sort. See jj bookmark list --help for more details.
|
||
- A new command jj revert is added, which is similar to jj
|
||
backout but adds the --destination, --insert-after, and
|
||
--insert-before options to customize the location of reverted
|
||
commits.
|
||
- A new command jj git root is added, which prints the location
|
||
of the Git directory of a repository using the Git backend.
|
||
- In colocated repos, any files that jj considers added in the
|
||
working copy will now show up in git diff (as if you had run
|
||
git add --intent-to-add on them).
|
||
- Reversing colors is now supported. For example, to highlight
|
||
words by reversing colors rather than underlining, you can
|
||
set colors."diff token"={ underline = false, reverse = true }
|
||
in your config.
|
||
- Added revsets.log-graph-prioritize, which can be used to
|
||
configure which branch in the jj log graph is displayed on
|
||
the left instead of @ (e.g.
|
||
coalesce(description("megamerge\n"), trunk()))
|
||
- jj resolve now accepts new built-in merge tools :ours and
|
||
:theirs. These merge tools accept side #1 and side #2 of the
|
||
conflict respectively.
|
||
* Fixed bugs
|
||
- jj log -p --stat now shows diff stats as well as the default
|
||
color-words/git diff output. #5986
|
||
- The built-in diff editor now correctly handles deleted files.
|
||
#3702
|
||
- The built-in diff editor now correctly retains the executable
|
||
bit on newly added files when splitting. #3846
|
||
- jj config set/--config value parsing rule is relaxed in a way
|
||
that unquoted apostrophes are allowed. #5748
|
||
- jj fix could previously create new conflicts when a
|
||
descendant of a fixed revision was already correctly
|
||
formatted.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Mar 6 06:29:18 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.27.0:
|
||
* 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. 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 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 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
|
||
- Added workaround for the bug that untracked files are ignored
|
||
when watchman is enabled. #5728
|
||
- The signing.backends.ssh.allowed-signers configuration option
|
||
will now expand ~/ to $HOME/. #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.
|
||
|
||
-------------------------------------------------------------------
|
||
Fri Feb 7 16:48:58 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.26.0:
|
||
* 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
|
||
- 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
|
||
- 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. 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
|
||
None
|
||
* 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 libgit2s limitations
|
||
#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
|
||
- 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 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
|
||
- Conditional configuration now applies when initializing new
|
||
repository. #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
|
||
- Bookmark and remote names written by jj git clone to
|
||
revset-aliases.'trunk()' are now escaped if necessary. #5359
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Jan 2 10:51:18 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.25.0:
|
||
* Release highlights
|
||
- Improvements to configuration management, including support
|
||
for 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 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.
|
||
- 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
|
||
- Fixed performance of progress bar rendering when fetching
|
||
from Git remote. #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.
|
||
|
||
-------------------------------------------------------------------
|
||
Wed Dec 18 14:52:06 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- add completion subpackages for bash, fish and zsh
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Dec 5 05:54:17 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.24.0:
|
||
* 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
|
||
* Deprecations
|
||
- None
|
||
* 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 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].)
|
||
|
||
-------------------------------------------------------------------
|
||
Tue Nov 12 09:21:09 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.23.0 (boo#1233013):
|
||
* Security fixes
|
||
- Fixed path traversal by cloning/checking out crafted Git
|
||
repository containing .., .jj, .git paths.
|
||
(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
|
||
- Updated the built-in diff editor scm-record to version 0.4.0,
|
||
which includes multiple fixes.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Oct 3 12:13:57 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.22.0:
|
||
* Breaking changes
|
||
- Fixing #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
|
||
- 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)
|
||
- 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.
|
||
|
||
-------------------------------------------------------------------
|
||
Tue Sep 10 04:57:58 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.21.0 (boo#1230082):
|
||
* 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. 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
|
||
* Fixed bugs
|
||
- Release binaries for Intel Macs have been restored. They were
|
||
previously broken due to using a sunset version of GitHub's
|
||
macOS runners (but nobody had previously complained.)
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Aug 8 05:04:18 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.20.0:
|
||
* Breaking changes
|
||
- jj rebase --skip-empty has been renamed to jj rebase
|
||
--skip-emptied
|
||
- jj backout --revision has been renamed to jj backout
|
||
--revisions. The short alias -r is still supported.
|
||
- The default immutable_heads() set now includes
|
||
untracked_remote_branches() with the assumption that
|
||
untracked branches aren't managed by you. Therefore,
|
||
untracked branches are no longer displayed in jj log by
|
||
default.
|
||
- Updated defaults for graph node symbol templates
|
||
templates.log_node and templates.op_log_node.
|
||
- The "fileset" language is now enabled by default. It can
|
||
still be disable by setting ui.allow-filesets=false.
|
||
- On jj git fetch/import, commits referred to by HEAD@git are
|
||
no longer preserved. If a checked-out named branch gets
|
||
deleted locally or remotely, the corresponding commits will
|
||
be abandoned.
|
||
- jj --at-op=@ no longer merges concurrent operations if
|
||
explicitly specified.
|
||
- jj obslog -p no longer shows diffs at non-partial squash
|
||
operations. Previously, it showed the same diffs as the
|
||
second predecessor.
|
||
* Deprecations
|
||
- The original configuration syntax for jj fix is now
|
||
deprecated in favor of one that allows defining multiple
|
||
tools that can affect different filesets.
|
||
These can be used in combination for now. See jj help fix for
|
||
details.
|
||
* New features
|
||
- External diff tools can now be configured to invoke the tool
|
||
on each file individually instead of being passed a directory
|
||
by setting
|
||
merge-tools.$TOOL.diff-invocation-mode="file-by-file" in
|
||
config.toml.
|
||
- In git diffs, word-level hunks are now highlighted with
|
||
underline. See diff colors and styles for customization.
|
||
- New .diff().<format>() commit template methods are added.
|
||
They can be used in order to show diffs conditionally. For
|
||
example, if(current_working_copy, diff.summary()).
|
||
- jj git clone and jj git init with an existing git repository
|
||
adds the default branch of the remote as repository settings
|
||
for revset-aliases."trunk()".`
|
||
- jj workspace forget now abandons the workspace's working-copy
|
||
commit if it was empty.
|
||
- jj backout now includes the backed out commit's subject in
|
||
the new commit message.
|
||
- jj backout can now back out multiple commits at once.
|
||
- jj git clone some/nested/path now creates the full directory
|
||
tree for nested destination paths if they don't exist.
|
||
- String patterns now support case‐insensitive matching by
|
||
suffixing any pattern kind with -i. mine() uses
|
||
case‐insensitive matching on your email address
|
||
unconditionally. Only ASCII case folding is currently
|
||
implemented, but this will likely change in the future.
|
||
- String patterns now support regex:"pattern".
|
||
- New tracked_remote_branches() and untracked_remote_branches()
|
||
revset functions can be used to select tracked/untracked
|
||
remote branches.
|
||
- The file() revset function now accepts fileset as argument.
|
||
- New diff_contains() revset function can be used to search
|
||
diffs.
|
||
- New command jj operation diff that can compare changes made
|
||
between two operations.
|
||
- New command jj operation show that can show the changes made
|
||
in a single operation.
|
||
- New config setting git.private-commits to prevent commits
|
||
from being pushed.
|
||
- The default commit description template can now be configured
|
||
by templates.draft_commit_description.
|
||
- jj fix can now be configured to run different tools on
|
||
different filesets. This simplifies the use case of
|
||
configuring code formatters for specific file types. See jj
|
||
help fix for details.
|
||
- Added revset functions author_date and committer_date.
|
||
- jj describe can now update the description of multiple
|
||
commits.
|
||
* Fixed bugs
|
||
- jj status will show different messages in a conflicted tree,
|
||
depending on the state of the working commit. In particular,
|
||
if a child commit fixes a conflict in the parent, this will
|
||
be reflected in the hint provided by jj status
|
||
- jj diff --git no longer shows the contents of binary files.
|
||
- Windows binaries no longer require vcruntime140.dll to be
|
||
installed (normally through Visual Studio.)
|
||
- On quit, the builtin pager no longer waits for all outputs to
|
||
be discarded.
|
||
- jj branch rename no longer shows a warning in colocated
|
||
repos.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Jul 11 05:39:28 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.19.0:
|
||
* 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
|
||
|
||
-------------------------------------------------------------------
|
||
Fri Jun 7 20:02:25 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.18.0:
|
||
* Breaking changes
|
||
- Dropped support for ui.default-revset config (replaced by
|
||
revsets.log in 0.8.0).
|
||
- The commit_summary_no_branches template is superseded by
|
||
templates.branch_list.
|
||
- jj split will now refuse to split an empty commit.
|
||
- jj config list now uses multi-line strings and single-quoted
|
||
strings in the output when appropriate.
|
||
- jj config get/list/set now parse name argument as TOML key.
|
||
Quote meta characters as needed. Example: jj config get
|
||
"revset-aliases.'trunk()'"
|
||
- When updating the working copy away from an empty and
|
||
undescribed commit, it is now abandoned even if it is a merge
|
||
commit.
|
||
- If a new working-copy commit is created because the old one
|
||
was abandoned, and the old commit was merge, then the new
|
||
commit will now also be. #2859
|
||
- jj new's --insert-before/--insert-after options must now be
|
||
set for each commit the new commit will be inserted
|
||
before/after. Previously, those options were global flags and
|
||
specifying them once would insert the new commit before/
|
||
after all the specified commits.
|
||
* Deprecations
|
||
- Attempting to alias a built-in command now gives a warning, rather than being
|
||
silently ignored.
|
||
* New features
|
||
- jj branch list/tag list now accept -T/--template option. The
|
||
tag list prints commit summary along with the tag name by
|
||
default.
|
||
- Conflict markers now include an explanation of what each part
|
||
of the conflict represents.
|
||
- ui.color = "debug" prints active labels alongside the regular
|
||
colored output.
|
||
- jj branch track now show conflicts if there are some.
|
||
- A new revset reachable(srcs, domain) will return all commits
|
||
that are reachable from srcs within domain.
|
||
- There are now prebuilt binaries for
|
||
aarch64-linux-unknown-musl. Note, these are cross compiled
|
||
and currently untested. We plan on providing fully tested
|
||
builds later once our CI system allows it.
|
||
- Added new revsets mutable() and immutable().
|
||
- Upgraded scm-record from v0.2.0 to v0.3.0. See release notes
|
||
at https://github.com/arxanas/scm-record/releases/tag/v0.3.0
|
||
- New command jj fix that can be configured to update commits
|
||
by running code formatters (or similar tools) on changed
|
||
files. The configuration schema and flags are minimal for
|
||
now, with a number of improvements planned (for example,
|
||
#3800 and #3801).
|
||
- jj new's --insert-before and --insert-after options can now
|
||
be used simultaneously.
|
||
- jj git push now can push commits with empty descriptions with
|
||
the --allow-empty-description flag
|
||
* Fixed bugs
|
||
- Previously, jj git push only made sure that the branch is in
|
||
the expected location on the remote server when pushing a
|
||
branch forward (as opposed to sideways or backwards). Now, jj
|
||
git push makes a safety check in all cases and fails whenever
|
||
jj git fetch would have introduced a conflict.
|
||
In other words, previously branches that moved sideways or
|
||
backward were pushed similarly to Git's git push --force; now
|
||
they have protections similar to git push --force-with-lease
|
||
(though not identical to it, to match the behavior of jj git
|
||
fetch). Note also that because of the way jj git fetch works,
|
||
jj does not suffer from the same problems as Git's git push
|
||
--force-with-lease in situations when git fetch is run in the
|
||
background.
|
||
- When the working copy commit becomes immutable, a new one is
|
||
automatically created on top of it to avoid letting the user
|
||
edit the immutable one.
|
||
- jj config list now properly escapes TOML keys (#1322).
|
||
- Files with conflicts are now checked out as executable if all
|
||
sides of the conflict are executable.
|
||
- The progress bar (visible when using e.g. jj git clone)
|
||
clears the remainder of the cursor row after drawing rather
|
||
than clearing the entire row before drawing, eliminating the
|
||
"flicker" effect seen on some terminals.
|
||
|
||
-------------------------------------------------------------------
|
||
Wed May 8 06:55:40 UTC 2024 - Gordon Leung <pirateclip@protonmail.com>
|
||
|
||
- update to 0.17.1:
|
||
* jj status no longer scans through the entire history to look
|
||
for ancestors with conflicts.
|
||
|
||
-------------------------------------------------------------------
|
||
Thu May 2 17:49:33 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.17.0:
|
||
* Breaking changes
|
||
- The default template aliases were replaced as follows:
|
||
builtin_op_log_root(op_id: OperationId) ->
|
||
format_root_operation(root: Operation)
|
||
builtin_log_root(change_id: ChangeId, commit_id: CommitId) ->
|
||
format_root_commit(root: Commit)
|
||
builtin_change_id_with_hidden_and_divergent_info ->
|
||
format_short_change_id_with_hidden_and_divergent_info(commit: Commit)
|
||
- The --revision option of jj rebase is renamed to --revisions.
|
||
The short alias -r is still supported.
|
||
* New features
|
||
- The list of conflicted paths is printed whenever the working
|
||
copy changes.
|
||
This can be disabled with the --quiet option.
|
||
- Commit objects in templates now have a mine() -> Boolean
|
||
method analog to the same function in revsets. It evaluates
|
||
to true if the email of the commit author matches the current
|
||
user.email.
|
||
- Commit objects in templates now have a contained_in(revset:
|
||
String) -> Boolean method.
|
||
- Operation objects in templates now have a snapshot() ->
|
||
Boolean method that evaluates to true if the operation was a
|
||
snapshot created by a non-mutating command (e.g. jj log).
|
||
- Revsets and templates now support single-quoted raw string
|
||
literals.
|
||
- A new config option ui.always-allow-large-revsets has been
|
||
added to allow large revsets expressions in some commands,
|
||
without the all: prefix.
|
||
- A new config option ui.allow-filesets has been added to
|
||
enable "fileset" expressions. Note that filesets are
|
||
currently experimental, but will be enabled by default in a
|
||
future release.
|
||
- A new global flag --ignore-immutable lets you rewrite
|
||
immutable commits.
|
||
- New command jj parallelize that rebases a set of revisions
|
||
into siblings.
|
||
- jj status now supports filtering by paths. For example, jj
|
||
status . will only list changed files that are descendants of
|
||
the current directory.
|
||
- jj prev and jj next now work when the working copy revision
|
||
is a merge.
|
||
- jj squash now accepts a --use-destination-message/-u option
|
||
that uses the description of the destination for the new
|
||
squashed revision and discards the descriptions of the source
|
||
revisions.
|
||
- You can check whether Watchman fsmonitor is enabled or
|
||
installed with the new jj debug watchman status command.
|
||
- jj rebase now accepts revsets resolving to multiple revisions
|
||
with the --revisions/-r option.
|
||
- jj rebase -r now accepts --insert-after and --insert-before
|
||
options to customize the location of the rebased revisions.
|
||
* Fixed bugs
|
||
- Revsets now support \-escapes in string literal.
|
||
- The builtin diff editor now allows empty files to be selected
|
||
during jj split.
|
||
- Fixed a bug with jj split introduced in 0.16.0 that caused it
|
||
to incorrectly rebase the children of the revision being
|
||
split if they had other parents (i.e. if the child was a
|
||
merge).
|
||
- The snapshot.max-new-file-size option can now handle raw
|
||
integer literals, interpreted as a number of bytes, where
|
||
previously it could only handle string literals. This means
|
||
that snapshot.max-new-file-size="1" and
|
||
snapshot.max-new-file-size=1 are now equivalent.
|
||
- jj squash <path> is now a no-op if the path argument didn't
|
||
match any paths (it used to create new commits with bumped
|
||
timestamp). #3334
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Apr 4 05:15:23 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.16.0:
|
||
* Deprecations
|
||
- jj move was deprecated in favor of jj squash.
|
||
* Breaking changes
|
||
- The git_head template keyword now returns an optional value
|
||
instead of a list of 0 or 1 element.
|
||
- The jj sparse set --edit/--reset flags were split up into jj
|
||
sparse edit/reset subcommands respectively.
|
||
- The jj sparse subcommands now parse and print patterns as
|
||
workspace-relative paths.
|
||
- The jj log command no longer uses the default revset when a
|
||
path is specified.
|
||
* New features
|
||
- Config now supports rgb hex colors (in the form #rrggbb)
|
||
wherever existing color names are supported.
|
||
- ui.default-command now accepts multiple string arguments, for
|
||
more complex default jj commands.
|
||
- Graph node symbols are now configurable via templates
|
||
* templates.log_node
|
||
* templates.op_log_node
|
||
- jj log now includes synthetic nodes in the graph where some
|
||
revisions were elided.
|
||
- jj squash now accepts --from and --into (also aliased as
|
||
--to) if -r is not specified. It can now be used for all use
|
||
cases where jj move could previously be used. The --from
|
||
argument accepts a revset that resolves to more than one
|
||
revision.
|
||
- Commit templates now support immutable keyword.
|
||
- New template function coalesce(content, ..) is added.
|
||
- Timestamps are now shown in local timezone and without
|
||
milliseconds and timezone offset by default.
|
||
- jj git push now prints messages from the remote.
|
||
- jj branch list now supports a --conflicted/-c option to show
|
||
only conflicted branches.
|
||
- jj duplicate and jj abandon can now take more than a single
|
||
-r argument, for consistency with other commands.
|
||
- jj branch list now allows combining -r REVISIONS/NAMES and -a
|
||
options.
|
||
- --all is now named --all-remotes for jj branch list
|
||
- There is a new global --quiet flag to silence commands'
|
||
non-primary output.
|
||
- jj split now supports a --siblings/-s option that splits the
|
||
target revision into siblings with the same parents and
|
||
children.
|
||
- new function working_copies() for revsets to show the working
|
||
copy commits of all workspaces.
|
||
* Fixed bugs
|
||
- None
|
||
|
||
-------------------------------------------------------------------
|
||
Sat Mar 16 17:29:53 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.15.1:
|
||
* No code changes (fixing Rust Cargo.toml stuff).
|
||
- BuildRequire gnupg to fix failing tests
|
||
|
||
-------------------------------------------------------------------
|
||
Sat Mar 16 17:09:19 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.15.0:
|
||
* Breaking changes
|
||
- The minimum supported Rust version (MSRV) is now 1.76.0.
|
||
- The on-disk index format changed. New index files will be
|
||
created automatically, but it can fail if the repository is
|
||
co-located and predates Git GC issues #815. If reindexing
|
||
failed, you'll need to clean up corrupted operation history
|
||
by jj op abandon ..<bad operation ID>.
|
||
- Dropped support for the "legacy" graph-drawing style. Use
|
||
"ascii" for a very similar result.
|
||
- The default log output no longer lists all tagged heads. Set
|
||
revsets.log = "@ | ancestors(immutable_heads().., 2) |
|
||
heads(immutable_heads())" to restore the old behavior.
|
||
- Dropped support for the deprecated : revset operator. Use ::
|
||
instead.
|
||
- jj rebase --skip-empty no longer abandons commits that were
|
||
already empty before the rebase.
|
||
* New features
|
||
- Partial support for commit signing. Currently you can
|
||
configure jj to "keep" commit signatures by making new ones
|
||
for rewritten commits, and to sign new commits when they are
|
||
created.
|
||
This comes with out-of-the-box support for the following
|
||
backends:
|
||
— GnuPG
|
||
- SSH
|
||
- Signature verification and an explicit sign command will
|
||
hopefully come soon.
|
||
- Templates now support logical operators: ||, &&, !
|
||
- Templates now support the self keyword, which is the current
|
||
commit in jj log/obslog templates.
|
||
- jj show now accepts -T/--template option to render its output
|
||
using template
|
||
- jj config list now accepts -T/--template option.
|
||
- jj git fetch now accepts -b as a shorthand for --branch,
|
||
making it more consistent with other commands that accept a
|
||
branch
|
||
- In the templating language, Timestamps now have a .local()
|
||
method for converting to the local timezone.
|
||
- jj next/prev now infer --edit when you're already editing a
|
||
non-head commit (a commit with children).
|
||
- A new built-in pager named :builtin is available on all
|
||
platforms, implemented with minus
|
||
- Set config ui.log-synthetic-elided-nodes = true to make jj
|
||
log include synthetic nodes in the graph where some revisions
|
||
were elided (#1252, #2971). This may become the default
|
||
depending on feedback.
|
||
- When creating a new workspace, the sparse patterns are now
|
||
copied over from the current workspace.
|
||
- jj git init --colocate can now import an existing Git
|
||
repository. This is equivalent to jj git init --git-repo=..
|
||
- jj git fetch now automatically prints new remote branches and
|
||
tags by default.
|
||
- --verbose/-v is now --debug (no short option since it's not
|
||
intended to be used often)
|
||
- jj move --from/--to can now be abbreviated to jj move -f/-t
|
||
- jj commit/diffedit/move/resolve/split/squash/unsquash now
|
||
accept --tool=<NAME> option to override the default. #2575
|
||
- Added completions for Nushell to jj util completion
|
||
- jj branch list now supports a --tracked/-t option which can
|
||
be used to show tracked branches only. Omits local
|
||
Git-tracking branches by default.
|
||
- Commands producing diffs now accept a --context flag for the
|
||
number of lines of context to show.
|
||
- jj commands with the -T/--template option now provide a hint
|
||
containing defined template names when no argument is given,
|
||
assisting the user in making a selection.
|
||
* Fixed bugs
|
||
- On Windows, symlinks in the repo are now supported when
|
||
Developer Mode is enabled. When symlink support is
|
||
unavailable, they will be materialized as regular files in
|
||
the working copy (instead of resulting in a crash). #2
|
||
- On Windows, the :builtin pager is now used by default, rather
|
||
than being disabled entirely.
|
||
- Auto-rebase now preserves the shape of history even for merge
|
||
commits where one parent is an ancestor of another. #2600
|
||
|
||
-------------------------------------------------------------------
|
||
Thu Feb 8 06:50:56 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.14.0:
|
||
* Deprecations
|
||
- jj checkout and jj merge are both deprecated; use jj new
|
||
instead to replace both of these commands in all instances.
|
||
Rationale: jj checkout and jj merge both implement identical
|
||
functionality, which is a subset of jj new. checkout creates
|
||
a new working copy commit on top of a single specified
|
||
revision, i.e. with one parent. merge creates a new working
|
||
copy commit on top of at least two specified revisions, i.e.
|
||
with two or more parents.
|
||
The only difference between these commands and jj new, which
|
||
also creates a new working copy commit, is that new can
|
||
create a working copy commit on top of any arbitrary number
|
||
of revisions, so it can handle both the previous cases at
|
||
once. The only actual difference between these three commands
|
||
is the command syntax and their name. These names were chosen
|
||
to be familiar to users of other version control systems, but
|
||
we instead encourage all users to adopt jj new instead; it is
|
||
more general and easier to remember than both of these.
|
||
jj checkout and jj merge will no longer be shown as part of
|
||
jj help, but will still function for now, emitting a warning
|
||
about their deprecation.
|
||
Deadline: jj checkout and jj merge will be deleted and are
|
||
expected become a hard error later in 2024.
|
||
- jj init --git and jj init --git-repo are now deprecated and
|
||
will be removed in the near future. Use jj git init instead.
|
||
* Breaking changes
|
||
- (Minor) Diff summaries (e.g. jj diff -s) now use D for
|
||
"Deleted" instead of R for "Removed". @joyously pointed out
|
||
that R could also mean "Renamed".
|
||
- jj util completion now takes the shell as a positional
|
||
argument, not a flag. the previous behavior is deprecated,
|
||
but supported for now. it will be removed in the future.
|
||
* New features
|
||
- jj util completion now supports powershell and elvish.
|
||
- Official binaries for macOS running on Apple Silicon
|
||
(aarch64-apple-darwin) are now available, alongside the
|
||
existing macOS x86 binaries.
|
||
- New jj op abandon command is added to clean up the operation
|
||
history. Git refs and commit objects can be further compacted
|
||
by jj util gc.
|
||
- jj util gc now removes unreachable operation, view, and Git
|
||
objects.
|
||
- jj branch rename will now warn if the renamed branch has a
|
||
remote branch, since those will have to be manually renamed
|
||
outside of jj.
|
||
- jj git push gained a --tracked option, to push all the
|
||
tracked branches.
|
||
- There's now a virtual root operation, similar to the virtual
|
||
root commit. It appears at the end of jj op log.
|
||
- jj config list gained a --include-overridden option to allow
|
||
printing overridden config values.
|
||
- jj config list now accepts --user or --repo option to specify
|
||
config origin.
|
||
- New jj config path command to print the config file path
|
||
without launching an editor.
|
||
- jj tag list command prints imported git tags.
|
||
- jj next and jj prev now prompt in the event of the
|
||
next/previous commit being ambiguous, instead of failing
|
||
outright.
|
||
- jj resolve now displays the file being resolved.
|
||
- jj workspace root was aliased to jj root, for ease of
|
||
discoverability
|
||
- jj diff no longer shows the contents of binary files.
|
||
- jj git now has an init command that initializes a git backed
|
||
repo.
|
||
- New template function surround(prefix, suffix, content) is
|
||
added.
|
||
* Fixed bugs
|
||
- Fixed snapshots of symlinks in gitignore-d directory. #2878
|
||
- Fixed data loss in dirty working copy when checked-out branch
|
||
is rebased or abandoned by Git. #2876
|
||
|
||
-------------------------------------------------------------------
|
||
Sun Jan 7 15:42:43 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||
|
||
- update to 0.13.0:
|
||
* Breaking changes
|
||
- `jj git fetch` no longer imports new remote branches as local
|
||
branches. Set `git.auto-local-branch = true` to restore the
|
||
old behavior.
|
||
* New features
|
||
- Information about new and resolved conflicts is now printed
|
||
by every command.
|
||
- `jj branch` has gained a new `rename` subcommand that allows
|
||
changing a branch name atomically. `jj branch help rename`
|
||
for details.
|
||
* Fixed bugs
|
||
- Command aliases can now be loaded from repository config
|
||
relative to the current working directory.
|
||
[#2414](https://github.com/martinvonz/jj/issues/2414)
|
||
|
||
-------------------------------------------------------------------
|
||
Wed Dec 6 12:15:35 UTC 2023 - Johannes Kastl <kastl@b1-systems.de>
|
||
|
||
- update to 0.12.0:
|
||
* Breaking changes
|
||
- The remote_branches() revset no longer includes branches
|
||
exported to the Git repository (so called Git-tracking
|
||
branches.)
|
||
- jj branch set no longer creates a new branch. Use jj branch
|
||
create instead.
|
||
- jj init --git in an existing Git repository now errors and
|
||
exits rather than creating a second Git store.
|
||
* New features
|
||
- jj workspace add can now take multiple --revision arguments,
|
||
which will create a new workspace with its working-copy
|
||
commit on top of all the parents, as if you had run
|
||
jj new r1 r2 r3 ....
|
||
- You can now set git.abandon-unreachable-commits = false to
|
||
disable the usual behavior where commits that became
|
||
unreachable in the Git repo are abandoned (#2504).
|
||
- jj new gained a --no-edit option to prevent editing the newly
|
||
created commit. For example, jj new a b --no-edit -m Merge
|
||
creates a merge commit without affecting the working copy.
|
||
- jj rebase now takes the flag --skip-empty, which doesn't copy
|
||
over commits that would become empty after a rebase.
|
||
- There is a new jj util gc command for cleaning up the
|
||
repository storage. For now, it simply runs git gc on the
|
||
backing Git repo (when using the Git backend).
|
||
* Fixed bugs
|
||
- Fixed another file conflict resolution issue where jj status
|
||
would disagree with the actual file content. #2654
|
||
|
||
-------------------------------------------------------------------
|
||
Wed Nov 01 19:12:45 UTC 2023 - kastl@b1-systems.de
|
||
|
||
- Update to version 0.11.0:
|
||
* 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).
|
||
|
||
-------------------------------------------------------------------
|
||
Mon Oct 9 15:49:09 UTC 2023 - Johannes Kastl <kastl@b1-systems.de>
|
||
|
||
- new package jujutsu: A Git-compatible DVCS that is both simple
|
||
and powerful
|