iLe*_*ing 3 git emacs elisp magit pull-request
正如任何普通开发人员所应该的那样,我喜欢手动,繁琐和重复的任务.最近我意识到 - 在众多git repos上创建拉取请求占用了我太多的时间.大多数时候你必须一遍又一遍地遵循几乎所有的步骤:
在某些时候,我开始想知道如果不使用Web客户端我是否可以做到这一切.而且似乎有可能.Stash和Bitbucket有一个api,Github也有一个(虽然它不同 - 第一个使用ssh而后者是http)
现在,这件事可能会简化一些事情,但我觉得它可能会更好.
我使用Emacs(Spacemacs发行版,具体而言).现在我想知道是否有人已经构建了任何与之集成的东西magit,或者我自己可以做到这一点?我的意思是它有多难?脚本应该允许您提交然后推送分支,然后使用给定的默认值创建基于该分支的"开发"的拉取请求.有人做过这样的事吗?
你们可以指点一些elisp利用magit相似功能的插件.也许我能够自己写点东西.
Magit 现在附带forge,用于处理问题/PR/等。在任何 git 伪造中。它开箱即用地支持 github 、 gitlab ,部分支持 bitbucket、gitea、gitweb、cgit、gogs 等。
要创建新的拉取请求(或问题)(来自文档):
Run Code Online (Sandbox Code Playgroud)' p (forge-create-pullreq)
C-c C-n[关于“拉取请求”部分] (forge-create-pullreq)此命令为当前存储库创建一个新的拉取请求。
Run Code Online (Sandbox Code Playgroud)' i (forge-create-issue)
C-c C-n[关于“问题”部分] (forge-create-pullreq)此命令为当前存储库创建一个新问题。
有一个 Magit 扩展用于处理 github Pull 请求。您可以在此处浏览该项目。
您还应该阅读Magit 项目维护者撰写的这篇文章。
所以我担心目前没有一个包可以满足您的需求。如果您想自己编写,我建议您使用 request.el,然后仅实现您实际需要的 Github api 部分,以避免过度设计。
我在github上发现了关于从emacs创建PR的原始帖子. http://endlessparentheses.com/easily-create-github-prs-from-magit.html
这对bitbucket(藏匿)不起作用.但是,对我来说,足够的信息能够合并一个适合我的解决方案.
https://github.com/flamingbear/emacs-config/blob/master/site-lisp/lisp/mhs-magit.el
(defun endless/visit-pull-request-url ()
"Visit the current branch's PR on Github."
(interactive)
(let ((repo (magit-get "remote" (magit-get-remote) "url")))
(if (string-match "github\\.com" repo)
(visit-gh-pull-request repo)
(visit-bb-pull-request repo))))
(defun visit-gh-pull-request (repo)
"Visit the current branch's PR on Github."
(interactive)
(browse-url
(format "https://github.com/%s/pull/new/%s"
(replace-regexp-in-string
"\\`.+github\\.com:\\(.+\\)\\.git\\'" "\\1"
repo)
(cdr (magit-get-remote-branch)))))
;; Bitbucket pull requests are kinda funky, it seems to try to just do the
;; right thing, so there's no branches to include.
;; https://bitbucket.org/<username>/<project>/pull-request/new
(defun visit-bb-pull-request (repo)
(browse-url
(format "https://bitbucket.org/%s/pull-request/new"
(replace-regexp-in-string
"\\`.+bitbucket\\.org:\\(.+\\)\\.git\\'" "\\1"
repo))))
;; visit PR for github or bitbucket repositories with "v"
(eval-after-load 'magit
'(define-key magit-mode-map "v"
#'endless/visit-pull-request-url))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |