v0.38.0 #8806
Replies: 2 comments 7 replies
-
I saw these two features and thought I should try them out on the new release. Then I realized I would have to install it first. 😄 Four minutes of download/compile later, I didn't really see how to use the new revset function, so I did the normal plain The reason I'm posting here, is about the release tag. My copy of the |
Beta Was this translation helpful? Give feedback.
-
|
Is there any rationale for or discussion about the configs being moved to an external directory? That seems like a strict regression, as it puts part of the repository out-of-band, causing issues for synchronization/backups and leaving remnants that have to be manually cleaned up when a repo is deleted. I also noticed that the "hashed" folder name (under I did look through the commits leading up to v0.38.0, but was unable to locate where the change was made. |
Beta Was this translation helpful? Give feedback.


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
reasons. This is not a breaking change because we automatically migrate
legacy repos to this new format.
.jj/repo/config.tomland.jj/workspace-config.tomlshould no longer be used.Breaking changes
The minimum supported
gitcommand version is now 2.41.0. macOS users willneed to either upgrade "Developer Tools" to 26 or install Git from
e.g. Homebrew.
Deprecated
ui.always-allow-large-revsetssetting andall:revset modifierhave been removed.
<name>@<remote>revset symbols can also be resolved to remote tags. Tags areprioritized ahead of bookmarks.
Legacy placeholder support used for unset
user.nameoruser.emailhas beenremoved. Commits containing these values will now be pushed with
jj git pushwithout 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
diff_contains()has been renamed todiff_lines().New features
jj git fetchnow shows details of abandoned commits (change IDs anddescriptions) by default, matching the
jj abandonoutput format.#3081
jj workspace rootnow accepts an optional--nameargument to showthe 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 ifit isn't tracked with any remote already.
Add
git_web_url([remote])template function that converts a git remote URLto 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-bookmarksbehavessimilarly to
auto-track-bookmarks, but it only applies to bookmarks createdlocally. Setting it to
"*"is now the closest replacement for the deprecatedgit.push-new-bookmarksoption.jj tag listcan 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 --tagflag to fetch tags in the same way asbookmarks. If specified, tags won't be fetched implicitly, and only tags
matching the pattern will be fetched as
<name>@<remote>tags. The fetchedremote 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 totext when outputting to a non-terminal, instead of emitting raw OSC 8 escape
codes. #7592
Fixed bugs
jj git init --colocatenow refuses to run inside a Git worktree, providinga helpful error message with alternatives.
#8052
jj git pushnow ensures that tracked remote bookmarks are updated even ifthere are no mappings in the Git fetch refspecs.
#5115
jj git fetch/pushnow forwards most ofgitstderr outputs such asauthentication requests. #5760
Conflicted bookmarks and tags in
trunk()will no longer generate verbosewarnings. The configured
trunk()alias will temporarily be disabled.#8501
Dynamic shell completion for
jj config unsetnow only completesconfiguration 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, orJJ_EDITORnow respects shell quoting.jj gerrit uploadwill no longer swallow errors and surface if changes failto get pushed to gerrit.
#8568
jj file track --include-ignorednow works whenfsmonitor.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
--quietnow hides progress bars.Contributors
Thanks to the people who made this release happen!
This discussion was created from the release v0.30.0.
Beta Was this translation helpful? Give feedback.
All reactions