jj v0.43.0 released
jj v0.43.0 released
About jj is a Git-compatible version control system that is both simple and powerful. See the installation instructions to get started.
关于 jj 是一个既简单又强大的 Git 兼容版本控制系统。请参阅安装说明以开始使用。
Release highlights
jj run allows you to run a command over a set of changes, each with their own private working copy; the commands may update the working copy and changes/conflicts are propagated accordingly, e.g., jj run -- cargo check --all-features or jj run -- cargo fix behaves as one might expect.
发布亮点
jj run 允许你在一组变更上运行命令,每个变更都有其私有的工作副本;命令可以更新工作副本,变更和冲突会相应地传播。例如,jj run -- cargo check --all-features 或 jj run -- cargo fix 的行为符合预期。
Breaking changes
The deprecated git_head() and git_refs() functions have been removed from revsets and templates. Git-like symbols (e.g. refs/heads/main) are no longer resolved to revisions. Use the bookmark/tag <name> or <name>@<remote> syntax instead. The deprecated ui.revsets-use-glob-by-default option has been removed. jj bookmark track/untrack no longer supports <kind>:<bookmark>@<remote> patterns. However, the <bookmark>@<remote> symbol syntax is still supported. #9226
破坏性变更
已从 revsets 和模板中移除了已弃用的 git_head() 和 git_refs() 函数。类似 Git 的符号(例如 refs/heads/main)不再解析为修订版本。请改用 bookmark/tag <name> 或 <name>@<remote> 语法。已弃用的 ui.revsets-use-glob-by-default 选项已被移除。jj bookmark track/untrack 不再支持 <kind>:<bookmark>@<remote> 模式,但仍支持 <bookmark>@<remote> 符号语法。#9226
New features
jj show now supports --reversed flag. jj now looks for config files in /etc/jj. jj config gc will delete configuration of deleted/moved repos from ~/.config/jj/repos folder. #9362. jj gerrit upload now supports the -o (--option) flag, which works like git push -o (--push-option). jj git fetch now rebases the descendants of revisions that were rewritten based on their change IDs. Previously, when multiple bookmarked revisions existed in a stack, those rewritten revisions and their descendants wouldn’t always be rebased. Note that immutable descendants will not be rebased. Add a forks() revset function that yields all commits with more than 1 child. colors config now supports crossed-out text styling with { crossed-out = true }.
新功能
jj show 现在支持 --reversed 标志。jj 现在会在 /etc/jj 中查找配置文件。jj config gc 将从 ~/.config/jj/repos 文件夹中删除已删除/移动仓库的配置。#9362。jj gerrit upload 现在支持 -o (--option) 标志,其工作方式类似于 git push -o (--push-option)。jj git fetch 现在会根据变更 ID 对已重写的修订版本的后代进行变基(rebase)。此前,当堆栈中存在多个带有书签的修订版本时,这些已重写的修订版本及其后代并不总是会被变基。请注意,不可变的后代不会被变基。添加了 forks() revset 函数,用于获取所有拥有超过 1 个子提交的提交。colors 配置现在支持通过 { crossed-out = true } 实现删除线文本样式。
Fixed bugs
On Windows, querying a path’s file identity no longer follows symbolic links, matching the behavior on Unix. Previously a symlink shared the identity of its target, so two symlinks pointing at the same target were treated as the same file. This identity check is used when writing the working copy to detect aliases of the reserved .git and .jj directories. #8924. jj now creates a new working-copy revision during snapshotting if the working copy was immutable. Previously, the new revision was created immediately after the working copy became immutable. #7751 #9338. jj git remote add now warns if the new remote exactly matches an existing remote’s fetch URL or effective push URL. #413. Fixed corrupt loose Git objects on Intel Raptor Lake CPU and aarch64. Previously, jj could report a successful commit even though git fsck would later fail with incorrect data check, corrupt loose object, or missing blob, and later jj operations could fail with corrupt deflate stream.
修复的 Bug
在 Windows 上,查询路径的文件标识不再跟随符号链接,这与 Unix 上的行为保持一致。此前,符号链接会共享其目标的标识,因此指向同一目标的两个符号链接会被视为同一个文件。此标识检查用于在写入工作副本时检测保留目录 .git 和 .jj 的别名。#8924。如果工作副本是不可变的,jj 现在会在快照期间创建一个新的工作副本修订版本。此前,新修订版本是在工作副本变为不可变后立即创建的。#7751 #9338。jj git remote add 现在会在新远程仓库与现有远程仓库的获取 URL 或有效推送 URL 完全匹配时发出警告。#413。修复了 Intel Raptor Lake CPU 和 aarch64 架构上损坏的松散 Git 对象问题。此前,即使 git fsck 随后会因数据校验错误、松散对象损坏或缺失 blob 而失败,jj 也可能报告提交成功,并且后续的 jj 操作可能会因 deflate 流损坏而失败。