Emacs中最成熟的Magit/Github扩展程序,用于拉取请求。

18
我特别关注拉取请求、编辑问题并将它们与提交相关联,以及其他通常需要在命令行上使用hub的事情。然而,我开始使用magit,并喜欢它的按键绑定和常规界面 - 我也想在这一部分中留在emacs中,而不是需要为拉取请求、问题等保持额外的shell窗口。
我发现能够为magit添加最多Github功能的包是: 有没有可能参与这些项目的人员推荐它们的比较结果,并提供将拉取请求整合到magit环境中的最佳方法?

您可以创建自定义函数,使用call-processset-process-sentinel并在后台进行shell-out,以便您永远不会感觉离开当前缓冲区--您提到的库无论如何都是在进行shell-out。如果您想要的功能不存在,则只需像以下链接中的不相关函数一样创建它(该函数将推送到多个存储库):https://dev59.com/w37aa4cB1Zd3GeqPwOMG#23178396 - lawlist
3
编辑总是关闭要求推荐的问题,但我想再次引用我在这里得到的答案作为完美例子,说明如果做得好,寻求软件推荐与 SO 的目标完全一致。该软件包的开发者提供了优秀的选项比较和它们的历史记录——那正是我所需要的,也是非常有用的! - Mittenchops
2个回答

27

最终我会在 Magit(我是维护者)中实现这样的功能,但我首先必须推出一个发布版。

旧的过时信息:不幸的是,目前也没有第三方扩展程序可以填补这个角色。magithub已经很长时间瘫痪了。magit-gh-pulls(由我的前任Magit维护者Yann编写)也没有与Magit的更改保持同步。我试图在一段时间内修复它,但当清楚这样做将导致完全重写时,我放弃了。gh.el也是由Yann编写的,并且被magit-gh-pulls使用。我过去曾对其做出贡献,但最终停止使用它,因为(a)它使用url.el,这被证明非常不可靠(b)它过于复杂。

所以我很遗憾目前没有一个包能够满足你想要的功能。如果你想自己编写,请使用 request.el,然后只实现您实际需要的Github api部分,以避免过度设计。

编辑:截至2015年10月magit-gh-pulls再次被维护,但不再是官方扩展程序。个人认为,它应该或多或少地使用。我目前使用 magit-rockstar 库中的magit-branch-pull-request,尽管我维护该库,但我不认为它是官方扩展程序 - 它是按原样提供的。该函数非常基本,您提供一个问题编号,它会为您创建一个分支,仅此而已。

2016年9月更新: 我已经编写了 ghub.elglab.el 作为 gh.el 的替代品。它们主要是为了我个人使用而提供了非常少量的功能,基本上只提供了函数,例如 ghub-get (resource &optional params data noerror),然后您必须查看各自的 api 文档来确定您需要使用哪些 resourceparamsdata。此外,错误处理不太好,目前使用的是 url.el。我打算在 Emacs 支持 ffi 后的某个时间使用 libcurl 来改进这两者。

2020年1月更新: 一年多以前,我发布了 forge

Forge 允许您从 Magit 和其他 Emacs 中轻松使用 Git Forge,如 Github 和 Gitlab。


1
一年后,您对此有什么进一步的想法吗?我刚看到Atom有一个插件,可以在编辑器中内联查看GitHub拉取请求评论,这在Magit或某种Magit + GitHub集成中会非常美观(参考Atom插件https://github.com/philschatz/atom-pull-requests),不确定它们最适合放在哪里。 - wonderfulthunk
我希望我们对magit kickstarter的贡献能够推动它的发展。 - Micah Elliott
肯定会的! - tarsius

2
您可以通过将magit-git-executable设置为"hub"来获得简单的“手动”Github支持。然后,您可以通过magit-git-command(在Magit缓冲区中绑定到:)使用所有hub命令和功能。这至少允许您通过Emacs/Magit与Github进行交互。
需要注意的是,截至本文撰写时,这不起作用,因为发布版本的hub不识别--literal-pathspecs选项,而Magit使用该选项(请参见此处)。因此,在下一个版本发布之前,您需要从最新源代码安装hub:https://github.com/github/hub#source

我已经在本地使其工作(将 magit-git-executable 替换为 "hub"),并且它与 hub 版本 2.2.3 正常运行。但不幸的是,它会导致每个 magit 操作至少减慢一个数量级,甚至更多。 - wonderfulthunk
1
magit-git-executable 设置为 "hub" 会使事情变得非常缓慢。我发现在配置 magit 时只有在通过 magit-git-command 交互式运行命令时才使用 hub 替换 git 是一个不错的折中方案:https://github.com/DarwinAwardWinner/dotemacs/blob/master/config.org#use-hub-instead-of-git-sometimes - Ryan C. Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接