写了一个函数专门用于删除 submodule


#1

Git submodule 用于追踪开源社区上游项目非常方便, 在Emacs中, 只用执行 magit-submodule-add 命令就可以非常方便的添加 submodule.

但是git却没有提供一键删除 submodule 的功能, 为了删除一个 submodule , 一般需要做下面的几步:

  1. 删除项目源码子目录
  2. 删除 .gitmodules 文件中 submodule 的信息
  3. 删除 .git/config 文件中 submodule 的信息
  4. 删除 .git/modules/ 目录下 sumodule 的子目录
  5. 应用修改

今天写了一个 magit-submodule-remove 函数自动做上面的工作: https://www.emacswiki.org/emacs/magit-extension.el

现在要尝试优秀的 Emacs 插件, 只用 magit-submodule-add 添加插件, 喜欢就保留, 不喜欢执行 magit-submodule-remove 删除之.

Enjoy, emacser!


#2

很实用,希望能融合进magit,以便少装一个包。


#3

https://github.com/magit/magit/pull/3582 我给 magit 发了一个 PR , 看看作者收不收吧, 收了以后就可以不用安装我的 magit-extension.el


#4

这两天在给 magit 发送补丁: https://github.com/magit/magit/pull/3583

推动了 magit 的作者的两个功能: https://github.com/magit/magit/pull/3585

  1. magit-submodule-remove 会很快合并进 magit 的代码分支
  2. magit-submodule-add 默认使用异步操作, 意味着添加超大规模的 submodule 不会卡主 emacs.

#5

顺便给大家推销一个牛逼的插件: https://github.com/vermiculus/magithub


#6

随着 https://github.com/magit/magit/pull/3585 这个补丁的合并.

magit-submodule-remove 已经合并进 magit 主分支了, 大家更新magit以后就可以直接删除 submodule 了. magit 作者的这一版默认不删除 .git/modules 目录下的残留文件, 担心有用户的个人修改, 我个人经常只用 submodule 跟踪插件, 但不修改, 所以我在此基础上写了一个强制删除的版本:

(defun magit-submodule-remove+ ()
  (interactive)
  (magit-submodule-remove (list (magit-read-module-path "Remove module")) "--force" nil))

在推动 magit-submodule-remove 的时候, 同时也推动了 magit-submodule-add 的异步处理, 现在添加 submodule 不会卡主 emacs 了.

今天为止, 我的 magit-submodule-remove 代码已经完成了小小的历史使命, 正式退出舞台, 大家更新 magit 吧, 哈哈哈.


#7

已经用上了,好用。