为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?

Posted

技术标签:

【中文标题】为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?【英文标题】:Why is Git on WSL2 with SouceTree so slow for me?为什么带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢? 【发布时间】:2021-02-17 18:17:51 【问题描述】:

我的环境如下。

Windows10(2004版,build 19041.572) 64 位操作系统 在 WSL2 上,我使用的是 Ubuntu(Ubuntu-20.04) 我将 git 与 SourceTree 一起使用。

我使用 docker-compose 来开发 Web 服务。在 Windows 上运行 docker-compose 访问网页非常慢。我在 WSL2 上的 Ubuntu 的 Home 文件夹中创建了一个 docker 环境。网站数据(Laravel)安装在WSL2上的docker环境中,由git管理。

如何提高 WSL2 上 SourceTree 的速度? Windows 上的 Git 速度更快。

【问题讨论】:

这里也会发生同样的情况。太慢了以至于它不是真正可用的。它还列出了许多未暂存的未更改文件(可能是行尾或权限?)。 我找到了 WSLGIT(github.com/andy-5/wslgit)。但它在 SourceTree 上不起作用。 @zenzenzenfone 您能否说明您在哪里运行 SourceTree 以及如何访问本地存储库?我想您正在 Windows 中运行 SourceTree 并通过 \\wsl$\Ubuntu-20.04\home\... 访问文件。请将这些信息添加到您的问题中。 【参考方案1】:

不幸的是,WSL2 has an issue 的文件系统性能在 /mnt

如果您不需要从 Windows 中编辑它,则可以选择 checkout 将您的 repo 放入容器的 /home,而不是 /mnt/...

在 Windows 上从 Linux 容器运行 Docker 将无济于事。

UPD:同样的问题可能出现在没有安装任何东西的大型项目上,但仍通过 Windows 的 \\wsl$ 路径访问 WSL 内的 repo。问题仍未解决。

【讨论】:

SourceTree 和 IDE(带 Remote - WSL 的 Visual Studio Code 除外)中的性能面临巨大的性能问题,即使项目直接放在 Linux 文件系统中(如 /home 或 @987654328 @)。我想@zenzenzenfone 在 Windows 上使用 SourceTree(通过\\wsl$ 访问文件)而不是在 WSL 内部应该在他/她的问题中澄清什么。 我发现很多与“docker-compose 运行缓慢”或“npm run serve 运行缓慢”类似的问题。在所有类似的情况下,这与 Windows/Linux 文件系统之间的低 FS 性能有关。因此,谈论特定路径或特定软件无关紧要 - 涉及大量文件的大量 IO - 会导致同样的问题。要点 - WSL2 中的问题存在。 路径很重要。当您的项目位于 e. G。在/home/user/project 中,您正在从 Linux 发行版 bash 中启动 docker-compose,它快如闪电。在 Windows CLI(\\wsl$\distribution_name\home\user\project)中调用 docker-compose 确实很慢,即使它是完全相同的 docker-compose 文件。反之亦然 - 从 Linux 调用 /mnt/c/my-project 很慢,而在 Windows 中调用 C:\my-project 又快了。所以结论是,WSL(2) 只有在 Windows 访问时才慢,而 NTFS 只有在 Linux 访问时才慢。

以上是关于为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?的主要内容,如果未能解决你的问题,请参考以下文章

WSL2 上的设备内存分配失败

WSL2 和 Docker 桌面上的 Postgres 卷挂载:PGDATA 文件夹上的权限被拒绝

WSL2:为啥我必须在重启 PC 后关闭 WSL 才能重启 WSL

带有 WSL2 的 VSCode - 由于对 ping 没有响应而延迟启动

wsl2上的docker非常慢

sourcetree在mac上的使用