Eventually I will implement such things in Magit (I am the maintainer), but I first have to get a release out.
Old outdated information: Unfortunately there currently also isn't a third-party extensions that could fill this role. magithub
has been broken for a long time now. magit-gh-pulls
(by Yann, my predecessor as Magit maintainer) also wasn't kept in sync with the changes in Magit. I tried to fix it up some time ago, but gave up when it became clear that doing so would result in a complete rewrite . gh.el
is also written by Yann and is used by magit-gh-pulls
. I have contributed to it in the past but eventually stopped using it because (a) it uses url.el
and that turned out to be very unreliable (b) it's over complex.
So I am afraid there currently isn't a package that does what you want. If you want to write it yourself, I recommend you use request.el
and then only implement those parts of the Github api that you actually need, to avoid over-engineering it.
Edit: As of October 2015 magit-gh-pulls
is maintained again, but no longer an official extension. Personally I don't use it, as I think it should either to more or less. I currently use "less" in the form of magit-branch-pull-request
from the magit-rockstar
library. Even though I maintain that library, I do not consider it an official extension - it's provided as-is. That function is very basic, you give it an issue number and it creates a branch for you, that's it.
Edit in September 2016: I have written ghub.el
and glab.el
as replacements for gh.el
. They are mostly intended for my own personal use and provide very little, basically they give you functions such as ghub-get (resource &optional params data noerror)
, you then have to look at the respective api documentation to figure out what resource
, params
, and data
you have to use. Also the error handling isn't great and this currently uses url.el
. I intend to improve both eventually by using libcurl
some time after an Emacs with ffi support has been released.
Edit in January 2020: More than a year ago I have released forge
.
Forge allows you to work with Git forges—such as Github and Gitlab—from the comfort of Magit and the rest of Emacs.
call-process
andset-process-sentinel
and shell-out behind the scenes so that you never feel like you are leaving the current buffer -- the libraries you mentioned are shelling-out anyway. If the function you want doesn't exist, then just create it like the unrelated function in the following link (which pushes to multiple repositories): https://mcmap.net/q/740624/-emacs-how-to-push-a-git-repository-to-multiple-remotes – Ardell