(发布)Majutsu: 类magit的 jujutsu interface

各位好,最近把 GitHub - bolivier/jj-mode.el: Jujutsu version control mode for Emacs inspired by Magit fork 成了一个新项目 “Majutsu”,核心目标是把 magit 那套顺手的交互搬到 JJ (jujutsu) 上,同时顺带把 JJ 的模板系统做成一个好用的 Elisp DSL。

我目前最大的贡献是写了这个 DSL,这能为输出控制带来很高的自由度。 DSL 的详细文档可以看 docs 里的 majutsu-template-spec

主要亮点:

  • Magit 风格的各种 transient 菜单。
  • 自带 majutsu-template 支持:可以用 Elisp 写 JJ 模板(默认 log 模板已切换到 DSL)。
  • 支持书签管理、rebase、diff/describe、Git pull/push 等常见日常操作。

项目地址:GitHub - 0WD0/majutsu: Majutsu! Magit for jujutsu

如果你在用 jujutsu,欢迎试试,也欢迎顺手推荐 jj 给身边的同事/朋友

它的 DAG 工作流和可撤销操作非常优秀,还有比 git 更优秀的冲突处理

欢迎提交 Issue/PR,一起完善这个 jujutsu 的 Emacs interface。

6 个赞

这么说来在windows上用这个majutsu不会像magit一样卡了吧。

试了下,启动速度确实比magit快。

再试了下,Windows上中文commit会乱码,估计是GBK与UTF8的转换问题吧。

收到,已复现

之前 fork 之后只是取消了关联关系,忘记加 issue 栏了,现在可以提交 issue 了

1 个赞

windows编码问题已解决,加一个配置即可完美解决

(setq majutsu-message-input-method 'script) 

在这里说说是如何实现的,

reference

在 Windows 平台上,原生版 Emacs 在调用外部程序时,会把所有命令行参数按照系统当前的 ANSI 代码页(GetACP() 返回的值)重新编码,再通过 CreateProcessA 传递给子进程。代码页一旦不是 UTF-8,像中文、表情符号等超出该代码页字符表的内容就会被损坏。Eli Zaretskii(Windows 端维护者)一直强调这一点:“Windows 版 Emacs 无法用非系统代码页编码的参数调用子程序;而 Windows 并不支持把系统代码页设成 UTF-8。”

现在已经可以把windows代码页配置改成 utf-8 了,但是我承认这对一个应该开箱即用的插件来说不是一个好的方案

我尝试了 --stdin 的方案,但是发现同样需要输入文本的 commit 不支持这个选项,依然不是最好的方案

再就看到了 --tool,最后使用两个小脚本创建临时文件来做到的

之后应该会借鉴一下 magit 在这方面的实现

为啥要取消 fork 关联?

1 个赞

哈哈,我一开始也以为是新项目,后来找到 GitHub - bolivier/jj-mode.el: Jujutsu version control mode for Emacs inspired by Magit ,发现是fork并修改的。

刚刚试了下,发现 squash 的message buffer还在Windows下有中文乱码情况,是不是有可能遗漏了

因为想要改动很多内容,不打算提PR,独立仓库的话比较自由

MIT license 也允许我这么做,我保留了原作者的 LICENSE 声明

之后想要切换到 magit 的 with-editor 实现,需要一点时间

1 个赞

这跟提不提 PR 没关系,Github 很重要的一点其实是「社交」。。。

1 个赞

要么自己独立开发,要么就直接声明 fork。

搞寄生是干嘛呢?

我觉得你说的有道理,我之前取消fork关系的确是欠考虑了

我一直以为那个fork关系就是提PR用的

现在切换至 with-editor 了,不会再有编码问题了

很荣幸受到了 jj-vcs 官方账号的推荐

3 个赞