magithub or forge?

spacemacs

#1

现在 spacemacs 已经把 forge 纳入进来了,也就是说现在使用 github layer 有两种选择,magithub 或者 forge。你会使用哪一种?感觉两种方式会并存一段时间。

BTW,其实发这贴是想提问 :joy: ,因为我两个都用不了,不知道是什么问题。hub 我已经正常安装了,但是输入账号密码就会报错。难道是因为我用ssh方式,并且同时使用两个 github 账号的原因?


#2

欢迎大家建言,怎样手动设置 forge。欢迎设置成功的同学分享一下经验。


#3

This is really frustrating…

有可能是 github 被墙成的。

折腾了1个小时,各种翻墙技能都用了

没有成功。。。


#4

用不着装这个,可能很久之前的 Magithub 需要;好几个月之前我尝试 Magithub 的时候就不用装 hub

下午我装了 forge,用不着任何设置,第一次用会自动提示创建 Token(输入密码)。(当然了这里可能要求你能直连上 GitHub)

我给 Git 设置了 Socks 代理 magithub 和 forge 主要是 HTTP 请求,跟 Git 代理没关系。

[http]
        proxy = socks5://localhost:1080

#5

再次膜拜大佬,想问一下大佬如果有两个 github 账号怎么处理?

那是不是意味着remote url 必须用 http 的?


#6

不知道,没考虑过这个需求

  • Git 的操作(如 clone、push)遵循 Git 的代理,不论 remote url 是 SSH 还是 HTTPS。
  • GitHub 的操作(如获得 issue 列表、创建 PR)是用 url.el 实现的

这个两种操作不相干,代理的方法也不同。


#7

两个账号不太好处理啊,暂时把 magithub 和 forge 都禁用了,影响到工作了。。。


#8

github 被墙了?我怎么没有碰到?

Forge 设置可以参考


#9

我在国外倒是没有这个问题。大概半年前试过一段时间的magithub,非常卡,尤其是issue或者PR多的repo。forge好很多,好像大多数操作都是async的,并不会freeze emacs,而且也是magit作者自己写的,感觉比magithub的兼容性和稳定性好很多。

而且好像forge并不需要装hub,反正我找了一圈manual没找到。

BTW: 不知道为什么,感觉群里很多人都转了doom emacs,spacemacs user都快被包围了。同学考虑转一发doom?


#10

可能跟运营商有关,我这里不翻墙无法 git

暂时不考虑转 doom,因为看不到显著的效率提升。而且 spacemacs 的文档和支持好像都更强大。最重要的是,我本人不是颜控 :joy:


#11

magithub 依赖于 ghub+,ghub+依赖于 ghub。 forge 依赖于 ghub。


#12

hub 和 ghub 是两回事。hub 是命令行工具,ghub是 elisp 包。


#13

嗯,我的意思是这两个包其实都依赖于 magit 作者写的 ghub 包,不依赖于第三方工具。里面调用的是原生 REST APIs,所以效率还不错。


#14

嗯,我的意思是你俩都说的对 :joy:


#15

:joy::joy::joy::joy::joy:


#16

emm,没事儿,你是颜控也没关系,因为spacemacs早就内置了doom的主题了lul


#17

是啊,所以先不折腾了。我还是懒啊 :joy:


#18

话说这俩谁的配置难度高?


#19

都很低,magithub用上了会给magit加action,就这样。forge还没试。

另外magithub我也碰到错误了,auth的时候ghub某个函数报错,暂时没管……


#20

我以前自己写配置的时候深入研究过doom-emacs的配置结构,其中有几点个人感觉是不太好的,最终我也没有使用doom。

  1. hlissner除了给use-package加关键字(:after-call :defer-incrementally)等,自己有封装了一堆after!之类的宏,在我看起来比较脱裤子放屁多此一举。

  2. hlissner自己封装的那些宏用起来是比较爽,但是他的内部实现写得惨不忍睹,包含了大量原始的car cdr pop等的列表操作,导致可读性相当的差。(其实更好的方法应当是解构赋值)

  3. 每次更新配置都要make,有时忘记make体验比较差。反而spacemacs的pdumper配置会在你正常启动Emacs后用async在后台自动重新dump。