git lfs目前下载的步骤非常慢,需要寻找加快速度的方法 #18

Closed
opened 2024-12-05 21:44:25 +08:00 by li-xiaochen · 5 comments
Owner
No description provided.
Owner

我试验 git -c lfs.concurrenttransfers=100 lfs clone https://git.zhaozuohong.vip/mower-ng/mower-ng.gitgit clone 要快很多,但没有找到 fetch 的方法

我试验 `git -c lfs.concurrenttransfers=100 lfs clone https://git.zhaozuohong.vip/mower-ng/mower-ng.git` 比 `git clone` 要快很多,但没有找到 fetch 的方法
Author
Owner

我也测试了一下,这个下载命令确实快很多,速度大概是800k到1.5m不等,但ifs文件有一百多m最少也要一两分钟才能完成命令。我尝试使用 --depth 1 参数但效果没有多么明显,因为不能减少ifs文件的下载时间。

我在启动器中尝试初始化时发现在clone完成后,下载ifs文件时日志并不会滚动输出,而想要下载一百多m的ifs文件下载最少也要一分钟,从而导致用户误以为启动器卡死或者下载慢。

我认为应该把下载ifs文件时的进度情况打印到窗口中,最好能把下载速度和下载百分比也打印出来,这样用户就不会有疑惑了。

也不排除确实是有用户的网络环境下载速度慢,我尝试了很多次不同命令的下载,大概都在两分钟左右可以下载成功。

没有理解

没有找到fetch的方法

的含义。

我也测试了一下,这个下载命令确实快很多,速度大概是800k到1.5m不等,但ifs文件有一百多m最少也要一两分钟才能完成命令。我尝试使用 `--depth 1` 参数但效果没有多么明显,因为不能减少ifs文件的下载时间。 我在启动器中尝试初始化时发现在clone完成后,下载ifs文件时日志并不会滚动输出,而想要下载一百多m的ifs文件下载最少也要一分钟,从而导致用户误以为启动器卡死或者下载慢。 我认为应该把下载ifs文件时的进度情况打印到窗口中,最好能把下载速度和下载百分比也打印出来,这样用户就不会有疑惑了。 也不排除确实是有用户的网络环境下载速度慢,我尝试了很多次不同命令的下载,大概都在两分钟左右可以下载成功。 没有理解 > 没有找到fetch的方法 的含义。
Owner

看来-c lfs.concurrenttransfers=100git clonegit lfs clone都有用。根据git lfs clone输出的提示:

WARNING: `git lfs clone` is deprecated and will not be updated
          with new flags from `git clone`

应该用git -c lfs.concurrenttransfers=100 clone命令。

command time
git clone 2m 23s
git lfs clone 2m 26s
git -c lfs.concurrenttransfers=100 clone 1m 26s
git -c lfs.concurrenttransfers=100 lfs clone 1m 31s
看来`-c lfs.concurrenttransfers=100`对`git clone`和`git lfs clone`都有用。根据`git lfs clone`输出的提示: ```plaintext WARNING: `git lfs clone` is deprecated and will not be updated with new flags from `git clone` ``` 应该用`git -c lfs.concurrenttransfers=100 clone`命令。 | command | time | |:----------------------------------------------:|:------:| | `git clone` | 2m 23s | | `git lfs clone` | 2m 26s | | `git -c lfs.concurrenttransfers=100 clone` | 1m 26s | | `git -c lfs.concurrenttransfers=100 lfs clone` | 1m 31s |
Owner

启动器更新代码有三步,以main分支为例:

  1. git fetch origin main
  2. git switch -f main
  3. git reset --hard origin/main

下载Git LFS文件发生在第二步和第三步上

启动器更新代码有三步,以`main`分支为例: 1. `git fetch origin main` 2. `git switch -f main` 3. `git reset --hard origin/main` 下载Git LFS文件发生在第二步和第三步上
Owner

-c lfs.concurrenttransfers=100参数对switchreset命令都有效。测试方法:

  1. 新建一个文件夹,git init之后git remote add origin https://git.zhaozuohong.vip/mower-ng/mower-ng.git
  2. 此时可以直接测试git switch命令;
  3. git checkout -b main切换到main分支,随便建一个文件然后提交,就可以测试git reset命令。

git lfs env的输出中可以看到默认设置ConcurrentTransfers=8

command time
git switch -f main 2m 47s
git -c lfs.concurrenttransfers=100 switch -f main 1m 19s
git reset --hard origin/main 3m 7s
git -c lfs.concurrenttransfers=200 reset --hard origin/main 1m 35s
`-c lfs.concurrenttransfers=100`参数对`switch`和`reset`命令都有效。测试方法: 1. 新建一个文件夹,`git init`之后`git remote add origin https://git.zhaozuohong.vip/mower-ng/mower-ng.git` 2. 此时可以直接测试`git switch`命令; 3. 用`git checkout -b main`切换到`main`分支,随便建一个文件然后提交,就可以测试`git reset`命令。 从`git lfs env`的输出中可以看到默认设置`ConcurrentTransfers=8`。 | command | time | |:-------------------------------------------------------------:|:------:| | `git switch -f main` | 2m 47s | | `git -c lfs.concurrenttransfers=100 switch -f main` | 1m 19s | | `git reset --hard origin/main` | 3m 7s | | `git -c lfs.concurrenttransfers=200 reset --hard origin/main` | 1m 35s |
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: mower-ng/launcher#18
No description provided.