从 Emacs 新建 GitHub 项目?

用 GitHub 的 Web 界面并不麻烦,还是好奇能不能直接从 Emacs 创建一个 GitHub 项目,顺便把本地仓库的 git remote 也设置好?类似于 hub-create(1) - Create a new repository on GitHub and add a git remote for it.

创建仓库的 API:Repositories - GitHub Docs

magithub就可以在emacs fork别人仓库,create repo应该不是难事

刚刚试了试,使用 ghub.el 非常容易,创建一个新项目:

(ghub-post "/user/repos" '((name . "hello-world")))

写成一个命令方便使用:

(defun chunyang-github-create (&optional private)
  "Create a new repository on GitHub and add a git remote for it."
  (interactive "P")
  (let* ((git-root (or (locate-dominating-file default-directory ".git")
                       (user-error "Not a git repository")))
         (basename (file-name-nondirectory (directory-file-name git-root)))
         (response (ghub-post "/user/repos" `((name . ,basename)
                                              (private . ,private)))))
    (call-process-shell-command
     (concat "git remote add origin " (alist-get 'clone_url response)))
    (message "%s" (alist-get 'html_url response))))

如果你想试试,不妨加个 C-u 来创建一个私有项目(免费)。

3 个赞

请问如果想 不限制在特定 /usr/repo/,而是比如在dired中对任意repo进行创建,有什么好办法吗?

/user/repos 是 API,即:https://api.github.com/user/repos,不是文件夹。

UPDATE:新建 GitHub 项目不需要一个现成的 Git 仓库,该主题的原标题可能有误导,所以我把「GitHub 仓库」改成了「GitHub 项目」。

我觉得可以直接给forge提交一个 requirement request,用ghub不是难事。

用dired的形式管理repo,听起来梦幻了点

还没用过 forge,用 GitHub 与他人协作的机会不多,没什么动力尝试这类工具。

没仔细看懂ghub-post这个函数说明,再研究研究

其实我也基本只用一些基本操作。 forge查看 issue,PR 之类的很方便,功能和 magithub 类似,但集成的更好。是magit作者的新作品,所以集成很好,功能也越来越强大,支持 Github,Gitlab,Bitbucket之类的。内部直接调用 ghub库,效率很不错,基本都是异步操作。

1 个赞