求教一个详细的git submodule管理插件的步骤说明

直接写一个makefile或者justfile会不会比submodule好些,感觉submodule把git搞乱了

没有体会,Windows下使用makefile相对不是很方便

更新:再次使用git submodule来管理插件,新问题:在新的设备使用配置,使用git submodule update的时候会把全部绑定的插件仓库克隆下来,不过实际上我只需要用到其中一部分插件就可以,有什么好方法解决这个问题?

你切到submodule里 git pull 就好了

更新:目前对部分并不需要频繁更新的插件使用git submodule来管理,剩下的直接使用package.el,整体运转正常,完全使用git submodule虽然让整体配置可控程度很高,但也遇见了一些诸如 Lisp nesting exceeds `max-lisp-eval-depth的问题,我后期需要单独开一个帖子来汇总交流这些问题如何解决。

1 个赞

更新:

此话题的交流实际上基本完成了它的既定目标,最近重构了自己的配置之后,很多以前需要的插件被我弃掉了,回归到一个清爽的使用体验,我本人当然很感谢 git submodule 这种插件管理的方式,通过这种方式我有了一个特别的机会系统性学习 git 的用法,当然,最终的实践我没有全部使用submodule,还是大部分直接用的packages.el

或许是时候整理一篇文章输出了,定位初步是面向初学者的文章,感谢各位

3 个赞

我用 git submodule 管理大佬 @manateelazycat 的插件,包括 lsp-bridge, popweb, markmacro, blinksearch 等。拉取最新的,极少出现兼容性问题。

有个包,aweshell, 需要 campany,就 fork as gpe-aweshell,去掉 campany 相关的。统一用 lsp-bridge 补全。

git submodule 使用过程,体验挺好的。不过我这里遇到一个初始安转的问题。就是首次拉取:

git submodule update --init --recursive

以及:

git submodule foreach git reset --hard

之后:

git submodule foreach git checkout master

这里出现了问题:有的 branch 不是 master,是 main.

请教下大家,这个命令是否可以优化,使其捡出的分支是 master 或者 main?

参考我在 lazycat-emacs 的脚本:

  1. Fetch all submodules in lazycat-emacs:
git submodule update --init --recursive

git submodule foreach git reset --hard

git submodule foreach git checkout $(git remote show origin | awk '/HEAD 分支|HEAD branch/ {split($0, a, ":"); print a[2]}')
1 个赞

谢谢大佬,这个问题解决了!

1 个赞

有些插件很稳定,就没有使用 git submodule 管理,使用 package.el。尝鲜的包就使用 git submodule 管理。

1 个赞

我在这个帖子发出来的时候,就指出了一些包使用package.el只能安装到相对旧一些的版本的插件