发布 v0.30.0 · jj-vcs/jj

  • About:jj 是一个 Git 兼容的版本控制系统,简单且强大,可参考安装说明开始使用。
  • Release highlights

    • 默认启用 0.29.0 版本的实验性支持,可将变更 ID 传输到/从 Git 远程仓库,变更 ID 存储在 Git 提交中(名为change-id的提交头中),git push等常规命令会传输它,若有问题可设置git.write-change-id-header禁用,注意某些 Git 远程仓库和命令在重写提交时不会保留变更 ID。
    • jj rebase现在若目的地已有相同变更 ID 的提交且更改相同,则会自动放弃分歧提交。
    • jj split增加了--message--insert-before--insert-after--destination选项。
    • jj evolog可显示新 jj 版本创建的提交的相关操作。
  • Breaking changes

    • 移除了用于获取和推送的旧libgit2代码路径以及git.subprocess设置。
    • 模板中书签/标签/远程名称现在以 revset 符号表示法格式化,bookmark.remote()的类型更改为Option<_>bookmark.remote() == "foo"仍可用,但bookmark.remote().<method>()可能需要if(bookmark.remote(),..)来抑制错误。
    • jj rebase现在若目的地已有相同变更 ID 的提交且更改相同,则会自动放弃分歧提交,要保留分歧提交可使用--keep-divergent标志。
    • 移除了jj rebase的已弃用--skip-empty标志,使用--skip-emptied标志代替。
    • 移除了已弃用的jj branch子命令,使用jj bookmark子命令代替。
    • jj util completion现在需要将 shell 名称作为位置参数,且默认不再生成 Bash 补全,已弃用的不同 shell 的可选参数已被移除。
    • 外部差异工具现在在包含之前(left)和之后(right)目录的临时目录中运行,用户可通过设置merge-tools.<tool>.diff-do-chdir = false退出,但可能在未来版本中删除,若有问题请报告。
  • Deprecations

    • ui.diff.formatui.diff.tool配置选项已合并为ui.diff-formatter,内置格式可指定为:<format>(如ui.diff-formatter=":git"用于 Git 差异)。
    • .normal_hex()方法将从CommitId模板类型中移除,仅对ChangeId类型有用。
  • New features

    • jj split增加了--message选项,可设置具有选定更改的提交的描述。
    • jj split具有通过--insert-before--insert-after--destination命令行标志将具有选定更改的修订放置在修订树中任何位置的能力。
    • 添加了git.track-default-bookmark-on-clone设置,以控制在jj git clone时是否跟踪默认远程书签。
    • 模板现在可以使用+-*/%中缀运算符对整数进行算术运算。
    • 演化历史现在存储在操作日志中,jj evolog可显示新 jj 版本创建的提交的相关操作。
  • Fixed bugs

    • 解决了一个 git 问题,该问题可能导致子进程操作在全局或系统 gitconfig 中设置core.fsmonitor时挂起。#6440
    • jj parallelize现在可以并行化以不可变更改开始但不包含其他不可变更改的更改组。
    • 在 macOS 上,如果配置的 XDG 目录是弃用的目录(~/Library/Application Support),jj将不再警告弃用的路径。
    • 内置差异编辑器现在正确处理文件被同名目录替换的更改拆分。#5189
  • Packaging changes:由于移除了libgit2代码路径,打包者应移除对libgit2libssh2、Zlib、OpenSSL 和pkg-config的依赖,并确保未设置 Cargo 的git2vendored-openssl功能。
  • Contributors:感谢使此版本发布的人员,列出了众多贡献者的 GitHub 账号。
阅读 20
0 条评论