用 submodule 管理插件时遇到的一个问题

平时我在用 submodule 管理插件时更新或是维护自己的一份 fork 都很方便,但是在维护自己的插件时遇到了一个问题:

我把自己不同的插件作为不同的 repo 发布到 github 上,如果直接在配置的插件文件夹里git init的话,magit会提示“确定要在git仓库里再新建一个git仓库吗?”

这样就发挥不了 submodule 的作用,所以我现在的做法是把自己的插件放到 .emacs.d 之外,推送到 GitHub 上后再用 submodule 拉取到自己的配置文件夹下。

不知道有什么可以简化这一步骤的做法吗?谢谢🤔

我也是用的和你一样的流程,我在外面新建一个仓库开发并推送到github,然后把仓库做一个文件夹链接到配置文件夹下面,这样方便测试。等功能完善一些,确定要用了再把远程仓库关联到配置。

后续就可以在子模块直接修改和推送了。

3 个赞

这两种本质不是一样的吗?

(偏个题,参观了一下你的配置,发现你的英文名和我一大学同学一模一样😂)

这貌似是目前的最优解哦,不知道有没有直接把 git 仓库转换为 submodule 的方法

不一样的,直接 git 仓库嵌套的话,在外层仓库看不到内层仓库的变化

哦哦,其实我也是用的第二种 :joy:

:sweat_smile: 这个名字很容易重名,用了很多年。 用submodule 管理Emacs配置真的很方便,怎么折腾都行,错了直接回滚。

貌似没有啥好办法,我自己用 submodule 也是这样操作 :joy:

所以你们不知道 git 不需要上传到 github,可以直接 clone 本地的 repo 么

1 个赞

我提的问题准确来说是要求自己的插件文件夹能变成一个 submodule,置于.emacs.d的版本控制之下。

直接clone <path>或者clone <local url>的话实际上还是在外层仓库里嵌套了一个子仓库吧?

这样也是一种方案,都差不多。我个人更喜欢用软链接,这样移除的时候更方便。

你要是使用submodule管理并且频繁更新自己的插件,可以用 borg。在magit的Modules里面,你可以看到自己的submodule,如果你更新了你自己插件代码的话,直接进入那个插件,P u push就完事。唯一麻烦的就是你得把自己原来的配置转过去。

不是安装插件的问题,而是管理自己写的插件的问题 :expressionless: