这个 commit 增加了浅克隆的支持。现在有一个 :depth
关键字,或者用 straight-vc-git-default-clone-depth
变量也可指定默认 depth。
试了一下,原本我的 straight 文件夹占 330 MiB,深度改为 1 以后减小到了 120 MiB,下载所有包的速度也快了不少。不过感觉没有达到想象中的瘦身效果。 另外就是如果某个包的版本被 lockfile 锁起来了,这个参数就没用了,所以反而会抵消 straight.el 的一部分优势,有点食之无味弃之可惜的感觉。。。
Update: 以上的测试结果不可信,因为制杖的俺没有切到 develop 分支。实际上可以减少到 46.8 MiB。具体请见五楼。
2 个赞
刚看了下我本地的 elpa 目录,总共 260 个包,62MB。如果是用 git-submodule 是多大呢?会不会depth =1
大小就很接近了?
那什么,在下没有太 get 到你的意思 ,在下的配置没有用 git submodule,straight.el
也不支持 git submodule。straight.el
的原理是把包克隆到 straight/repos
目录,然后在 straight/build
目录产生字节码、autoload 文件和软链接,然后把这边的目录加到 load-path
里。你或许会对这些数据感兴趣:
-
straight/repos
:31 个子目录,共 112.8 MiB。占地面积前五名是:
-
evil
,43 MiB
-
emacs-doom-themes
,7.7 MiB
-
swiper
,7.1 MiB
-
all-the-icons.el
,3.6 MiB
-
emacs-which-key
,3.2 MiB
进一步的观察表明这些空间基本都是 packfile 占了。
-
straight/build
:34 个子目录,共 7.4 MiB。各子目录基本都在 KiB 级别,只有 doom-themes
一枝独秀,占了 4.2 MiB。
其实在下的配置还没搞完,这么看的话,估计搞完以后会非常占地了
我的意思就是这么搞太占空间了。我就是想用个 package,结果搞一堆东东给我。是否是用法不对?
你说的好像是对的,我手动克隆了下 evil,深度是 1,并没有那么大。容我排查下,感谢提醒
Update: 破案了。只是因为我的 straight.el
没有切到 develop branch,我还觉得它好像没有 develop branch 来着
那么重新认真地报告一下:straight 目录现在占 46.8 MiB,其中 repos 目录 39.3 MiB,build 目录 7.3 MiB,还是很可观的。不过不能锁版本感觉还是有点可惜。。。
cireu
6
单纯的用,当然没有必要使用submodule,用submodule还是开发方便,上次给telega提交PR,直接github上fork一份,本地添加remote后pull,切换branch开始写。写完功能后push,然后PR,一气呵成。不用麻烦别的
Nasy
7
其实乃这个还不算变化很大。
印象最深的两个, org 和 python-mode(这两个原来分别占着几百MB,现在加起来只有 20MB 不到…
1 个赞
啊,这确实是相当好了。在下用的 org 还是 Emacs 自带的那个所以没啥感觉
话说刚刚仔细读了下作者的想法,他想要的效果是,可以生成任何版本的 tarball 然后拉下来(我没想到怎么弄),然后要开发那个包的时候再 clone 仓库代替它。感觉这个方案很完美
Nasy
10
终端啊…
不过我这里,无论是 Emacs 里面还是终端里面,都能显示图片的(没问题
去年使用过 Straight,还没删掉,我没装 Org Mode:
~/.emacs.d/straight/repos $ du -hs * | sort -rh | head
736M epkgs
156M CMake
149M language-detection.el
135M elpa
43M helm
41M melpa
40M chess
29M magit
29M flycheck
24M w3m
~/.emacs.d/straight/repos $ du -sh
1.8G .
~/.emacs.d/straight/repos $
果然后发才有优势,straight 这些已实现和没实现的功能 el-get 都有,不过 el-get 有一件事做傻逼了:自己管理 recipes,直接用 MELPA 的多省事。
depth = 1
差不多也得 package 的两倍大小了。
首先 .git
就是一份完整的源代码了,它之外又是一份。其次,package 只包含实现功能的 el 文件,源代码包括文档、测试、截图等等各种资源。
1 个赞
Nasy
14
看来,最明显的就是 epkgs 了(depth = 1 后,从736减到28
我之前尝试用straight,结果好像是load优化还是什么代码,换straight怎么也搞不定,就又试了下submodule,几行代码+magit里按几下就搞定了(主要是非来自github的package声明不用动)
magit有我写的submodule功能,连代码都不用写,直接快捷键粘贴url就完事