vernesong / OpenClash

A Clash Client For OpenWrt
MIT License
16.81k stars 3.1k forks source link

git pull时间过长了, 有优化的空间吗? #2209

Closed XinSSS closed 2 years ago

XinSSS commented 2 years ago

Snipaste_2022-04-02_16-36-11

已经挂了梯子了, 但还是失败了, 又开始了...不知道为什么项目变得这么大了, 有优化空间吗?

fanck0605 commented 2 years ago

使用 git clone --depth 1

XinSSS commented 2 years ago

@fanck0605 我之前是加入到feeds文件里用的src-git , 这样每次不用单独拉取更新 但是今天更新了两个小时还没好, 是要考虑换一换拉取方式了

fanck0605 commented 2 years ago

那这不是应该给 openwrt 提 feature 吗。这个是 ./scripts/feeds 脚本做的事情啊。

XinSSS commented 2 years ago

Snipaste_2022-04-02_17-51-35

fanck0605 commented 2 years ago

我试了一下用 git clone --depth 1 (shallow clone) 只有 380 个 objects,你这个 10000+ 个 objects 显然是 full clone, 你把 feeds 的 前缀从 src-git-full 改成 src-git 应该就好了。

image

XinSSS commented 2 years ago

@fanck0605 是src-git 我想原因大概是拉取的log改动比较多导致的, 不应该直接pull的, 删了直接拉会比较快

fanck0605 commented 2 years ago

有个不太优雅的解决方法,你可以试试 git fetch --depth 1 && git reset --hard FETCH_HEAD 这样的话整个 repo 依然是 shallow 的。不会把历史都 pull 下来。

XinSSS commented 2 years ago

@fanck0605 感觉提供帮助, 我下午出去办事前pull的, 回来后差不多总共两个多小时拉了两三个g搞定了... 先收藏了, 下次再看到log比较多的话就试试这么用

sjtuross commented 2 years ago

对于仅仅编译来说shallow clone是可以,但若要搭建开发环境(比如:查看历史,提交PR等等),这个repo实在是太大了。估计是因为git历史包含了所有ipk以及clash的二进制文件。现在完整clone是6G,.git目录占5.9G,而且每次fetch貌似都要下载大量的数据。除非重写所有git历史,去除二进制文件,貌似没什么好办法。

类似的问题之前提过:#1295

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days

javanli commented 2 years ago

这里如果只是编译的话,建议用SVN去下载指定目录(github默认支持svn)

svn co https://github.com/vernesong/OpenClash/trunk/luci-app-openclash package/luci-app-openclash

具体原因的话,大概是openclash这个仓库中上传过很多大文件,导致仓库过大,印象中有好多个G?这种git使用方式是不太好的,大文件最好用git-lfs单独管理。