咒术(jj),一个与 Git 兼容的版本控制系统

主要观点:git 虽有改进但仍有粗糙之处,新的版本控制系统入门有障碍,jj 是兼容 git 的版本控制系统,能带来更好体验且已试用两月,分享使用心得。
关键信息:

  • 作者 2007 年接触 SVN,后因 Git 在 Windows 上难运行忽略,后因 Mercurial 更易安装和使用迁移到 Hg,2014 年左右迁移到 Git,2020 年 Bitbucket 关闭 Hg 托管支持。
  • 有三种版本控制系统使用场景:工作、开源、个人项目。
  • Sapling 是新一波 VCS 的代表,Facebook 对 Mercurial 的分支,有一些改进但缺 SSH 签名功能。
  • jj 有原生和 git 后端,围绕 changesets 而非 commits,主要分支方法是匿名分支,力图简化概念,CLI 更一致,有更好的 rerere 功能等。
  • jj 的优点:处理重复合并冲突好,可同时 rebasing 所有分支,简化 mental model,jj squash工作流易适应等,revset 语言更合理。
  • jj 的缺点:仍在开发,部分功能缺失或不确定,有大量变动,如重命名branchbookmark,SSH 支持有问题,CLI 存在混淆,有两种模式导致与 Nix 交互不佳等。
    重要细节:
  • 作者工作的公司有不同类型的 repo,开源库偶尔有第三方贡献,个人项目有时需分支工作。
  • 在 jj 中,工作副本就是一个 commit,如jj splitjj squash工作流。
  • jj log命令比git log更智能,能显示相关 commit 的缩写树。
  • Nix 与 jj 的隐藏.git文件夹模式交互不佳,需注意。
  • 作者打算后续尝试 Sapling 或在个人项目中使用。
阅读 21
0 条评论