Repository navigation
Replies: 2 comments 3 replies
yipeeee |
|
Great set of features in this update! One thing that throws me off is the new behavior of And I can't naively delete it because both [templates]
draft_commit_description = '''
concat(
builtin_draft_commit_description,
"\nJJ: ignore-rest\n",
diff.git(),
)
'''i.e. the selected change is on the top (say, 100 lines), then the remaining changes are on the bottom, and I need to find them somehow. There's an new editor hint from #10269, but it seems like it only 'hints' the position of the first commit message, and not the second Anyway, feels like the only solution to the issue is to teach my editor to jump between commit message slots, and to create a key bind for it. Please let me know if my understanding is wrong, and if there's anything that can be done about it |
Uh oh!
There was an error while loading. Please reload this page.
About
jj is a Git-compatible version control system that is both simple and powerful. See
the installation instructions to get started.
Release highlights
worktrees. Use
jj workspace add --[no-]colocateand the settinggit.colocateto control this.Breaking changes
The minimum supported
gitcommand version is now 2.42.0, up from 2.41.0.jj workspace addusesgit worktree add --orphan, which was added in2.42.0.
The minimum supported Rust version (MSRV) is now 1.97.1.
jj bisect runnow runs some consistency checks before proceeding to bisect.This helps ensure that the command can tell good and bad revisions apart,
and that the working copy does go from bad to good over the provided revset.
Use the new flag
--trust-endpointsto disable these checks.jj splitnow opens a single editor session to edit descriptions for thesplit commits.
jj undoandjj redonow refuse to undo/redo an operation that wasperformed in another workspace. Use
--allow-cross-workspaceto undo/redoit anyway.
jj workspace list/rootno longer omit unreachable paths. All recordedpaths are now shown, with warnings displayed in
jj workspace root.The
List.get(),.first(), and.last()template functions now returnOption<T>instead of throwing an error on out-of-bounds access.New features
jj workspace addsupports--colocate/--no-colocateflags to controlwhether a Git worktree is created alongside the workspace. The default
colocates when the current workspace is colocated and the
git.colocateconfig is
true.jj workspace forgetremoves the corresponding Gitworktree when one exists.
jj git colocation status/enable/disablenow work on childworkspaces.
statuscorrectly reports colocation state and includesthe workspace name.
enablecreates a Git worktree anddisableremoves it, allowing colocation to be toggled after workspace
creation.
jj workspace removeremoves a workspace and its directory from disk. Theworking-copy state is snapshotted into a commit before removal.
Added commands
jj file editandjj file deletefor editing files in anyrevision without needing to change the working copy.
jj git pushnow supports pushing to multiple remotes at the same time.This can be configured via
git.pushset to a string patternor array of string patterns, or with the repeatable
--remoteflag,which also accepts string patterns.
The default target revisions for
jj git pushcan now be configured viarevsets.git-push.Added the
TreeEntry.normal_value()template method and theTreeValuetypeto access resolved tree values, formatted as their full object IDs, including
Git submodule commit IDs.
Diff hunk headers now include nearby source symbols for many common
programming and markup languages.
fix.tools.<name>.line-range-args(replacesline-range-arg) is an array ofstring template args to pass to the fix tool. This is more flexible in cases
where you need to pass multiple arguments to the tool, such as separate args
for the range start and range end.
jj runnow uses the sparse patterns from the workspace it's run from.Use the
--sparse-patternsoption to control this behavior (evaluatedper each
jj runinvocation).jj util diff <path1> <path2>to compare files on disk.Aliases now support setting
aliases.<name>.enabled = false, which willdisable them. This can be used to disable built-in aliases or disable aliases
in later layers (such as repo config files).
ui.editornow supports$pathand$linesubstitution variables. Example:ui.editor = ["emacs", "+$line", "$path"]filltemplate function now supports an additional named parameterbreak_words, that allows specifying if the template should break wordslonger than
widthpassed in the input to ensure no words overflow thespecified width.
The
json()template function now supports map literals:json({'key' => value})The hunk headers of
diff.color-words.conflict = "pair"now include theconflict labels of the compared terms.
Fixed bugs
On Windows,
jjno longer hangs when a subprocess needs to prompt the user,such as
sshasking for a key passphrase or for confirmation of an unknownhost key. Subprocesses started from a terminal now inherit its console, rather
than being given an invisible one by
CREATE_NO_WINDOWfor the prompt todisappear into.
#6745
#8547
On Windows,
jj git colocation enableandjj git colocation disablenolonger fail with "Access is denied (os error 5)" when the Git repository
contains pack files.
#8661
jj undoofjj workspace forgetnow correctly preserves the workspace'srecorded path. Previously the path metadata was lost, leaving the workspace
in a broken state after undo.
#9991
at_operation()can now be used with operations that are not ancestors ofthe current operation (e.g. sibling operations created by concurrent
commands). Previously, evaluating such expressions failed if they resolved
to commits missing from the current operation's index.
.gitignorefiles are now respected even if they aren't materialized in theworking copy because they are excluded by the sparse patterns. Previously,
ignored files could become tracked in a sparse working copy.
#2289
In-tree ignore files (
.gitignore) are no longer read through symlinks,matching
gitbehavior. Such files are now silently skipped instead of havingtheir symlink target applied.
$GIT_DIR/info/excludeandcore.excludesFileare unaffected and still follow symlinks, as
gitdoes.#7161
jj workspace listtemplates are now labeled withworkspace name,workspace root, etc.Contributors
Thanks to the people who made this release happen!
This discussion was created from the release v0.46.0.
All reactions